如何判断2个三角网格的平等性?

时间:2017-04-26 07:18:49

标签: algorithm graphics geometry computational-geometry mesh

在3D空间中给出三角形网格A.旋转并平移其所有点以生成新的网格B.

如何通过它们的顶点和面来确定A和B的相等性?

网格的拓扑结构并不重要,我只关心几何相等,即使它们的三角剖分发生变化,A和B也应该相等。它是 类似于三角形网格的变换方差问题,只考虑平移和旋转。

2 个答案:

答案 0 :(得分:1)

要完成@ Spektre的回答,如果两个网格不完全相同,那就是至少有一对节点或边缘不完全重叠,你可以使用Hausdorff distance量化差异"两个网格之间。

答案 1 :(得分:0)

仅假设三角形面。

  1. 比较三角形的数量

    如果不匹配则返回false

  2. 按大小排列三角形

    如果两个网格之间的大小和顺序不匹配,则返回false。

  3. 在形状中找到不同的三角形

    无论是最大面积还是最小面积,边长或其他。如果不存在那么你需要其他不同的功能,比如2个最远点等等......如果没有,那么你需要 RANSAC

    对齐两个网格,以使匹配的三角形(或要素点)在两个网格中具有相同的位置。

  4. 比较匹配的顶点

    所以找到最接近的顶点,将网格A形成网格B中的每个顶点,如果它们的距离越过某个阈值,则返回false

  5. 返回true

  6. 如果网格物体没有 3 的明显特征,则需要在A和B的所有三角形组合中使用强力循环,直到#4 返回true或全部组合测试或使用 RANSAC

    #3 的替代方法,例如找到质心以及最接近和最远的点,并将它们用作基础向量而不是三角形。这需要单个顶点或近似顶点组作为最小值和最大值。如果不像像立方体二十面体这样的对称网格,那么你就不幸了。

    您可以使用网格中的其他要素(如颜色,纹理坐标......)来增强此功能。