Как найти пересечение двух отрезков линии?

предположим, что у нас есть два конечных отрезка, каждый из которых определяется двумя точками (в двух пространствах). Я хотел бы найти способ, чтобы получить точку пересечения этих двух линий. В конце концов, я хотел бы расширить это для работы над наборами связанных сегментов линии.

Я нашел хорошее решение здесь:в Python - библиотек matplotlib: найти пересечение lineplots. Однако это зависит от scipy, который, я считаю, требует BLAS, которого по отдельным причинам я хотел бы избежать.

matplotlib имеет модуль Path, который имеет функцию intersects_path () (http://matplotlib.org/api/path_api.html#matplotlib.path.Path.intersects_path), который возвращает true или false для существования пересечения, но не конкретного местоположения, которое мне требуется.

кто-нибудь знает о чистом подходе к этому?

любое решение, которое я придумываю, является длительным, и если решение уже существует, я бы предпочел не заново изобрести колесо.

спасибо!

1 ответов


ради завершения, я думал, что после окончательное решение, которое я использовал.

Использование Shapely (https://pypi.python.org/pypi/Shapely) код может выглядеть так же просто, как это:

from shapely.geometry import LineString

line1 = LineString([(0,0), (1,0), (1,1)])
line2 = LineString([(0,1), (1,1)])

print(line1.intersection(line2))

возвращает:

POINT (1 1)

хорошая вещь в этом заключается в том, что он будет обрабатывать одноточечное пересечение и пересечение сегментов плавно, и та же техника может быть применена к гораздо более сложным объектам.