2

我有三角形集合,它定义了我的 3D 形状的网格表面,我想修复每个三角形的法线以指向异形。

我正在尝试以下(伪):


1. 定义第一个三角形法线方向是正确的方向
2. 使用这样的 DFS 遍历网格:
3. 三角形 = 第一个三角形
4. foreach neigbour in triangle.getNeighbours
5. 如果邻居和三角形之间的角度大于 180 做邻居.flip()
6. 三角形 = 邻居
7. 如果邻居已经选择然后继续下一个邻居
8. 继续递归到 4.

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

你能帮我理解如何修复算法吗?

4

1 回答 1

6

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

于 2011-08-27T18:14:15.310 回答