3

Is there a code/library that can calculate a Voronoi diagram for planes (parallelograms) in 3D? I checked Qhull and it seems it can only work with points, in its examples Voro++ works with different size of spheres but I couldn't find anything for polygons.

In this image (sample planes in 3d) the parallelograms are 3D since they have a thickness, but in this case the thickness will be zero.!

4

2 回答 2

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 中已经非常棘手。

这是来自 Wikipedia 的图形,显示了 Delaunay 和 Voronoi 图: 2D 中的 Delaunay 和 Voronoi

黑线是德劳内三角剖分。棕色线与此正交,并形成 Voronoi 图。Delaunay 三角剖分可用于各种很酷的可视化事物:计算凸包、voronoi 图和 alpha 形状:http ://www.cgal.org/Manual/latest/doc_html/cgal_manual/Alpha_shapes_3/Chapter_main.html

于 2012-02-11T12:14:01.190 回答
1

Bowyer-Watson 通常是推荐的算法。大多数论文/算法的问题在于,它们没有解决当点在空间中彼此靠近(因此四面体很薄)时出现的棘手情况,当 voronoi 单元最终应该大部分是平坦的并且当多个点打开时同一个球体。再加上处理不准确的数学和四舍五入的数字复杂性,您就有了无尽调试的秘诀。我的建议是,如果可以接受,请先过滤数据。否则,您最终将在算法中编写大量特殊情况。

不久前,还有一篇日本论文声称有一种不同的方法来解决这些情况,从 delaunay 三角剖分开始,从中计算出 voronoi 细胞,但它也存在缺陷。成为一名研究人员一定很好,提出了广泛的算法,让研究助理担心细节......

于 2012-06-04T15:07:02.627 回答