Алгоритм добавления полигонов - PullRequest
2 голосов
/ 21 февраля 2012

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

Что я делаю до сих пор: я вычисляю проекции граней как многоугольники в плоскости проекции.

Я мог бы использовать алгоритм Сазерленда-Ходжмана, чтобы обрезать все спроецированные полигоны, чтобы обрезать нужную область.

Теперь мой вопрос: как я могу объединить спроектированные (возможно, обрезанные) полигоны вместе? Должен ли я использовать такие алгоритмы, как Margalit / Knott?

Алгоритм должен быть достаточно эффективным, потому что он должен запускаться довольно часто. Так какой алгоритм вы предполагаете?

Возможно ли изменить алгоритм Сазерленда-Ходжмана для решения проблемы слияния?

1 Ответ

0 голосов
/ 24 марта 2012

В настоящее время я реализую этот алгоритм (объединение n вогнутых многоугольников), используя Bentley-Ottmann, чтобы найти все пересечения ребер, и в то же время отслеживаю уровень вложенности полигонов по обе стороны от сегментов ребер (сколько перекрывающихся многоугольников на каждой сторонелиния трогательная).Края с уровнем вложенности 0 на одной стороне выводятся в результирующий многоугольник.Это довольно сложно сделать правильно.Существующее решение с другим дизайном алгоритма можно найти по адресу:

http://sourceforge.net/projects/polyclipping/

...