CGAL: пересечение сегмента и многоугольника? - PullRequest
6 голосов
/ 01 июля 2011

У меня есть набор полигонов, и я хочу проверить пересечение между ним и сегментом.Я проверил руководство, но не могу найти подходящую функцию.Пересечение между точками, линиями, отрезками, треугольниками, плоскостями существует.И пересечение между полигонами тоже есть.Мой вопрос:

  1. Есть ли такая функция?
  2. Если нет, значит ли это, что мне нужно разбить многоугольники на сегменты и выполнить пересечение между этими сегментами?(Причина, по которой я не хочу этого делать, заключается в том, что я подумал, что на самом деле CGAL может использовать этот способ для пересечения между полигонами. Почему не существует такой функции для пересечения линии и многоугольника?)способ сделать это?

1 Ответ

7 голосов
/ 24 июля 2011

Самый простой способ - создать объект Polygon_set_2, который может содержать несколько полигонов.Чтобы проверить пересечение внешнего многоугольника с этим набором, вы просто применяете метод do_intersect.

Например:

typedef CGAL::Polygon_set_2<Kernel, std::vector<Kernel::Point_2>> Polygon_set_2;
Polygon_set_2 ps;
Polygon_2     poly;
Polygon_2     line; // line is a polygon defined by 2 points

ps.insert(poly);
bool intersect = ps.do_intersect(line);

Подробнее о polygon_set_2:

Надеюсь, все ясно, Кирилл

...