尝试修复3D网格法线问题

3
我有一个三角形集合,定义了我的3D形状的网格表面,我想要固定每个三角形的法向量指向外部。
我尝试以下伪代码: 1. 定义第一个三角形法线方向为右方向 2. 遍历网格,使用DFS方式: 3. 三角形 = 第一个三角形 4. 对于每个邻居 in 三角形.getNeighbours 5. 如果邻居和三角形之间的角度大于180,则邻居.flip() 6. 三角形 = 邻居 7. 如果邻居已经被选择,则继续下一个邻居 8. 递归到步骤4
但是,算法中的步骤5不起作用,因为无法确定角度是否大于180度,因为需要确定顺时针或逆时针方向。
请帮助我理解如何修复该算法。
1个回答

7

无需计算相邻角度。如果三角形 ABC 是有定向的(A->B->C),并且如果边缘 AB 上的邻居是三角形 ABD,那么它在边缘 AB 上的对面方向必须相反。也就是说,相邻的三角形必须定向为 B->A->D


它正在解决所有的情况,但这种方法有问题,请访问我的问题链接:https://dev59.com/s3PYa4cB1Zd3GeqPfiq_ 并指导我接下来该怎么做...谢谢。 - maxpayne

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接