最快的Delaunay三角剖分库,可处理3D点集


26

如果有3D点,则哪个库可以最快执行包含数百万个集合的Delaunay三角剖分?还有GPU版本可用吗?从另一面看,具有相同点的voronoi镶嵌可以帮助(就性能而言)获得delaunay三角剖分吗?


您是否尝试过CGAL和TRIANGLE软件中的实现?两者都包括算法,这在理论上是最快的(尽管不是并行的)。O(nlog(n))
保罗

Jonathan Shewchuk还有一个2D流版本,如果您可以向流中添加一些额外的数据,则该版本可以处理可笑的大型数据集。你用这个做什么
维克多·刘

Answers:


13

为了计算三维Delaunay三角剖分(实际上是四面体化),TetGen是一个常用的库。

为了方便起见,这里有一个基准,用于计算从单位多维数据集中许多随机点的三面体化所需的时间。对于100,000点,旧的Pentium M需要4.5秒。

Mathematica图形

(这是通过Mathematica的TetGen接口完成的。我不知道它会引入多少开销。)

关于您的另一个问题:如果您已经具有Voronoi镶嵌,那么获得Delaunay三角剖分是一个相对简单的转换


10

gStar4D是用于GPU的快速,强大的3D Delaunay算法。它是使用CUDA实现的,并且可以在NVIDIA GPU上运行。

GPU-DT相似,该算法会首先构建3D数字Voronoi图。但是,在3D中,由于拓扑和几何问题,无法将其双重化为三角剖分。取而代之的是,gStar4D使用该图中的邻域信息来创建升为4D的恒星,并在GPU上高效地对其进行恒星展开。通过从中提取下部船体,可以获得3D Delaunay三角剖分。

最快的3D Delaunay实现是gDel3D,它是GPU-CPU混合算法。

它在GPU上执行并行插入和翻转。结果接近Delaunay。然后,它使用CPU上的保守星形展开方法修复此结果。

这两种方法都很健壮,因此它们可以处理任何种类的简并输入。如果您拥有足够大的GPU内存来容纳中间数据结构,它们可以处理数百万个点。

披露:我是这些算法和实现的作者:)


欢迎来到Ashci SciComp.Se!为了全面披露,您应该补充说明您是该软件的作者(请参见meta.scicomp.stackexchange.com/a/342/1804)。
Christian Clason

3

我建议尝试使用CGAL http://www.cgal.org/Manual/latest/doc_html/cgal_manual/Triangulation_3/Chapter_main.html#Section_39.2 ,如Paul上面建议的那样。CGAL是一个功能强大且得到良好支持的库,已经存在了一段时间。过去,即使在具有共线和共平面点的点集上,我也很乐意使用它。我不知道这是否是今天最快的,但是它无疑是一个很好的起点。

上面的链接还包括一些性能数字:它可以在大约10秒内完成一百万个积分,并在大约1.5分钟内完成一千万个积分。


另外,您能否解释为什么推荐它?你有经验吗?
Godric Seer 2013年

1

如果您已经具有一组点的voronoi图,那么计算Delaunay三角剖分将只需要O(n)。同样,给定一个voronoi点,您可以在O(1)中获得其Delaunay三角形。它们是双重的,因此请尽可能利用这种情况。


1

您可以尝试我正在开发的地理图软件:http ://alice.loria.fr/software/geogram/doc/html/index.html

它具有一个并行算法,可在不到19秒的时间内在Intel Core I7上计算1400万个顶点的DT(对于100万个顶点,大约需要0.8 s)


欢迎来到SciComp.SE!为了全面披露(并表明您知道您在说什么),您应该提到您是该软件的开发人员。
克里斯蒂安·克拉森
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.