如何从一组顶点获取平面的法线向量?


9

我正在一个HLSL / C ++小项目上进行图形工作,我不确定如何从顶点多边形中获得面对的矢量。我似乎找不到公式。

位置是P1,P2,P3

让我们称它们为VertexPoint类,例如P1.x,P1.y,P1.z吗?



为了正确起见,图片和问题标题中的标签应为“ normal vector ”,而不是“ normalized vector”。当然,法线向量本身可以进行归一化(其长度为单位),但不需要这样做,并且叉积默认情况下不会产生归一化向量。
jjmontes

1
对Google来说,谷歌搜索“法向矢量三角形”很明显,它获得了无数的点击率。123456,......
imallett

... 78910111213,...
imallett

2
... 14151617 ......这些每一个(以后肯定无数人)回答了这个问题,有的居然连有希望的C ++ / HLSL代码。说真的 这个问题被殴打致死,称其为“重复”是不够的。“我似乎找不到公式”,我没想到-您没有尝试
imallett

Answers:


28

您可以通过计算两个向量V1 = P2-P1和V2 = P3-P1轻松找到法线,然后找到叉积N = V1 x V2。然后对N进行归一化。根据顶点的顺序(顺时针或逆时针),您将获得法线朝向的正面或背面。

您还需要确保三个三个点没有对齐,如果要对齐,则必须选择另一个点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.