如何从图中获取Voronoi站点点

时间:2018-09-01 17:56:35

标签: algorithm computational-geometry voronoi

说我们从某个地方得到了一个Voronoi图,但是没有一点。

像这样,但没有红点:

我们只有边界。

是否有任何算法可以帮助检索点?


如果我们有延伸很长的无限的Voronoi图,该怎么办?我们可以计算至少一点还是有启发式算法吗?

2 个答案:

答案 0 :(得分:2)

对于Voronoi图的单个相交,通常将具有3条边,并且在这些边之间有3个扇区。将扇区(及其角度)称为ABC。另外,将扇区AB之间的边缘称为边缘ab,并将边缘bcca也称为边缘。

在每个部门中都应有一个原始站点;让站点a成为扇区A中的站点,扇区b中的站点B和扇区c中的站点Center image description here 请注意,与扇区边界两侧的站点的角度必须相等,因为从Voronoi边缘到每个站点的距离必须相等。例如,从站点a到边缘ab的角度必须与从边缘ab到站点b的角度相同;将此角度称为X。同样,将角度Y设为从位置b到边缘bc以及从bc到位置c的角度;和Zcca以及从caa的角度。

这为您提供了等式:

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。)



(图片来自Stefan Huber。)