Как найти пересечение двух отрезков линии?
предположим, что у нас есть два конечных отрезка, каждый из которых определяется двумя точками (в двух пространствах). Я хотел бы найти способ, чтобы получить точку пересечения этих двух линий. В конце концов, я хотел бы расширить это для работы над наборами связанных сегментов линии.
Я нашел хорошее решение здесь:в 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)
хорошая вещь в этом заключается в том, что он будет обрабатывать одноточечное пересечение и пересечение сегментов плавно, и та же техника может быть применена к гораздо более сложным объектам.