我不是三角测量问题的专家。所以我决定问。 :)
有一个简单的Ear Clipping算法,其复杂度为O(n ^ 2)
并且存在约束的Delaunay算法,其具有复杂度O(n * log n)
所以问题是。 Delaunay algoritm比Ear Clipping快吗?我问,因为我明白,如果Delaunay的n时间明显更大,那么毕竟它可能会更慢。
P.S。 http://code.google.com/p/poly2tri/ - 德劳内, http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf - 耳朵剪辑
P.P.S那么受约束的Delaunay是最快的吗?
答案 0 :(得分:0)
Sweepline Delaunay算法可以是O(n * log(n))而不是O(log(n))。
使用少量的点,具有最坏情况O(n ^ 2)的实现可以比O(n * log(n))实现更快。
一个原因可能是O(n * log(n))算法可能必须使用分层数据结构。不断添加和删除点并平衡树可能代价高昂,并使算法运行速度变慢。
答案 1 :(得分:0)
在实际环境中,您可以观察Delaunay三角测量的线性运行时间。至少对于C ++来说,有些库可以对每秒> 1 mio点进行三角测量:
答案 2 :(得分:0)
您可以尝试提升点并将提升点的下凸壳向后投射到2d平面。结果应该给出delaunay三角测量:https://cs.stackexchange.com/questions/2400/brute-force-delaunay-triangulation-algorithm-complexity。