algorithm - 分而治之 Delaunay 三角剖分 - 合并时获得第一个(又名“基础”)边缘
问题描述
我正在尝试实现此处找到的 Delaunay Triangulation 的分而治之算法,但我遇到了问题。合并两个集合时,我应该找到它们之间的最底部边缘,它不会与图中已经存在的任何边缘相交。
我的第一个问题是,最底层根本没有定义,也不明显。我读过很多文本,比如说,可以安全地使用两组中 y 值最低的顶点之间的边,但事实并非如此,如下图所示:
我很确定,这些点中至少有一个必须是该边缘的一部分,但无论如何我都无法证明。
我不想对照图表检查每一对边,因为对于更大的数据集,这可能需要太长时间。
所以我正在寻找一种找到这个基础边缘的方法。任何帮助,将不胜感激。
解决方案
我很确定,我刚刚想通了。在获得具有最低 y 值的顶点后,我遍历了这两个集合并寻找两个顶点,它们位于由先前选择的顶点形成的线(或线上)下方,并且与它的距离最大。如果两点与直线的距离相同,我在左边的情况下取 x 值最大的那个,在右边的情况下取最小的那个。
这似乎工作得很好。这是因为我注意到,为了发生交叉,需要在该线下方有一个点,即与我们的基础边相交的边的一部分。这样,我想我找到了与这两个集合相切的最低边,这意味着如果我旋转这个集合,所以这条线是水平的,它下面不存在任何点。
推荐阅读
- reactjs - 尝试触发 Mobx 操作会导致未捕获类型错误
- markdown - 如何在 GitHub Gist 中制作样式化的 Markdown 警告框?
- c# - 搜索列表中的元素
- python - 使用python生成带有传递参数的文件
- google-api - 谷歌凭据实际 json 而不是包含 json 的文件的路径
- c - 我试图在 c 中的结构中获取输入时出错,而 fgets() 没有解决它
- c# - 为 WPF 应用程序创建通用设置
- python-3.x - Python 初学者:如何使文本 #1 看起来像文本 #2
- tensorflow - 多层神经网络 TensorFlow
- python-3.x - 无法访问 jarfile 'tabula-1.0.2-jar-with-dependencies.jar'