我有一个三角形集合来定义我的3D形状的网格表面,我想固定每个三角形的法线,使其指向外形。
我正在尝试以下(伪):
1。定义第一个三角形法线方向是右方向
2。使用DFS检查网格,像这样:
3。三角形=第一个三角形
4。求三角形中的每个邻居
5。如果邻居和三角形之间的夹角大于180,执行neighbor。flip()
6。三角形=邻居
7。如果邻居已经选择,那么继续下一个邻居
8。继续递归到4.
但是算法中的第5步不起作用,因为我不知道角度是否大于180,因为我需要知道在哪个方向(顺时针或逆时针)。
你能帮我理解如何修复算法吗?
不需要计算邻角。如果三角形ABC
的取向是(A->B->C
),如果边AB
的邻居是三角形ABD
,那么它在边AB
上必须有相反的取向。这意味着,相邻的三角形必须是B->A->D
。