Учитывая 4 точки, описывающие 2 отрезка, как рассчитать, если линия A направлена к линии B или от нее?
Две линии имеют фиксированную длину и могут быть измерены как расстояние от x1 / y1 до x2 / y2.

Учитывая 4 точки, описывающие 2 отрезка, как рассчитать, если линия A направлена к линии B или от нее?
Две линии имеют фиксированную длину и могут быть измерены как расстояние от x1 / y1 до x2 / y2.

Ответы:
Позвольте Aи Bбыть две точки на черной линии. ПозволятьC и Dбыть вашим синим сегментом. Знак zкоординаты перекрестного произведения AB^ACговорит о том, Cнаходится ли он «слева» или «справа» от черной линии. Аналогичным образом, перекрестное произведение AB^CDговорит вам, направлено ли CD«влево» или «вправо» от черной линии.
Мы действительно не хотим знать, левое или правое; все, что мы хотим, это убедиться, что они имеют одинаковое направление или противоположное направление, поэтому мы умножаем эти два значения.
Поэтому должен работать следующий псевдокод:
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 */
Боюсь, мне нужно время, чтобы написать правильное решение для кривой Безье. Следующая ситуация в сторону или в сторону?

Предполагая, что начальной точкой является зеленый круг, а конечной точкой является красная стрелка
Вычислите расстояние между начальной точкой как DS и черным сегментом и сделайте то же самое для конечной точки (красная стрелка) как DE. Если DS> DE, то сегмент направлен в сторону. если DE> DS, это указывает далеко. Если оба равны, два параллели.
Вы можете найти, как вычислить расстояние от точки до отрезка здесь , и до квадратичной кривой Безье здесь . Однако, в зависимости от формы кривой Безье, она может вернуть странные результаты (кривая может пересекать себя)