我在图形编程课程中,我正在写作业,而不是编程,所以我希望这适合这个网站。我有这个问题:
计算每个指定的三角形的单位法线 跟随顶点集(假设三角形背对着 原点):
我在一年前接受了线性代数,然后我的老师说他不会教交叉产品,因为只有班上的计算机科学人员需要它,并且在需要时会被覆盖(它不是因为他们认为线性代数老师做了这件事,而且我已经检查了二十几个解释,他们一直都在我的头上。
这个问题有三个不同的问题,所以如果有人可以指导我如何解决一个不涉及大量变量和希腊字母的单一问题,那将非常感激。
此问题的A部分将这三个坐标作为三角形的点:[1, 1, 1]; [1, -1, 1]; [1, 0, -1]
。我试着拼凑不同的公式和解释,我得到了法线向量是[4,0,0],但这似乎并不正确,因为我知道这个三角形不在y-z平面上。我唯一的另一件事是公式:
(A x B) / | A x B |
我知道A和B是三角形的两个随机边,表示为矢量,通过减去V2和V1分别为A和V3以及V1减去B来计算,但我不明白究竟是什么告诉我做。
答案 0 :(得分:11)
引自http://www.opengl.org/wiki/Calculating_a_Surface_Normal
三角形的曲面法线可以通过取该三角形的两条边的矢量叉积来计算。计算中使用的顶点的顺序将影响法线的方向(在w.r.t.中缠绕的面内或外面)。
对于三角形p1, p2, p3
,如果向量U = p2 - p1
和向量V = p3 - p1
则为正常N = U x V
并且可以通过以下方式计算:
Nx = UyVz - UzVy
Ny = UzVx - UxVz
Nz = UxVy - UyVx