【问题标题】:constrained Delaunay Triangulation vs Ear-clipping约束 Delaunay 三角测量与剪耳法
【发布时间】:2014-05-16 09:13:19
【问题描述】:

我不是三角测量问题的专家。所以我决定问问。 :)
有一个简单的剪耳算法,其复杂度为 O(n^2)
并且有约束的 Delaunay 算法,其复杂度为 O(n * log n)

所以问题是。 Delaunay 算法比耳剪更快吗?我问,因为我明白,如果对于 Delaunay 来说 n 时间明显更大,它毕竟可能会更慢。

附: http://code.google.com/p/poly2tri/ - 德劳内, http://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf - 耳夹

P.P.S 顺便问一下,受约束的 Delaunay 是最快的吗?

【问题讨论】:

  • O(n) 不会告诉您它的工作速度,它会告诉您每个下一个元素的速度减慢的速度。在 100 个以下的顶点中,两者的速度可能相同,但 Delaunay 生成的三角形更加均匀,从长远来看,这可能是有益的。
  • 为什么均匀的三角形是一个优点?那么,假设 1000 个元素,我想这是形状的实际最大值 :))我担心,因为我在 Delaunay 实现中看到了 atan(arctangens)。这非常慢。
  • 这在很大程度上取决于您将使用什么结果。如果您需要选择最快 - 您需要使用真实数据在您的环境中进行分析。否则都是理论上的。

标签: triangulation delaunay


【解决方案1】:

Sweepline Delaunay 算法可以是 O(n*log(n)) 而不是 O(log(n))。

在点数较少的情况下,最坏情况 O(n^2) 的实现可能比 O(n*log(n)) 实现更快。

一个原因可能是 O(n*log(n)) 算法可能必须使用分层数据结构。不断添加和删除点以及平衡树的成本可能会很高,并且会使算法运行速度变慢。

【讨论】:

    【解决方案2】:

    在现实世界的设置中,您可以观察 Delaunay 三角剖分的线性运行时间。至少对于 C++,有一些库可以每秒对 >1 个 mio 点进行三角测量:

    www.cgal.org

    http://www.geom.at/fade2d/html/

    http://www.cs.cmu.edu/~quake/triangle.html

    【讨论】:

      【解决方案3】:

      您可以尝试提升点并将提升点的下凸包投影回二维平面。结果应该给出 delaunay 三角剖分:https://cs.stackexchange.com/questions/2400/brute-force-delaunay-triangulation-algorithm-complexity

      【讨论】:

        猜你喜欢
        • 2013-12-06
        • 2012-07-24
        • 1970-01-01
        • 2012-04-06
        • 1970-01-01
        • 1970-01-01
        • 2014-02-23
        • 1970-01-01
        • 2011-07-15
        相关资源
        最近更新 更多