在这种情况下我应该什么时候进行边缘翻转? (对于Delaunay三角测量)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在这种情况下我应该什么时候进行边缘翻转? (对于Delaunay三角测量)相关的知识,希望对你有一定的参考价值。

问题如下:我必须改变三角测量$ t1 $ intro一个三角形$ t2 $的同一组点。

首先,我使用边缘翻转算法来获得将三角测量$ t1 $转换为点集的Delaunay三角剖分所需的翻转。

我为第二个做同样的事情。

现在的答案是将$ t1 $转换为$ t2 $的正确方法是将$ t1 $转换为Delaunay三角剖分,然后将$ t2 $的相反操作应用于Delaunay转换。

我发现的问题如下:我有四点。三个形成三角形(A,B,C),一个不包含在其中(D)。问题是可能存在甚至可能在三角形ABC的外接圆中找到第四点的情况。

更确切地说,四个点的行列式等于0。

determinant

我该如何决定是否应该翻转?翻盖是这种情况似乎没有做任何事情。

附:我知道A,B,C是否处于CCW或CW位置。

答案

正如你所说,翻转没有特别的结果。不过,您应该指定一个顺序,以便在这样的设置中,您的算法的结果也可以很好地定义。一个例子是使用顶点索引来应用排序,从而决定是否进行翻转。

另一答案

行列式等于零意味着四个点位于同一个圆上,否则它应该小于零。对于Delaunay三角剖分是唯一的,点集应该处于一般位置(在这种情况下,没有三个共线点,在同一圆上没有四个点。)如果这些点不在一般位置,则称它们是退化的。存在通过点的扰动将退化集转换为一般位置的策略。如果你在一个圆上有四个点,你有两个选择来对它们进行三角测量,对角线可以在两个点之间,在另外两个点之间的其他点之间。两种配置都会产生delaunay三角形,但如果在选择对角线的位置时不一致,最终会产生两种不同的三角形。简而言之,您将您的积分转换为一般位置(可能涉及)或您应用规则以一致的方式打破平局。

以上是关于在这种情况下我应该什么时候进行边缘翻转? (对于Delaunay三角测量)的主要内容,如果未能解决你的问题,请参考以下文章

在这种情况下我应该使用啥正确的数据类型?

在这种情况下我应该使用顶点着色器吗?

在这种情况下我应该使用导航控制器吗?

在这种情况下我应该使用左连接吗?

Angular 指令:在这种情况下我应该使用结构还是属性?

在这种情况下我应该使用 delete 还是 delete[] ? [复制]