计算3D空间中单个三角形的法线

use*_*865 7 3d geometry

我是一个图形编程课,我正在写作业,而不是编程,所以我希望这适合这个网站.我有这个问题:

计算由以下每个顶点集指定的三角形的单位法线(假设三角形背向原点):

一年前我接受了线性代数,然后我的老师说他不会教交叉产品,因为只有班上的计算机科学人员需要它,并且在需要时会被覆盖(这不是因为他们假设线性代数老师做了它,我已经检查了二十几个解释,它们都在我脑海中.

这个问题有三个不同的问题,所以如果有人可以指导我如何解决一个不涉及大量变量和希腊字母的单一问题,我将不胜感激.

这个问题的A部分将这三个坐标作为三角形的点:[1, 1, 1]; [1, -1, 1]; [1, 0, -1].我试着拼凑不同的公式和解释,我得到法线向量是[4,0,0],但这似乎不正确,因为我知道这个三角形不在yz平面上.我唯一的另一件事是配方:

(A x B) / | A x B |
Run Code Online (Sandbox Code Playgroud)

我知道A和B是三角形的两个随机边,表示为矢量,通过减去V2和V1分别为A和V3和V1分别为B计算,但我不明白究竟是什么告诉我这样做.

Kro*_*ica 14

引自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
Run Code Online (Sandbox Code Playgroud)

  • @AndrésOviedo 这样的三角形是退化的 - 它的所有点都在线上,它没有表面积,也没有面方向。 (3认同)