Biorąc pod uwagę 4 punkty opisujące 2 segmenty linii, jak obliczyć, czy linia A jest w kierunku do linii B czy od niej?
Dwie linie mają stałą długość i można je zmierzyć jako odległość od x1 / y1 do x2 / y2.

Biorąc pod uwagę 4 punkty opisujące 2 segmenty linii, jak obliczyć, czy linia A jest w kierunku do linii B czy od niej?
Dwie linie mają stałą długość i można je zmierzyć jako odległość od x1 / y1 do x2 / y2.

Odpowiedzi:
Niech Ai Bdwa punkty na czarnej linii. Pozwól Ci Dbądź twoim niebieskim segmentem. Znak zwspółrzędnej krzyżowego iloczynu AB^ACinformuje, czy C„lewa”, czy „prawa” czarnej linii. Podobnie, krzyżowy produkt AB^CDinformuje, czy CDsteruje „w lewo” czy „w prawo” czarnej linii.
Naprawdę nie chcemy wiedzieć, czy jest w lewo, czy w prawo; wszystko, czego chcemy, to upewnić się, że są w tym samym kierunku lub w przeciwnym kierunku, dlatego mnożymy te dwie wartości.
Dlatego powinien działać następujący pseudokod:
z1 = (xB-xA)*(yC-yA) - (yB-yA)*(xC-xA);
z2 = (xB-xA)*(yD-yC) - (yB-yA)*(xD-xC);
z3 = z1 * z2;
if (z3 < 0)
; /* Pointing towards (BUT maybe even crossing) */
else if (z3 > 0 || z2 != 0)
; /* Pointing away */
else
; /* Parallel */
Obawiam się, że potrzebuję trochę czasu, aby napisać właściwe rozwiązanie dla krzywej Beziera. Czy następująca sytuacja jest w kierunku, czy nie?

Zakładając, że punktem początkowym jest zielone kółko, a punktem końcowym jest czerwona strzałka
Oblicz odległość między punktem początkowym jako DS i czarnym segmentem i zrób to samo dla punktu końcowego (czerwona strzałka) jak DE. Jeśli DS> DE, segment wskazuje w kierunku. jeśli DE> DS, to wskazuje. Jeśli oba są równe, oba są równoległe.
Można znaleźć w jaki sposób obliczyć odległość od punktu do segmentu tutaj oraz kwadratowej Krzywa Beziera tutaj . Jednak w zależności od kształtu krzywej Beziera może ona zwracać dziwne wyniki (krzywa może się przecinać)