优化德劳奈三角测量算法

Optimising Delaunay triangulation algorithm

本文关键字:测量 算法 三角 优化      更新时间:2023-10-16

亲爱的社区成员,

我最近一直在研究 cpp 中的 Delaunay 三角测量实现。虽然我有有效的算法..它非常慢(大约 ~16 秒内计算出 100 个对象)。

算法基于蛮力方法。给定一组有限的点:

  • 我遍历每个点三次,检查是否可以
    从这些点创建一个三角形;
  • 从这三个点开始,我正在创建圆圈,通过这些点;
  • 我第四次遍历整组点,检查是否创建了圆圈,包含与这三个点不同的任何点 上述。
  • 如果圆内没有其他点,我假设从这三个点创建的三角形是有效的。

就像我提到的,算法是这里描述的Delaunay三角测量的直接实现:https://en.wikipedia.org/wiki/Delaunay_triangulation。它"完美无缺"地工作,但速度很慢。

关于逻辑的任何想法/建议可以加快速度(如果可能的话,无需完全改变逻辑)?

谢谢大家的快速反馈。

我做了一些额外的研究,可悲的是,似乎降低时间复杂度的最佳方法是完全重写现有算法。

对于可能遇到类似问题的其他人,此处介绍了示例方法:https://people.eecs.berkeley.edu/~jrs/274/proj.html