Algorithm 尝试修复三维网格法线

Algorithm 尝试修复三维网格法线,algorithm,graphics,mesh,depth-first-search,normals,Algorithm,Graphics,Mesh,Depth First Search,Normals,我有一个三角形集合,用于定义我的3D形状的网格曲面, 我想修正每个三角形的法线,使其指向外型 我尝试了以下(伪): 1。定义第一个三角形法线方向为右方向 二,。使用类似这样的DFS遍历网格: 三,。三角形=第一个三角形 四,。foreach neigbour in triangle.getNeighbors 五,。若邻居和三角形之间的角度大于180,则执行邻居翻转() 六,。三角形=邻居 七,。如果已选择邻居,则继续选择下一个邻居 八,。继续递归到4 但算法中的第5步不起作用,因为我不知道角度是

我有一个三角形集合,用于定义我的3D形状的网格曲面, 我想修正每个三角形的法线,使其指向外型

我尝试了以下(伪):


1。定义第一个三角形法线方向为右方向
二,。使用类似这样的DFS遍历网格:
三,。三角形=第一个三角形
四,。foreach neigbour in triangle.getNeighbors
五,。若邻居和三角形之间的角度大于180,则执行邻居翻转()
六,。三角形=邻居
七,。如果已选择邻居,则继续选择下一个邻居
八,。继续递归到4

但算法中的第5步不起作用,因为我不知道角度是否大于180,因为我需要知道开关方向(顺时针或逆时针)


你能帮我了解一下如何修正算法吗?

不需要计算邻域之间的角度。如果三角形
ABC
是定向的(
A->B->C
),并且如果边上的邻居
AB
是三角形
ABD
,则它必须在边上具有相反的定向
AB
。也就是说,相邻三角形必须定向
B->A->D

它解决了所有情况,这种方法有问题,请访问我的问题并指导我现在做什么。。。谢谢