ГоловнаСтаттіDelaunay & Voronoi

Delaunay Триангулювання: Треугольники Без Точок Всередині Их Круга

Власність порожнього кола, інкрементальна побудова Bowyer-Watson і чому Вороної діаграма є просто її тіньою.

mysimulator teamОновлено — червень 2026≈ 8 хв читання▶ Відкрити симуляцію

Одна умова: жодна точка не повинна знаходитися всередині будь-якого описаного кола

Враховуючи набір точок у площині, зазвичай існує багато способів з’єднати їх трикутниками, які покривають їх випуклу оболонку. Делаunay-у триангулювання, назване на честь російсько-радянського математика Бориса Делауна, яке було описане ним у 1934 році, є конкретним триангулюванням з вражаючим властивістю: для кожного трикутника в ньому описане коло, що проходить через його три вершини – його описане коло – не містить жодної іншої точки набору всередині. Кожен трикутник має порожнє описане коло.

Ця одна умова має потужний наслідок: серед усіх можливих триангулювань набору точок, Делаunay-у триангулювання є тим, яке максимізує мінімальний кут. Воно систематично уникає довгих, вузьких трикутників-слисків, які роблять скінченні елементи чисельно нестабільними та рельєвні моделі виглядають обвугленими та неправильними. Якщо триангулювання не є Делаunay-у, існує пара сусідніх трикутників, спільний край яких можна перевернути на іншу діагональ їх чотирикутника, і цей переворот завжди покращує найгірший кут – Делаunay-у є станом, коли подібного покращення не існує.

жива демонстрація · пов'язана симуляція● LIVE

Bowyer-Watson: вставте точку, виріжте порожнину

Алгоритм, який ви бачите вище, – Bowyer-Watson, опублікований незалежно Адріаном Боєром та Девідом Уотсоном у 1981 році. Він поступово будує триангуляцію, додаючи одну точку за раз, і це працює тому, що властивість «порожнього кола» є локальною та легкою для перевірки:

почніть із одного великого «супер-трикутника», який охоплює всі вхідні точки для кожної нової точки p: визначте трикутники, існуючі на даний момент, чия коло обробки містить p виріжте порожнину – полігон, що залишається після видалення всіх «поганих» трикутників видаліть погані трикутники перетриангулюйте: з’єднайте p з усіма краями полигову межу видаліть будь-який трикутник, який все ще торкається вершини супер-трикутника Перевірка на те, чи лежить точка всередині кола обробки трикутника, – це простий тест знаку визначників для трьох вершин та кандидатської точки – дешево, точно з використанням цілочисельної або обережної плаваючої арифметики, і тому інкрементний код Delaunay достатньо короткий, щоб поміститися на одному екрані. Завдяки хитру з «супер-трикутником» не потрібно спеціально враховувати межу опуклої оболонки: все починається всередині одного великого трикутника, а кути цього великого трикутника видаляються в кінці.

start with one huge "super-triangle" that encloses every input point

for each new point p:
    bad = every existing triangle whose circumcircle contains p
    cavity = the boundary polygon left after removing all "bad" triangles
    remove the bad triangles
    re-triangulate: connect p to every edge of the cavity boundary

remove any triangle still touching a super-triangle vertex

Вороної діаграма – це одна й та ж інформація, але перевернута

Вороної діаграма розділяє площину на одну комірку для кожної точки, де комірка містить усі місця ближче до цієї точки, ніж до будь-якої іншої. Це виглядає як зовсім інша конструкція, але це точна дуальна графа триангуляції Делоне: з'єднайте центросиметричні центри кожної пари трикутників, що мають спільний край Делоне, і ви отримаєте краї Вороної діаграми. Центросиметричний центр кожного трикутника Делоне стає вершиною Вороної діаграми, а кожен край Делоне перетинається точно однією перпендикулярною краєю Вороної діаграми. Обчислення однієї структури знаходиться в лінійному часовому віддаленні від іншої.

Delaunay triangle          →  Voronoi vertex   (its circumcenter)
Delaunay edge (shared by
  two triangles)           →  Voronoi edge      (perpendicular, joining
                                                  the two circumcenters)
Delaunay vertex (a point)  →  Voronoi cell      (region closest to it)

Де саме це використовується

Обчислювальні сітки (finite-element meshers) використовують уточнення Делоне для заповнення інженерної деталі добре сформованими трикутниками або тетраедрами, оскільки властивість порожнього кола визначає найгірший кут, що в свою чергу обмежує чисельну похибку симуляції, яка виконується на цій сітці. Рельєфні та геоінформаційні системи (GIS) створюють триангуляцію Делоне поверх висотних зразків (TIN – triangulated irregular network), оскільки це уникнення довгих, вузьких трикутників, які штучно загострюють вигляд ландшафту. Планувальники бездротових мереж використовують двозначну Вороної діаграму для моделювання зон покриття навколо веж, а біоінформатики – для пошуку найближчих сусідів кожної клітини в тканині. Обидві структури також безпосередньо відповідають на запити про найближчого сусіда: клітина Вороної, що містить точку запиту, ідентифікує її найближчий об’єкт даних завдяки своїй конструкції, а триангуляція Делоне є найрозрідженішою графою, яка гарантовано містить край найближчого сусіда для кожної точки.

Часті запитання

Чому триангуляція Делоне уникнення тонких, сріблястих трикутників?

Це тому, що вона максимізує мінімальний кут для будь-якого можливого триангулювання одного й того ж набору точок. Будь-яке триангулювання, яке порушує властивість порожнього кола, можна покращити шляхом перевертання спільного краю двох сусідніх трикутників, і це перевертання завжди збільшує найменший кут, який у ньому бере участь. Делоне є стаціонарною точкою цього процесу.

Яке саме відношення між Делоне та Вороної?

Це подвійні графи одного й того ж набору точок. Центр описання кожного трикутника Делоне є вершиною Вороної, а кожен край Делоне перетинається рівно одним краєм Вороної, перпендикулярним йому. Обчислення одного автоматично визначає інший.

Чи Bowyer-Watson – найшвидший спосіб побудови триангуляції Делоне?

Ні. Його найгірший випадок – O(n²) тому, що погано розташована нова точка може зробити недійсними величезну дірку з трикутників. Алгоритм «Свисток Фортуни» гарантує O(n log n) у найгіршому випадку, а також методи розділяй та володарюй. Bowyer-Watson залишається популярним завдяки його короткій реалізації, тому що він працює інкрементально при надходженні точок і має складність O(n log n) на типових, неавтентичних наборах точок.

Спробуйте наживо

Усе, що вище, працює прямо у вашому браузері — відкрийте Delaunay & Voronoi і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.

▶ Відкрити симуляцію Delaunay & Voronoi

Що ви знайшли?

Додати кроки відтворення (опційно)