对于背面剔除算法我需要找到每个多边形的法向量。
给出3分,我想找到一架飞机的法线。所以我知道怎么做:
在飞机上找到2个向量
找到他们的交叉向量 - 这将给我正常的向量(a,b,c)
我的问题是,当找到2个向量时,点的顺序是否重要? 例如:给出3分:p1(0,0,0),p2(5,0,0),p3(10,10,10)
如果我选择矢量
,这是否重要?V1=(p2-p1)=(5, 0, 0)-(0, 0, 0)=(5, 0, 0)
V2=(p3-p1)=(10,10,10)-(0, 0, 0)=(10, 10, 10)
或
v1=(p1-p2)
v2=(p1-p3)
答案 0 :(得分:1)
你的多边形有顶点a
,b
,c
。
你计算向量:
v1 = a-c
v2 = b-c
这会将a
和b
引用至c
。如果您决定将b和c引用到a,那将是相同的。
计算叉积v1*v2
(这给出了垂直于v1和v2的向量)并将其标准化。
如果你确实计算了(a-b)(a-c)而不是(b-a)(c-a),那么结果矢量将被镜像(即指向错误的方向)。
OT:使用/ http://en.wikipedia.org/wiki/Fast_inverse_square_root进行标准化,该{{3}}完全是为计算面法线而开发的