我有一个 2d 盒子的 delaunay 三角剖分,里面有一个翼型。如果我通过将每个边减半将网格中的每个三角形细分为 4 个三角形来均匀地细化这个网格,那么生成的网格仍然是 delaunay 吗?我一直假设是这样,但我没有证据证明是这样的。
delaunay 网格的类似细分仍然是 delaunay 吗?
如果网格中的所有其他顶点都远离长边,则在 Delaunay 三角剖分中可以有一个接近 180° 的钝角三角形。但是,在细分之后,钝角顶点可能位于中心子三角形的外接圆内。
我希望我没有忽略某些东西,但很明显,如此精致的网格不会是 Delaunay。
编辑:原来我误解了这个过程,你实际上是通过修剪曲线/边缘翻转/等效生成一个新的网格。
本质上,您正在将顶点添加到三角形每条边的中点;这些中点位于原始三角形的外接圆内。这违反了 Delaunay 条件。您还需要重新三角剖分并删除原始三角形的一些边缘以使其成为 Delaunay。这不是一个简单的操作,将花费 O(n) 时间。
即便如此,这不是 Delaunay 细化的首选策略 - 大多数方法是在外心处添加顶点并从那里开始。我不知道这两种方法的比较优点,可能值得研究。您可能喜欢阅读:https ://www.cs.cmu.edu/~quake-papers/delaunay-refinement.pdf
此外,由于您将所有边减半,而不是选择应减半的边,您很可能会遇到“瘦三角形”的问题。它们的一个边比另一个大得多,并且对 Delaunay 三角剖分提出了问题。如果边缘被选择性地减半,例如使用Ruppert 算法,那么您可以将瘦三角形转换为更小、更瘦的三角形。另一方面,如果将所有边缘减半,则可以保留三角形的瘦特性。
这很容易在数学上显示出来;将每条边减半会产生四个三角形,其中三个与原始三角形共享一个顶点。根据 SAS 标准,这三个三角形中的每一个都与原始三角形相似(两条边之间的一个公共角度具有相同的比率。在这种情况下,比率将为 1:2)。因此,您正在创建同样细的三角形,其中三个。因此,如果您的原始网格有 x 个质量较差(即瘦超过某个阈值)元素,那么您现在将有至少 3 个质量较差的元素,这自然是不可取的。