我正在寻找一种.NET实现,它可以从一组点构建Delaunay三角剖分。
我已经测试了几个实现,但它们只能用于少量点(最多20,000个)。
我需要能够在合理的时间内处理500,000点的东西。
答案 0 :(得分:17)
如果要构建2D Delaunay三角剖分,请使用 Triangle.Net 。它是Shewchuk着名的Triangle计划的直接C#端口。
答案 1 :(得分:13)
我一直在找同样的东西,我发现了一个名为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年的原始版本。请点击此处:
答案 2 :(得分:1)
您是否尝试过NetTopologySuite
答案 3 :(得分:1)
有一个C#实现可以帮助您生成Voronoi图以及Delaunay三角剖分:http://www.codeproject.com/Articles/11275/Fortune-s-Voronoi-algorithm-implemented-in-C
答案 4 :(得分:1)
有一个名为G#的解决方案。
它有Delaunay三角测量(也有断裂线)。从他们网站上的性能图表中,您应该可以在大约30秒内对500k点进行三角测量。