Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Алгоритмы / Математика / Вычислительная геометрия / Работа с многоугольниками /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Триангуляция - Программирование от RIN.RU
Триангуляция

Триангуляцией полигона называется декомпозиция полигона в набор треугольников. Триангуляция часто используется для упрощения решения задачи в пределах области со сложной конфигурацией, и сведения ее к более простой задаче в пределах треугольника, поскольку треугольник относится к простейшей области и в этом случае задачу можно решить гораздо проще. Например, для определения, лежит ли точка внутри невыпуклого полигона, можно осуществить триангуляцию полигона и ответить "да" только в том случае, если точка принадлежит по крайней мере хотя бы одному треугольнику. Или при анализе сложных поверхностей, расположенных в пространстве, можно эти поверхности аппроксимировать сеткой треугольников, проанализировать которые значительно легче.


Пожалуй, самым простым алгоритмом триангуляции является метод Разделяй-и-властвуй.


Требуется O(nlogn) операций в среднем и O(n2) - в худшем случае. Многоугольник рекурсивно делится на части путем проведения хорды вплоть до треугольников.




Более сложные и эффективные алгоритмы(простейшие из таковых) используют понятие монотонных полигонов. Общая стратегия триангуляции состоит из двух этапов:

  1. Декомпозиция полигона на монотонные части.

  2. Триангуляция монотонных частей за общее время О(n).




Быстрее, чем за O(n) триангуляцию осуществить нельзя, поэтому общее время задается первой частью алгоритма.




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




Недавно появился гораздо более эффективный алгоритм Зейделя, простой и работающий за почти линейное время. Существует его реализация, написанная Narkhede и Manocha. В их коде есть и общая функция триангуляции, делающая второй шаг алгоритма. Кроме того (!) их код поддерживает полигоны с дырами, чего не скажешь о методах выше.



 8  Комментарии к статье  8 8  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь