首先,我是CGAL的新手,但是很多用C ++编程。我想用CGAL构建球体上点的Voronoi图。我自己实施了一项研究,但数据结构不是很通用,我想使用更强大的工业库,如CGAL。从CGAL的文档来看,似乎我们需要使用3D Delaunay三角剖分结合凸壳。另外,我找到了一篇论文Robust and Efficient Delaunay Triangulations of Points on Or Close to a Sphere
,它以CGAL为基础,但我找不到它的代码。
所以任何人都可以提供一个关于如何在CGAL中执行此操作的示例? CGAL有没有计划用更有效的算法直接支持球形Delaunay和Voronoi?
提前致谢!
答案 0 :(得分:7)
您可以通过首先计算凸包[1]来计算球体上点的Voronoi图,然后计算平面法线。将每个法线乘以球体的半径,并得到Voronoi顶点(根据[2])。
答案 1 :(得分:0)
你可以简单地使用libdts2(一个CGAL适配器用于强大的球形Delaunay三角剖分;在https://stackoverflow.com/a/45240506/4994003中描述)
由于它基于增量构造,因此提供了点定位。 而且,它相当快,不会受到数值精度问题的影响。