Я хочу триангулировать многоугольник (без самопересечения, но с дырками, и многоугольник тоже может быть вогнутым). В этом вопросе (например): Делоне триангулирует двумерный многоугольник с отверстиями предлагается ограниченная триангуляция Делоне. Что меня интересовало: это лучший способ сделать это или это как «кувалдой расколоть орех»? Альтернативой может быть использование алгоритма для создания «нормальной» триангуляции (например, разделение многоугольника на y-монотонные части и триангуляция этих частей) и последующее переворачивание ребер. Но похоже, что (почти) никто не принимает это решение. Есть ли причина? Каковы плюсы и минусы одного из этих решений? (многоугольники могут иметь произвольный размер)
Триангуляция многоугольника, соответствующего свойству Делоне
Ответы (2)
Есть несколько причин предпочесть (ограниченные) триангуляции Делоне другим подходам:
В
R^2
можно доказать, что такая триангуляция является «лучшим» способом триангуляции заданной геометрии — в результате получается триангуляция, максимизирующая минимальный угол. Это равносильно получению треугольников оптимального качества без каких-либо «худых» элементов.Формирование триангуляции Делоне эффективно (т.е.
O(n*log(n))
вR^2
).Алгоритмы триангуляции Делоне на практике надежны и эффективны. Существует ряд очень качественных реализаций, таких как Triangle и CGAL.
Триангуляции Делоне обобщаются на многомерные задачи (например, тетраэдры в
R^3
и общие симплексы вR^d
).Триангуляции Делоне индуцируют ортогональный двойственный комплекс (то есть диаграмму Вороного). Это может быть важно для некоторых классов численных методов.
В зависимости от того, чего именно вы хотите достичь, вы можете найти один или несколько из этих критериев убедительными. Другие варианты, такие как отсечение ушей или триангуляция монотонных плит, могут быть конкурентоспособными в некоторых областях, но, IMO, не демонстрируют такой же общей производительности.
Вы можете попробовать альфа-формы. Он определяется как триангуляция Делоне без ребер, превышающих альфа.