Algorithm voronoi细胞的质心

Algorithm voronoi细胞的质心,algorithm,computational-geometry,voronoi,Algorithm,Computational Geometry,Voronoi,给定voronoi边列表,如何在合理的时间内获得每个单元的质心?请注意,我只有voronoi图的边,但我必须确定质心 Voronoi图是根据Delaunay三角剖分构造的,因此三角剖分也可用于计算 谢谢 这应该行得通。它只需要输入分隔每个单元的点的坐标。由于Voronoi单元保证是非自交和凸的,这就足够了。转码一点(StackOverflow做不好数学) 由定义的非自交闭合多边形的质心 “n”个顶点(x0,y0), (x1,y1)。。。, (xn−1,yn−1) 是 点(Cx,Cy),由以下公式

给定voronoi边列表,如何在合理的时间内获得每个单元的质心?请注意,我只有voronoi图的边,但我必须确定质心

Voronoi图是根据Delaunay三角剖分构造的,因此三角剖分也可用于计算

谢谢

这应该行得通。它只需要输入分隔每个单元的点的坐标。由于Voronoi单元保证是非自交和凸的,这就足够了。转码一点(StackOverflow做不好数学)

由定义的非自交闭合多边形的质心 “n”个顶点(x0,y0), (x1,y1)。。。, (xn−1,yn−1) 是 点(Cx,Cy),由以下公式给出

Cx = 1/(6*A) * sum((x[i] + x[i+1]) * (x[i]*y[i+1] - x[i+1]*y[i])
Cy = 1/(6*A) * sum((y[i] + y[i+1]) * (x[i]*y[i+1] - x[i+1]*y[i])
A表示面积,计算为

A = 1/2 * sum(x[i]*y[i+1] - x[i+1]*y[i])
其中,所有这些
表示∑从i=0到i=n-1


首先确定特定单元的所有边,然后对该单元取x分量平均值,然后取y分量平均值,然后线性组合为单元的“重心”。然后对Voronoi图中的每个单元格做同样的处理。

你知道单元格的边,还是整个图表上的一组边?@hege_hegedus我不知道单元格的边我假设,如果你知道边,你知道它们的顶点?但是,复杂度将是O(n^2),有一种方法可以在O(n)或O(n log n)中实现?问题是,给定一个边列表,我无法获得每个多边形的顶点,但我必须在合理的时间内完成。我想知道是否存在使用Delaunay三角剖分来构造多边形或类似的东西的属性。@ValentinaRamirez:当您循环遍历所有边并找到站点和边中点之间的距离时,您可以从边列表中找到多边形的顶点。对列表进行升序排序,并将前两条边添加到中心位置的voronoi多边形中。@ValentinaRamirez:VD是最接近某个位置的边,然后是任何其他位置。@ValentinaRamirez您可以确定Delaunay和voronoi之间有很强的相关性:如果您有Delaunay,则在每两个Delaunay顶点之间都会找到voronoi边。此外,每个Delaunay顶点保证精确位于一个Voronoi单元内。这为您提供了一种简单的方法来定位每个V单元的Voronoi边,从而定位V单元的顶点。此方法适用于三角形。它不适用于具有4个或更多顶点的多边形。一个简单的反例是顶点为(1,0)、(2,0)、(3,1)、(0,1)的多边形。平均y值为
y=1/2
,但重心位于
y=7/12