说我们从某个地方得到了一个Voronoi图,但是没有一点。
像这样,但没有红点:
我们只有边界。
是否有任何算法可以帮助检索点?
如果我们有延伸很长的无限的Voronoi图,该怎么办?我们可以计算至少一点还是有启发式算法吗?
答案 0 :(得分:2)
对于Voronoi图的单个相交,通常将具有3条边,并且在这些边之间有3个扇区。将扇区(及其角度)称为A
,B
和C
。另外,将扇区A
和B
之间的边缘称为边缘ab
,并将边缘bc
和ca
也称为边缘。
在每个部门中都应有一个原始站点;让站点a
成为扇区A
中的站点,扇区b
中的站点B
和扇区c
中的站点C
。
请注意,与扇区边界两侧的站点的角度必须相等,因为从Voronoi边缘到每个站点的距离必须相等。例如,从站点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
这使您可以从任何Voronoi交叉点到其3个站点的射线。从相邻的Voronoi交叉点到同一单元站点的光线交点将为您提供该站点的位置。
然后,回答第二个问题:如果只有3个站点,则只能有一个Voronoi交叉点。在这种情况下,您将无法确定站点-只能确定它们与交叉点的角度。
在所有其他一般情况下,您可以找到至少一个如上所述的站点;然后,通过Voronoi边缘的反射可以确定所有其他位置的位置,包括只有一个Voronoi交点的末梢细胞。
答案 1 :(得分:1)
这个问题在1985年由Ash和Bolker进行了调查并得到了解决。 可以完成早期工作的更现代的版本,请参见:
Biedl,Therese,Martin Held和Stefan Huber。 “识别直线骨架和Voronoi图并重建它们的输入。”在科学与工程中的维罗诺伊图(ISVD),2013年第10届国际研讨会上,第37-46页。 IEEE,2013年。 (IEEE link。)