维基百科上关于d维Delaunay三角剖分的文章将其作为三角剖分唯一性的先决条件:
已知如果p是一般位置上的一组点,则p存在唯一的Delaunay三角测量;也就是说,P的仿射外壳是d维的,并且P中没有一组d+2点位于其内部不与P相交的球的边界上。
现在我已经编写了自己的Delaunay库,我希望能够验证给定点的三角测量的唯一性。通过计算集合的秩可以很容易地检查仿射外壳的维数。然而,第二部分要困难得多。
我如何检查d+2个点是否位于不与集合相交的球的边界上,并且每个点上都没有一些巨大的环?或者,是否有另一种检查唯一性的方法?
我在Numpy中使用Python,但这更多的是一个理论问题,因此语言无关紧要。谢谢
对于三角测量的每个最大维度的单纯形,有d+1
点,就有d+1
邻居单纯形。两个相邻单纯形共享d
点(自身形成单纯形(。由于我不知道你是否熟悉在维度d
中的工作,让我们来看看维度2和3…
- 在维度2中,最大维度的单纯形是三角形(维度2的单纯形(,并且两个相邻三角形共享边
- 在维数3中,最大维数的单纯形是四面体(维数3的单纯形(,并且两个相邻四面体共享一个三角形面(维数2的单纯形(
无论如何,给定维度d
中的Delaunay三角测量,如果您想检查是否有唯一的三角测量,请迭代维度d-1
的单形(3D中的三角形或2D中的边(,并取两个入射单形(三维中的两个相邻四面体或2D中相邻三角形(。这给你d+2
分。由于三角测量是Delaunay,您知道这些d+2
点的in_sphere
谓词的结果为正或为空。如果在维度d
的单纯形迭代过程中,d+2
点的所有in_sphere
谓词的结果都是严格正的,那么你的三角剖分是唯一的,否则它是退化的和非唯一的。
看看Olivier Devillers和Sylvain Pion的论文《Delaunay三角剖分的高效精确几何谓词》:引言给出了Delaunay三角形的理论基础和in_sphere
谓词。它还为以精确而有效的方式实现orientation
和in_sphere
谓词提供了线索。这可能有助于你实施Delaunay三角测量。
您已经有了Delaunay三角测量,即在外球面内没有点。现在,例如,对于2D情况,只需检查是否可以翻转任何边,使其仍然是Delaunay三角测量。如果没有,你有一个独特的解决方案。注意双精度算术的舍入误差。