Делоне триангулирует 2d многоугольник с отверстиями
Я хочу триангулировать сложный (но не самопересекающийся) многоугольник с отверстиями, чтобы результирующие треугольники лежали внутри многоугольника, полностью покрывали этот многоугольник и подчинялись правилам треугольника Делоне.
очевидно, я мог бы просто построить триангуляцию Делоне для всех точек, но я боюсь, что некоторые края многоугольника не будут включены в результирующую триангуляцию.
Итак, возможна ли такая триангуляция? И если да, то как я могу это сделать это?
на всякий случай-мне нужно построить аппроксимацию медиальной оси многоугольника (надеюсь, это можно сделать, связав все точки окружности результирующих треугольников).
2 ответов
похоже, вы хотите ограниченная триангуляция Делоне. "Отверстия" могут быть реализованы путем ограничения входных ребер, чтобы оставаться непрерывными в триангуляции.
посмотреть треугольник и poly2tri проекты для реализации.
вот один из методов, которые я придумал, когда делал navmesh для игры RTS. Обратите внимание, что это homebrew, никакие сторонние инструменты не использовались, мне потребовалось около 3 недель для реализации и исправления:
- кормить все точки в триангуляции Делоне (чтобы получить большинство равномерных треугольников)
- Проверьте вдоль отверстий контуры и флип полигональных пар, произведенных Delaunay, чтобы соответствовать контурам
- клип отверстия внутренности
результат (plz игнорировать фиолетовый контуры):