Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
100-63.doc
Скачиваний:
5
Добавлен:
26.11.2019
Размер:
9.79 Mб
Скачать

Тема 14 Тріангуляція Делоне. Діаграма Вороного

14.1. Загальні відомості

Тріангуляція – трикутна полігональна мережа, утворена на множині точкових об’єктів (вузлів) шляхом їх з’єднання відрізками, які не перетинаються.

Тріангуляція Делоне – всі трикутники мережі прагнуть до правильної форми. В основі тріангуляції Делоне лежить круговий критерій: якщо провести коло через довільні три точки, то інші точки не повинні попадати в нього.

Діаграма Вороного (полігони Тіссена) – многокутник, утворений відрізками перпендикулярів, проведених до середин сторін, що сполучають дві найближчих сусідніх точки. Діаграма Вороного – це граф двоїстий до тріангуляції Делоне.

На Рис.4 зображена діаграма Вороного (суцільні лінії) і тріангуляція Делоне (штріхові лінії). Діаграму Вороного будувати просто, якщо перед цим була виконана тріангуляція Делоне. Кожна область Вороного будується з'єднанням серединних перпендикулярів у вихідних трикутниках тріангуляції В цьому розумінні діаграма Вороного і тріангуляція Делоне є взаємно двоїстими.

Рис.4 . Тріангуляція Делоне і діаграма Вороного для заданої множини точок

14.2. Виконання тріангуляції Делоне

Тріангуляція Делоне виконується за таким алгоритмом.

  1. Побудова опуклої оболонки заданої множини точок (На Рис.4 - опуклий многокутник 1-7-9-6-2-10-5-8-1, який містить всі точки множини).

  2. Вибір базового ребра оболонки P1P2. Пошук вузла P0 за умовою . При порівнянні кутів, відмінність у розмірах яких неочевидна, слід користуватися формулою

( 3 )

і тим фактом, що

якщо .

    1. Нехай вузол P0 не належить оболонці. Ребро P1P2 вилучається з оболонки. Ребра P1P0 та P0P2 додаються до оболонки.

    2. Нехай вузол P0 належить оболонці. Ребра P1P2 та P1P0 (P2P0) вилучаються з оболонки. Ребро P2P0 (P1P0) додається до оболонки.

  1. Пункт 2 повторюється до завершення тріангуляції Делоне.

14.3. Побудова діаграми Вороного

1. Кожна сторона діаграми Вороного є серединним перпендикуляром до сторони трикутника тріангуляції Делоне. В результаті побудови серединних перпендикулярів отримуємо сукупність опуклих многокутників (полігонів). У кожній вершині многокутника сходяться три серединних перпендикуляри. Це є внутрішні вершини діаграми Вороного. Кожна з них є центром кола, яке проходить через три вузли початкової множини. Кожній внутрішній вершині присвоюється ім’я. Воно складається з трійки цифр, взятих у зростаючому порядку. Цифри відповідають номерам вузлів, через які пройде відповідне коло.

2. Значення координат внутрішніх вершин полігона знаходимо із наступних співвідношень. Рівняння кола, яке проходить через точки із координатами буде мати вигляд

( 4 )

Або, розкриваючи визначник,

. ( 5 )

Тут

; ;

; .

Перепишемо рівняння кола в іншому вигляді

.

Звідси отримаємо значення координат вершини полігона (центра кола) і радіуса кола , яке проходить через задані три вузли

. ( 6 )

Якщо центр кола попадає в задану область (0 x 600, 0 y 400), він буде вершиною діаграми.

  1. Будуються зовнішні (ті, що лежать на границі прямокутної області) вершини діаграми Вороного. Вони утворені перетином серединних перпендикулярів із границями прямокутної області. Всім зовнішнім вершинам присвоюються імена. Якщо сторона комірки перетинає одну з границь області, які позначені символами N (північ), O (схід), S (південь), W (захід) то ім’я точки перетину матиме вигляд N15 або W68. Кутові точки області мають наступні імена: NW, NO, SO, SW.

Для визначення координат зовнішніх вершин використовується рівняння прямої, яка є серединним перпендикуляром до однієї із сторін тріангуляції Делоне

( 7 )

і фіксоване значення координати X (східна або західна границя) чи Y (південна або північна границя). Для обчислення коефіцієнтів використовують наступні формули

( 8 )

Тут - координати двох вузлів для яких будується серединний перпендикуляр. У випадку рівняння серединного перпендикуляра матиме вигляд . У випадку рівняння серединного перпендикуляра матиме вигляд .

Наприклад:

для лівої (західної) границі будемо мати: x=0, y = bij;

для правої (східної): x=600, y = 600aij + bij;

для нижньої (південної) границі будемо мати: y=0, x = -bij/aij;

для верхньої (північної): y = 400, x = (400-bij)/aij.

Крім того слід пам’ятати про існування чотирьох кутових точок області з такими координатами: NW(0;400), NO(600;400), SO(600;0), SW(0;0).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]