给定一个voronoi边缘列表,如何在合理的时间内得到每个单元格的质心?注意我只有Voronoi图的边缘,但我必须识别质心。
在给定Delaunay三角剖分的情况下构造Voronoi图,以便三角测量也可用于计算。
谢谢!
答案 0 :(得分:2)
此algorithm from wikipedia应该有效。它只需要您输入分隔每个单元格的点的坐标。由于Voronoi单元保证是非自相交和凸起的,因此这应该足够了。转码(StackOverflow不能很好的数学运算)
由...定义的非自相交闭合多边形的质心 ''n''顶点(x 0 ,y 0 ), (x 1 ,y 1 ),..., (x n-1 ,y n-1 )是 点(C x ,C y ),由
给出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])
所有
的Σsum
表示从i = 0到i = n-1
答案 1 :(得分:0)
首先确定特定单元格的所有边缘,然后对于该单元格,将x分量平均分开,然后将y分量平均分开,然后该线性组合是质量中心'一个细胞。然后对Voronoi图中的每个单元格执行相同的操作。