我正在上图形编程课,我正在做书面作业,而不是编程,所以我希望这适合该站点。我有这个问题:
计算每个法线所指定三角形的单位法线以下顶点集(假设三角形朝向远离来源):
一年前,我学习了线性代数,然后我的老师说他不会教叉积,因为只有班上的计算机科学人才会需要它,并且在需要时会被覆盖(不是因为他们以为线性代数老师是这样做的),我检查了两打解释,这些解释全都困扰着我。
这个问题有三个不同的问题,所以如果有人可以引导我逐步解决一个不涉及大量变量和希腊字母的问题,将不胜感激。
此问题的A部分将这三个坐标作为三角形的点:[1, 1, 1]; [1, -1, 1]; [1, 0, -1]
。我尝试将不同的公式和解释组合在一起,得出法线向量为[4,0,0],但这似乎不太正确,因为我知道这个三角形不在y-z平面上。我唯一拥有的是公式:
(A x B) / | A x B |
我知道A和B是三角形的两个随机边,表示为一个向量,并通过减去A的V2和V1以及B的V3和V1来计算,但是我不明白它到底在告诉我做什么。
从http://www.opengl.org/wiki/Calculating_a_Surface_Normal引用
三角形的表面法线可以通过取该三角形两个边缘的矢量叉积来计算。在计算中使用的顶点顺序将影响法线的方向(绕着绕组缠绕面内或外)。
因此对于三角形p1, p2, p3
,如果向量A = p2 - p1
和向量B = p3 - p1
,则法线N = A x B
可以通过以下公式计算:
Nx = Ay * Bz - Az * By
Ny = Az * Bx - Ax * Bz
Nz = Ax * By - Ay * Bx