Триангуляция Делоне

advertisement
Триангуляция Делоне
Выполнил: Е.И. Мишкин
Научный руководитель: Пузанкова А.Б
Триангуляцией Делоне для множества точек S на
плоскости называют триангуляцию DT(S), такую, что для
любого треугольника все точки из S за исключением точек,
являющихся его вершинами, лежат вне окружности,
описанной вокруг треугольника.
Пример триангуляции Делоне
Пусть дана некоторая выпуклая двухмерная область, ограниченная
замкнутой ломаной линией (выпуклость в данном случае – если при
движении вдоль её границы приходится поворачивать только в одну
сторону, налево или направо), и набор точек внутри этой области (рис. 1).
Рис. 1
Требуется разбить указанную область на
треугольники, вершинами которых являются заданные
точки внутри области и вершины ограничивающей её
ломаной линии. Треугольники не должны накрывать друг
друга, а их стороны могут пересекаться только в
вершинах.
Триангуляция области будет триангуляцией
Делоне, если внутри описанной вокруг каждого
треугольника окружности отсутствует вершины других
треугольников.
Рассмотрим пошаговую триангуляцию Делоне для
заранее
заданного
набора
вершин.
Вершины
ограничивающей область ломаной и заданные точки
внутри области будем называть вершинами триангуляции.
Стороны треугольников будем называть рёбрами. Среди
рёбер выделим отрезки ограничивающей ломаной,
которые будем называть граничными рёбрами. Пусть
требуется построить треугольник, стороной которого
является граничное ребро AB (рис. 2).
A
V
B
Рис. 2
Через вершины A, B и любую, не лежавшую с ними
на одной прямой, вершину можно провести окружность. В
качестве третьей вершины треугольника выберем
вершину V, так как соответствующая ей окружность не
содержит других вершин с той же стороны отрезка AB, с
которой лежит точка V. Для граничного ребра в общем
случае можно найти только одну такую вершину. В
частном случае на окружность может попасть более одной
вершины, тогда для построения можно выбрать любую их
них. Будем называть её ближайшей.
A
V
B
Рис. 2
Центр окружности, проходящей через точку A, B и
V, лежит на пересечении перпендикуляров к серединам
отрезков AB, BV и VA. Положение центра окружности
будем характеризовать параметром t отрезка MN,
перпендикулярного ребру AB, равного с ним по длине и
проходящего через середину ребра AB.
A
M
N
V
B
Рис. 2
Пусть вершины A,B и V описываются двухмерными радиусвекторами a= [xa ya]T , b = [xb yb]T v = [xv yv]T соответственно. Радиусвекторы середин отрезков AB и BV будут равны:
Значение параметра t прямой MN = (1-t)m+tn, соответствующее
положению на ней центра окружности, проходящей через точки A, B и V,
равно:
Для ближайшей слева к отрезку AB вершины параметр t имеет
минимальное значение. Соответственно, выбираем вершину V для
построения треугольника.
A
V
B
Рис. 2
Проведём полную триангуляцию для рисунка 1. Построение
треугольников начнём с любого граничного ребра. Найдём
для него ближайшую вершину, соответствующая окружность
которой не содержит других вершин.
A
V
B
Пусть для граничного ребра AB найдена ближайшая
вершина V. Тогда построим треугольник ABV и переведём
ребро AB в разряд неактивных. Неактивными будем
называть рёбра и вершины, которые не участвуют в
алгоритме триангуляции. Если среди граничных рёбер
отсутствует ребро BV, то на отрезке VB построим новое
граничное ребро. Если же среди граничных рёбер есть
ребро BV, то переведём его и вершину B в разряд
неактивных. Если среди граничных ребёр отсутствует ребро
VA, то на отрезке AV построим новое граничное ребро.
Если же среди граничных рёбер есть ребро VA, то
переведём его и вершину A в разряд неактивных.
Продолжение триангуляции для рисунка 1:
A
V
B
Результат завершённой триангуляции:
A
V
B
Свойства триангуляции Делоне
• Триангуляция Делоне максимизирует минимальный угол
среди всех углов всех построенных треугольников, тем
самым избегаются «тонкие» треугольники.
• Триангуляция
Делоне
на
плоскости
обладает
минимальной суммой радиусов окружностей, описанных
около
треугольников,
среди
всех
возможных
триангуляций.
Download