我正在寻找一个.NET实现,从一组点构建Delaunay三角剖分。高效的Delaunay三角剖分
我已经测试了几个实现,但它们都只适用于少量点(高达20,000)。
我需要能够在合理的时间内处理500,000点的东西。
我正在寻找一个.NET实现,从一组点构建Delaunay三角剖分。高效的Delaunay三角剖分
我已经测试了几个实现,但它们都只适用于少量点(高达20,000)。
我需要能够在合理的时间内处理500,000点的东西。
这是JTS的封装 - 显然不支持3D - http://tsusiatsoftware.net/jts/jts-faq/jts-faq.html – JumpingJezza
有一个C#实现,可以帮助您生成Voronoy图以及Delaunay三角:http://www.codeproject.com/Articles/11275/Fortune-s-Voronoi-algorithm-implemented-in-C
我一直在寻找同样的事情,我发现了一个C#4.0库称为MIConvexHull:
“用于二维,三维和更高维度的凸包算法和库,该代码还可用于计算输入数据的Delaunay三角剖分和Voronoi网格,基准表明凸包代码和4和更高的尺寸三角测量代码与C++库CGAL提供的解决方案相比甚至更好。“
http://miconvexhull.codeplex.com/
更新月/ 2016:
这个库已经转移到Github上,似乎现在是在MIT许可下(一些的例子是GPL)发布。你可以在这里找到最新版本:
https://github.com/DesignEngrLab/MIConvexHull
的文件实际上是在源代码,它是简单易用。下面是Delaunay三角相关的源文件:
https://github.com/DesignEngrLab/MIConvexHull/blob/master/MIConvexHull/Triangulation.cs
如果你想看到从2012年的原始版本看看这里:
仍然有诀窍。它在几秒钟内设置了500K点图。 – OzrenTkalcecKrznaric
没有下载,没有文档。下载页面自豪地说,你不能下载它,而你需要解释专有的项目格式,猜你的方式,直到你找到一些源代码示例,并反向工程的说明。它是GPLv3,它排除了很多用途。不是一个好的图书馆! – Adam
如果你看看Github的回购,你会发现源代码被记录下来,并且它在MIT的授权下。 – Pablo
如果要构建2D Delaunay三角测量,请使用Triangle.Net。它是Shewchuk着名的Triangle程序的直接C#端口。
你真棒:)。我在寻找完全一样的东西:D – Flamy
看起来Triangle.Net是根据MIT许可证获得许可的,但显然它是一个三角形到C#的直接端口,Triangle未经MIT许可。我怀疑这是合法的。 –
我最终自己使用了Triangle.NET。将它用于Unity 5,只需修复两个小问题即可使.Net 4.5与Unity一起工作。 –
这很奇怪,它只能处理20000点;它只有O(n * log(n))运行时间 – Simone
您是否在http://www.s-hull.org/上试过C#实现?它使用的算法应该是快速的。 – CodesInChaos
我已经使用了s-hull.org算法。由于代码中出现的递归数量惊人,一旦达到100,000或更高点,性能就会显着降低。不知道如何击败它。我听说有另一个算法,它减少了代码的递归性,不确定它被称为什么(可能是De Wall或其他)。 – code4life