优化德劳奈三角测量算法
Optimising Delaunay triangulation algorithm
亲爱的社区成员,
我最近一直在研究 cpp 中的 Delaunay 三角测量实现。虽然我有有效的算法..它非常慢(大约 ~16 秒内计算出 100 个对象)。
算法基于蛮力方法。给定一组有限的点:
- 我遍历每个点三次,检查是否可以
从这些点创建一个三角形; - 从这三个点开始,我正在创建圆圈,通过这些点;
- 我第四次遍历整组点,检查是否创建了圆圈,包含与这三个点不同的任何点 上述。
- 如果圆内没有其他点,我假设从这三个点创建的三角形是有效的。
就像我提到的,算法是这里描述的Delaunay三角测量的直接实现:https://en.wikipedia.org/wiki/Delaunay_triangulation。它"完美无缺"地工作,但速度很慢。
关于逻辑的任何想法/建议可以加快速度(如果可能的话,无需完全改变逻辑)?
谢谢大家的快速反馈。
我做了一些额外的研究,可悲的是,似乎降低时间复杂度的最佳方法是完全重写现有算法。
对于可能遇到类似问题的其他人,此处介绍了示例方法:https://people.eecs.berkeley.edu/~jrs/274/proj.html
相关文章:
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 在C++中测量postscript字体宽度
- 基于ELO的团队匹配算法
- C++选择排序算法中的逻辑错误
- 有没有办法将谓词中的元素偏移量传递给 std 算法?
- C++A*算法并不总是在路径中具有目标节点
- 排序算法c++
- 构建可组合有向图(扫描仪生成器的汤普森构造算法)
- 有没有一种方法可以测量c++程序的运行时内存使用情况
- 算法问题:查找从堆栈中弹出的所有序列
- 下面是排序算法O(n)吗
- KMP算法和LPS表构造的运行时间
- 为什么我的排序算法会更改数组值
- 求最大元素位置的分治算法
- 具有非整数边容量的最大流量的Dinic算法
- 到连接组件算法的问题(递归)
- 优化德劳奈三角测量算法
- 通过计数步骤来测量算法的运行时间时遇到问题
- 测量在算法库中对100万个0到1之间的浮点数进行排序的时间
- 为算法测量每字节的周期