Для одного пересечения диаграммы Вороного у вас обычно будет 3 ребра и 3 сектора между ребрами. Назовите сектора (и их углы) A
, B
и C
. Кроме того, назовите ребро между секторами A
и B
ребром ab
, а также для ребер bc
и ca
.
.
В каждом из этих секторов должна быть оригинальная точка сайта; пусть сайт a
будет сайтом в секторе A
, сайт b
в секторе B
и сайт c
в секторе C
.
Обратите внимание, что углы к участкам с обеих сторон границы сектора должны быть равны, потому что расстояние от края Вороного до каждого участка должно быть равным. Например, угол от участка 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 участка, то у вас может быть только одно пересечение Вороного. В этом случае вы не сможете определить свои сайты - только их углы от пересечения.
Во всех других общих случаях вы можете найти хотя бы один сайт, как описано выше; отражение по краям Вороного должно определять местоположение всех других мест, включая экстремальные ячейки, которые имеют только одно пересечение Вороного.