我正在寻找一个 .NET 实现,它可以从一组点构建 Delaunay 三角剖分。
我已经测试了几个实现,但它们都只适用于少量点(最多 20,000)。
我需要可以在合理的时间内处理 500,000 点的东西。
如果要构建 2D Delaunay 三角剖分,请使用 Triangle.Net。它是 Shewchuk 著名的 Triangle 程序的直接 C# 移植。
我正在寻找同样的东西,我发现了一个名为 MIConvexHull 的 C# 4.0 库:
“适用于 2D、3D 及更高维度的凸包算法和库 方面。该代码还可用于计算 Delaunay 输入数据的三角剖分和 Voronoi 网格。基准测试 表示凸包代码和4维及更高维 三角测量代码与以下提供的解决方案相当或更好 C++ 库 CGAL。”
http://miconvexhull.codeplex.com/
2016 年 9 月更新:
这个库已经转移到了 Github,看起来它现在是在 MIT 许可证下发布的(一些示例是 GPL)。您可以在这里找到最新版本:
https://github.com/DesignEngrLab/MIConvexHull
文档其实就在源码里,使用起来很简单。这是 Delaunay 三角剖分的相关源文件:
https://github.com/DesignEngrLab/MIConvexHull/blob/master/MIConvexHull/Triangulation.cs
如果您想查看 2012 年的原始版本。请看这里:
您尝试过NetTopologySuite
有一个 C# 实现可以帮助您生成 Voronoy 图以及 Delaunay 三角剖分:http://www.codeproject.com/Articles/11275/Fortune-s-Voronoi-algorithm-implemented-in-C
有一个解决方案称为G#。
它具有 Delaunay 三角剖分(也带有断裂线)。从他们网站上的性能图表来看,您应该能够在大约 30 秒内对 500k 点进行三角测量。