在3D空间中给出三角形网格A.旋转并平移其所有点以生成新的网格B.
如何通过它们的顶点和面来确定A和B的相等性?
网格的拓扑结构并不重要,我只关心几何相等,即使它们的三角剖分发生变化,A和B也应该相等。它是 类似于三角形网格的变换方差问题,只考虑平移和旋转。
答案 0 :(得分:1)
要完成@ Spektre的回答,如果两个网格不完全相同,那就是至少有一对节点或边缘不完全重叠,你可以使用Hausdorff distance量化差异"两个网格之间。
答案 1 :(得分:0)
仅假设三角形面。
比较三角形的数量
如果不匹配则返回false
。
按大小排列三角形
如果两个网格之间的大小和顺序不匹配,则返回false。
在形状中找到不同的三角形
无论是最大面积还是最小面积,边长或其他。如果不存在那么你需要其他不同的功能,比如2个最远点等等......如果没有,那么你需要 RANSAC 。
对齐两个网格,以使匹配的三角形(或要素点)在两个网格中具有相同的位置。
比较匹配的顶点
所以找到最接近的顶点,将网格A形成网格B中的每个顶点,如果它们的距离越过某个阈值,则返回false
返回true
如果网格物体没有 3 的明显特征,则需要在A和B的所有三角形组合中使用强力循环,直到#4 返回true或全部组合测试或使用 RANSAC 。
有#3 的替代方法,例如找到质心以及最接近和最远的点,并将它们用作基础向量而不是三角形。这需要单个顶点或近似顶点组作为最小值和最大值。如果不像像立方体二十面体这样的对称网格,那么你就不幸了。
您可以使用网格中的其他要素(如颜色,纹理坐标......)来增强此功能。