3

Это наблюдение вопрос How to test if a line intersects a convex polygon?Пересечение (возможно, неограниченной) выпуклого многоугольника с полуплоскость

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

enter image description here

Резюмируя, учитывая объект многоугольника и линию, как мне найти новый полигон, созданное пересечение полуплоскости-сотворено по-линию с полигоном? У CGAL или любой другой библиотеки есть готовая к использованию функция для этого? Если мне нужно закодировать это с нуля, как я должен поддерживать объект многоугольника?

+0

Я не вижу, как вы здесь создаете новый многогранник. Вы имеете в виду, что вы пересекаете многогранник с плоскостью *, а не с линией? Одна линия не собирается делить многогранник на две части. –

+0

@MarkDickinson: ты прав, мой плохой. Я хочу взять пересечение многогранника либо с левым, либо с правым полупространством, созданным линией. – elexhobby

+0

Но как линия создает полупространство? Вы работаете в трех измерениях, не так ли? –

ответ

0

Я думаю, что одним из решений с использованием CGAL может быть использование 2D Boolean Operations on Nef Polygons. Но для выпуклых многоугольников это может быть излишним. Меня беспокоит то, что вы упоминаете, что можете использовать неограниченные выпуклые многоугольники. Без полигонов Nef я не знаю, можно ли представить это в CGAL.

Смежные вопросы