Центральна точка вашої діаграми - це вироджений край діаграми Вороного. Якщо ви генеруєте діаграму Вороного для хмари нерегулярних точок, кожна вершина матиме ступінь 3. Вершина зі ступенем 4 (або більше) може відбуватися лише тоді, коли збігаються дві (або більше) вершин. Це означає, що між ними є край нульової довжини. Але цей край все ж повинен мати відповідний край у триангуляції Делоне. Проблема полягає в тому, що довільно, який із двох можливих ребер ви виберете, оскільки край нульової довжини не має жодного пов'язаного напрямку.
Щоб візуалізувати те, про що я говорю, подумайте, починаючи з чотирьох менш регулярно розташованих точок (таких, що ми починаємо лише вершинами 3 ступеня) та поступово переводячи їх у свої звичайні положення.
Ми можемо це зробити двома різними способами, що призводить до виродженого випадку у вашій діаграмі. Ви побачите, що ви закінчуєте дві різні триангуляції Делоне, які є обома допустимими для виродженого випадку:
Я припускаю, що у вашому коді з тієї чи іншої причини відсутній цей вироджений випадок, але насправді, не бачачи, як ви обчислюєте триангуляцію Делоне з діаграми Вороного, неможливо вказати вас далі, ніж це.
Також зауважте, що наявність ще більших вироджень (більше чотирьох точок, розподілених під рівними кутами навколо кола), ймовірно, потребує додаткової уваги:
Ці анімації також показують, що (навіть у невиродженому випадку) відповідні краї Вороного та Делоне не обов'язково насправді перетинаються в їх обмеженій мірі. Це може ускладнити переконання, що 2 (або 3) ребра, які трикутнуть правильний багатокутник на кінці, насправді відповідають декільком виродженим ребрам, які знаходяться в центрі. Також зауважте, що загалом існує 5 різних трикутників п'ятикутника та 14 трикутників шестикутника (хоча я не знаю, чи можна отримати всі 14, деформуючи нероджену тріангуляцію).
Редагувати (за ОП)
Діаграми Вороного, обчислені з Boost.polygon, дозволяють проходити по кожній вершині Вороного та кожному краю, пов'язаному з цими вершинами (за годинниковою або проти годинникової стрілки). Таким чином, можна створити по одному трикутнику для кожної пари ребер (два з'єднані ребра будуть пов'язувати 3 комірки).