Определение разреза любого заданного многоугольника и пирамиды

Я пытаюсь реализовать на С++ функцию, определяющую разрез любого заданного многоугольника и пирамиды.

На самом деле все оказалось гораздо проще, чем я себе представлял сначала.

Сначала для каждого ребра пирамиды проверьте пересечение линии и плоскости (данный многоугольник представляет собой плоскость, состоящую из 3 точек). Это приведет к появлению новых вершин на секущей плоскости.

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


person Leon    schedule 24.06.2011    source источник


Ответы (1)


Действительно, это не простая проблема. Для простоты предположим, что параллельных отрезков нет.

Сначала определите плоскость, в которой находится ваш выпуклый многоугольник. Затем определите пересечение этой плоскости с пирамидой. В результате получается второй выпуклый многоугольник.

Теперь вы должны найти пересечение двух выпуклых многоугольников. Как это можно сделать, вы можете найти здесь.

person Chaim Zonnenberg    schedule 24.06.2011