Я использую boost::geometry::intersection
с boost::geometry::model::linestring
и boost::geometry::model::polygon
в приложении, где его часто вызывают, и профилирование показывает, что это самая дорогая часть функции, в которой он находится.
Что яНа самом деле я пытаюсь узнать, находится ли многоугольник между конечными точками строки:Давайте предположим, что у нас есть точки p1
и p2
и многоугольник pg
в одной плоскости.Мы строим linestring ls
из p1
и p2
.Я считаю, что pg
лежит между p1
и p2
, если intersection(ls, pg, vp)
заполняет свой 3-й аргумент (vector<point>&
) двумя points
, ни один из которых не равен ни p1
, ни p2
.
Мне интересно, есть ли более умный / менее дорогой способ ответить на этот вопрос?