如何解决Delaunay 三角形中的额外边
请看下面的附图。几乎没有多余的边,并且在添加每个点时它们似乎满足“点不在外接圆内”属性。我已经从两个屏幕截图中删除了超级三角形。
我是否需要重新运行循环以消除坏三角形?但这不是鲍耶-沃森算法所说的。有人可以帮助了解这里可能有什么问题吗?
编辑:这些是第一个屏幕截图的处理顺序中的顶点。
(1500,1500)
(3300,1500)
(2800,2800)
(1750,2600)
(2350,2900)
更新 1:
在重新填充多边形时,我将新点与所有边连接起来。这就是为什么会出现额外的边缘,但我还不知道如何选择和忽略单个边缘点。
(抱歉,我不能在这里发布我的代码。任何建议都会非常有帮助。)
解决方法
维基百科关于 Bowyer-Watson-Algorithm 的文章指出:
Bowyer–Watson 算法是一种增量算法。它的工作原理是一次一个地将点添加到所需点子集的有效 Delaunay 三角剖分中。每次插入后,外接圆包含新点的任何三角形都将被删除,留下一个星形多边形孔,然后使用新点重新三角化。
换句话说,在添加一个新点并删除所有有问题的边后,您只需将它连接到那些删除的三角形形成的孔的角上,而不是图中的每个点。这样边永远不会相交,这与您的三个示例不同。
这篇文章还对算法进行了很好的pseudo-code implementation,也许仔细研究一下也会对您有所帮助。
,使用您提供的坐标,我得到如下所示的 Delaunay 三角剖分。根据我对 Bowyer-Watson 算法的经验,我猜你的问题是你没有在过程的“挖洞”阶段去除边缘(“经验”我的意思是“我犯过的错误过去制造”)。当然,还有很多其他事情可能会出错。
我从文档 Tinfour Algorithms and Data Elements 的第 20 页开始,就我自己为实现 Bowyer-Watson 所做的努力做了一些笔记。也许他们会给你一些你可以使用的想法。
祝你的项目好运。祝你成功。
加里
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。