Как получить очки сайта Вороного из диаграммы - PullRequest
0 голосов
/ 01 сентября 2018

Скажем, у нас откуда-то есть диаграмма Вороного, но нет никаких точек.

Вот так, но без красных точек:

У нас есть только границы.

Есть ли какой-нибудь алгоритм, который может помочь получить точки?


А что, если у нас есть неограниченная диаграмма Вороного, растягивающаяся на долгий путь . Можем ли мы рассчитать хотя бы одну точку или есть эвристические алгоритмы?

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Этот вопрос был исследован и частично решен Эшом и Болкером в 1985 году. более современная версия, которая завершает эту раннюю работу, см. здесь:

Бидл, Тереза, Мартин Хельд и Стефан Хубер. «Распознавание прямых скелетов и диаграмм Вороного и восстановление их входных данных». В Диаграммы Вороного в науке и технике (ISVD), 2013 г. 10-й Международный симпозиум, стр. 37-46. IEEE, 2013 ( IEEE ссылка .)

<ч /> image
(Image from Стефан Хубер .)

<ч />
0 голосов
/ 01 сентября 2018

Для одного пересечения диаграммы Вороного у вас обычно будет 3 ребра и 3 сектора между ребрами. Назовите сектора (и их углы) A, B и C. Кроме того, назовите ребро между секторами A и B ребром ab, а также для ребер bc и ca.

.

В каждом из этих секторов должна быть оригинальная точка сайта; пусть сайт a будет сайтом в секторе A, сайт b в секторе B и сайт c в секторе C. enter image description here Обратите внимание, что углы к участкам с обеих сторон границы сектора должны быть равны, потому что расстояние от края Вороного до каждого участка должно быть равным. Например, угол от участка a до края ab должен совпадать с углом от края ab до участка b; назовите этот угол X. Аналогично, пусть угол Y будет углом от сайта b к краю bc и от bc к сайту c; и Z угол от c до ca и от ca до a.

Это дает вам уравнения:

A = Z + X
B = X + Y
C = Y + Z

С решением (упрощено, потому что A + B + C == 2 * pi):

X = (A + B - C)/2 = pi - C
Y = (B + C - A)/2 = pi - A
Z = (C + A - B)/2 = pi - B

Это дает вам луч от любого пересечения Вороного до каждого из 3 его участков. И пересечение лучей от соседних пересечений Вороного к тому же месту ячейки даст вам местоположение для этого места.


И, чтобы ответить на ваш второй вопрос: если у вас есть только 3 участка, то у вас может быть только одно пересечение Вороного. В этом случае вы не сможете определить свои сайты - только их углы от пересечения.

Во всех других общих случаях вы можете найти хотя бы один сайт, как описано выше; отражение по краям Вороного должно определять местоположение всех других мест, включая экстремальные ячейки, которые имеют только одно пересечение Вороного.

...