12

我在上图形编程课,我正在做书面作业,而不是编程,所以我希望这适合这个网站。我有这个问题:

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

一年多前我学了线性代数,然后我的老师说他不会教叉积,因为只有班上的计算机科学人才需要它,并且在他们需要时会覆盖它(这不是因为他们假设线性代数老师做到了),我检查了两打解释,它们都在我脑海中。

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

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

(A x B) / | A x B |

我知道 A 和 B 是表示为矢量的三角形的两个随机边,并通过减去 A 的 V2 和 V1 以及 B 的 V3 和 V1 来计算,但我不明白它到底告诉我要做什么。

4

1 回答 1

21

引用自https://www.khronos.org/opengl/wiki/Calculating_a_Surface_Normal

可以通过取该三角形两条边的矢量叉积来计算三角形的表面法线。计算中使用的顶点的顺序将影响法线的方向(进入或离开面wrt绕组)。

所以对于三角形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
于 2014-05-17T08:46:01.630 回答