是否有可以计算3D平面(平行四边形)的Voronoi图的代码/库?我检查了Qhull,它似乎只能用点,在它的例子中Voro ++适用于不同大小的球体,但我找不到任何多边形。
在此图像(sample planes in 3d)中,平行四边形是3D,因为它们具有厚度,但在这种情况下,厚度将为零。!
答案 0 :(得分:3)
Voronoi细胞不是平行四边形。您发布的图片让您感到困惑。 Voronoi单元边界是超平面的一部分,它们将各个装置分开。
查看此网站讨论并可视化3D voronoi图表:
http://www.wblut.com/2009/04/28/ooh-ooh-ooh-3d-voronoi/
为了计算voronoi单元,常见的方法是首先构建Delaunay三角剖分。在2D中有许多算法可以做到这一点,而在3D中它会变得更加复杂。但是你仍然可以找到一些东西。 qhull
可能是正确的方法。
当你有Delaunay三角剖分时,计算每个四边形的中心。这些是您需要绘制的多边形的角。对于Delaunay三角剖分中的任何边,绘制连接相邻中心的多边形。这应该是超平面。 现在你需要做的就是绘制超平面作为凸包的一部分。为此,您需要继续从内部到无限外部的超平面。
我强烈建议先从2d开始。获得2D的工作代码后,请参阅如何在3D中执行相同操作。如果你想要它很快,这在2D中已经相当棘手了。
这是来自维基百科的图形,可视化Delaunay和Voronoi图:
黑线是Delaunay三角测量。棕色线与此正交,形成Voronoi图。 Delaunay三角剖分可用于各种很酷的可视化事物:计算凸包,voronoi图和alpha形状:http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Alpha_shapes_3/Chapter_main.html
答案 1 :(得分:1)
Bowyer-Watson通常是推荐的算法。 大多数论文/算法的问题在于它们没有解决当点在空间中彼此接近时产生的棘手情况(因此四面体很薄),当voronoi单元最终应该是平坦的并且当多个点开启时同一个球体。再加上处理不准确的数学和舍入的数字复杂性,你自己有一个无休止的调试配方。 我的建议是,如果可以接受,请先过滤数据。否则,您将最终在算法中编写大量特殊情况。
不久前,还有一篇日本报纸声称采用不同的方法来解决这些情况,从delaunay三角测量开始并从中制作voronoi单元,但它也有缺陷。 成为一名研究人员,提出广泛的算法并让研究助理担心细节一定很好......