В вычислительной геометрии триангуляция Делоне или триангуляция Делоне множества точек на плоскости подразделяет их выпуклую оболочку [1] на треугольники, описанные окружности которых не содержат ни одной из точек. Это максимизирует размер наименьшего угла в любом из треугольников и имеет тенденцию избегать узких треугольников .
Триангуляция названа в честь Бориса Делоне за его работу над ней с 1934 года. [2]
Если все точки лежат на одной прямой, понятие триангуляции становится вырожденным и триангуляции Делоне не существует. Для четырех или более точек на одной окружности (например, вершины прямоугольника) триангуляция Делоне не является единственной: каждая из двух возможных триангуляций, разделяющих четырехугольник на два треугольника, удовлетворяет «условию Делоне», т. е. требованию, чтобы описанные окружности всех треугольников имели пустые внутренние области.
При рассмотрении описанных сфер понятие триангуляции Делоне распространяется на три и более измерений. Возможны обобщения на метрики, отличные от евклидова расстояния . Однако в этих случаях существование или уникальность триангуляции Делоне не гарантируется.
Триангуляция Делоне дискретного множества точек P в общем положении соответствует двойственному графу диаграммы Вороного для P. Центры описанных окружностей треугольников Делоне являются вершинами диаграммы Вороного. В двумерном случае вершины Вороного соединены ребрами, которые можно вывести из отношений смежности треугольников Делоне: если два треугольника имеют общее ребро в триангуляции Делоне, их центры описанных окружностей должны быть соединены с ребром в мозаике Вороного.
Особые случаи, когда эта связь не соблюдается или является неоднозначной, включают в себя следующие случаи:
Для множества P точек в ( d -мерном) евклидовом пространстве триангуляция Делоне — это триангуляция DT( P ) такая, что ни одна точка в P не находится внутри описанной гиперсферы любого d - симплекса в DT( P ) . Известно [2] , что существует единственная триангуляция Делоне для P, если P — множество точек в общем положении ; то есть аффинная оболочка P является d -мерной и ни одно множество из d + 2 точек в P не лежит на границе шара, внутренняя часть которого не пересекает P .
Задача нахождения триангуляции Делоне набора точек в d -мерном евклидовом пространстве может быть преобразована в задачу нахождения выпуклой оболочки набора точек в ( d + 1 )-мерном пространстве. Это можно сделать, присвоив каждой точке p дополнительную координату, равную | p | 2 , тем самым превратив ее в гиперпараболоид (это называется «подъемом»); взяв нижнюю сторону выпуклой оболочки (поскольку верхняя торцевая крышка обращена вверх от начала координат и должна быть отброшена); и отобразив обратно в d -мерное пространство, удалив последнюю координату. Поскольку выпуклая оболочка уникальна, то и триангуляция является уникальной, предполагая, что все грани выпуклой оболочки являются симплексами . Несимплициальные грани возникают только тогда, когда d + 2 исходных точек лежат на одной и той же d - гиперсфере , т. е. точки не находятся в общем положении. [3]
Пусть n — число точек, а d — число измерений.
Из приведенных выше свойств вытекает важная особенность: если рассмотреть два треугольника △ ABD , △ BCD с общим ребром BD (см. рисунки), то если сумма углов α + γ ≤ 180° , то треугольники удовлетворяют условию Делоне.
Это важное свойство, поскольку оно позволяет использовать технику переворачивания . Если два треугольника не удовлетворяют условию Делоне, то замена общего ребра BD на общее ребро AC дает два треугольника, которые удовлетворяют условию Делоне:
Эта операция называется переворотом и может быть обобщена до трех и более измерений. [8]
Многие алгоритмы для вычисления триангуляции Делоне полагаются на быстрые операции для определения того, находится ли точка внутри описанной окружности треугольника, и эффективную структуру данных для хранения треугольников и ребер. В двух измерениях один из способов определить, лежит ли точка D в описанной окружности A, B, C, заключается в оценке определителя : [9]
Если A, B, C отсортированы против часовой стрелки, этот определитель будет положительным только в том случае, если D лежит внутри описанной окружности.
Как упоминалось выше, если треугольник не является треугольником Делоне, мы можем перевернуть одно из его ребер. Это приводит к простому алгоритму: построить любую триангуляцию точек, а затем переворачивать ребра до тех пор, пока ни один треугольник не будет не-Делоне. К сожалению, это может потребовать Ω( n 2 ) переворотов ребер. [10] Хотя этот алгоритм можно обобщить на три и более измерений, его сходимость в этих случаях не гарантируется, поскольку она обусловлена связностью базового перевернутого графа : этот граф связен для двумерных наборов точек, но может быть несвязным в более высоких измерениях. [8]
Самый простой способ эффективного вычисления триангуляции Делоне — многократно добавлять по одной вершине за раз, повторно триангулируя затронутые части графа. Когда добавляется вершина v , мы разделяем на три треугольника, содержащие v , затем применяем алгоритм переворота. Если сделать это наивно, это займет O( n ) времени: мы просматриваем все треугольники, чтобы найти тот, который содержит v , затем мы потенциально переворачиваем каждый треугольник. Тогда общее время выполнения составит O( n 2 ) .
Если мы вставляем вершины в случайном порядке, то оказывается (с помощью довольно сложного доказательства), что каждая вставка перевернет, в среднем, только O(1) треугольников – хотя иногда она перевернет гораздо больше. [11] Это все еще оставляет время определения местоположения точки для улучшения. Мы можем хранить историю выполненных разделений и переворотов: каждый треугольник хранит указатель на два или три треугольника, которые его заменили. Чтобы найти треугольник, содержащий v , мы начинаем с корневого треугольника и следуем указателю, который указывает на треугольник, содержащий v , пока не найдем треугольник, который еще не был заменен. В среднем это также займет O(log n ) времени. Таким образом, по всем вершинам это займет O( n log n ) времени. [12] Хотя метод распространяется на более высокие размерности (как доказали Эдельсбруннер и Шах [13] ), время выполнения может быть экспоненциальным в размерности, даже если конечная триангуляция Делоне мала.
Алгоритм Боуера–Уотсона обеспечивает другой подход к инкрементальному построению. Он дает альтернативу переворачиванию ребер для вычисления треугольников Делоне, содержащих новую вставленную вершину.
К сожалению, алгоритмы, основанные на переворачивании, обычно трудно распараллелить, поскольку добавление некоторой определенной точки (например, центральной точки колеса повозки) может привести к O( n ) последовательным переворачиваниям. Блеллох и др. [14] предложили другую версию инкрементального алгоритма, основанного на rip-and-tent, которая практична и высокопараллельна с полилогарифмическим диапазоном .
Алгоритм «разделяй и властвуй» для триангуляции в двух измерениях был разработан Ли и Шехтером и улучшен Гибасом и Столфи [9] [15] и позже Дуайером. [16] В этом алгоритме рекурсивно рисуется линия, разделяющая вершины на два набора. Триангуляция Делоне вычисляется для каждого набора, а затем два набора объединяются вдоль линии разделения. Используя некоторые хитрые трюки, операция слияния может быть выполнена за время O( n ) , поэтому общее время выполнения составляет O( n log n ) . [17]
Для определенных типов наборов точек, таких как равномерное случайное распределение, путем разумного выбора линий разделения ожидаемое время можно сократить до O( n log log n ), сохранив при этом производительность в наихудшем случае.
Парадигма «разделяй и властвуй» для выполнения триангуляции в d -мерном пространстве представлена в работе «DeWall: Быстрый алгоритм триангуляции Делоне «разделяй и властвуй» в пространстве E d » авторов П. Чигнони, К. Монтани, Р. Скопиньо. [18]
Было показано, что алгоритм «разделяй и властвуй» является самым быстрым методом последовательной генерации DT. [19] [20]
Sweephull [21] — это гибридный метод для 2D-триангуляции Делоне, который использует радиально распространяющуюся оболочку Sweep-hull и алгоритм переворота. Оболочка Sweep-hull создается последовательно путем итерации радиально отсортированного набора 2D-точек и соединения треугольников с видимой частью выпуклой оболочки, что дает неперекрывающуюся триангуляцию. Можно построить выпуклую оболочку таким образом, пока порядок точек гарантирует, что ни одна точка не попадет в треугольник. Но радиальная сортировка должна минимизировать переворот, будучи изначально высоко Делоне. Затем это сочетается с финальным итеративным шагом переворота треугольника.
Евклидово минимальное остовное дерево набора точек является подмножеством триангуляции Делоне тех же точек [22] , и это можно использовать для его эффективного вычисления.
Для моделирования рельефа или других объектов, заданных облаком точек , триангуляция Делоне дает хороший набор треугольников для использования в качестве полигонов в модели. В частности, триангуляция Делоне избегает узких треугольников (поскольку они имеют большие описанные окружности по сравнению с их площадью). См. триангулированную нерегулярную сеть .
Триангуляции Делоне можно использовать для определения плотности или интенсивности выборок точек с помощью оценщика поля тесселяции Делоне (DTFE) .
Триангуляции Делоне часто используются для генерации сеток для пространственно-дискретизированных решателей, таких как метод конечных элементов и метод конечных объемов физического моделирования, из-за гарантии угла и потому, что были разработаны быстрые алгоритмы триангуляции. Обычно область, подлежащая сетке, указывается как грубый симплициальный комплекс ; для того, чтобы сетка была численно устойчивой, ее необходимо уточнить, например, с помощью алгоритма Рупперта .
Растущая популярность методов метода конечных элементов и метода граничных элементов увеличивает стимул для улучшения алгоритмов автоматического построения сетки. Однако все эти алгоритмы могут создавать искаженные и даже непригодные элементы сетки. К счастью, существует несколько методов, которые могут взять существующую сетку и улучшить ее качество. Например, сглаживание (также называемое уточнением сетки) является одним из таких методов, который изменяет положение узлов для минимизации искажения элементов. Метод растянутой сетки позволяет легко и быстро генерировать псевдорегулярные сетки, которые соответствуют критериям Делоне, в одношаговом решении.
Ограниченная триангуляция Делоне нашла применение в планировании пути в автоматизированном вождении и топографической съемке. [23]
{{cite web}}
: CS1 maint: архивная копия как заголовок ( ссылка )