Я думаю, что есть два случая для рассмотрения:
Случай 1 : пересечение между линиями происходит за пределами конечных точек любого сегмента.
В этом случае метод средней точки, предложенный @Michael J. Barber, сработает наверняка. Итак, сформируйте вектор между серединами сегментов, вычислите скалярное произведение ваших нормальных векторов с этим вектором средней точки и проверьте знак.
Если вы вычисляете нормаль для lineA
, скалярное произведение нормали на вектор midB -> midA
должно составлять +ve
.
Случай 2 : Пересечение между линиями происходит внутри конечных точек одного сегмента.
В этом случае сформируйте вектор между одной из конечных точек сегмента, который не охватывает точку пересечения и саму точку пересечения.
Точечное произведение нормали для сегмента, который делает , заключает точку пересечения, и этот новый вектор должен быть +ve
.
Вы можете найти внешнюю нормаль для другого сегмента, потребовав, чтобы скалярное произведение между двумя нормалями было -ve
(что было бы неоднозначно только в случае перпендикулярных сегментов).
Я предположил, что сегменты не коллинеарны и не пересекаются.
Надеюсь, это поможет.