给定3分,我如何计算法向量?

给定三个3D点(A,B和C),如何计算法向量? 这三个点定义了一个平面,我希望矢量垂直于这个平面。

我可以获得演示此示例的示例C#代码吗?

这取决于点的顺序。 如果从反向法线的方向以逆时针顺序指定点,则计算起来很简单:

Dir = (B - A) x (C - A) Norm = Dir / len(Dir) 

其中x是叉积。

如果你正在使用OpenTK或XNA(可以访问Vector3类),那么它只是一个问题:

 class Triangle { Vector3 a, b, c; public Vector3 Normal { get { var dir = Vector3.Cross(b - a, c - a); var norm = Vector3.Normalize(dir); return norm; } } } 

形成载体BA和BC的交叉积。 请参见http://mathworld.wolfram.com/CrossProduct.html 。

您需要计算表面上任意两个非平行向量的叉积 。 由于你有三个点,你可以通过采用矢量AB和AC的叉积来解决这个问题。

当你这样做时,你正在计算一个表面法线 ,维基百科有一个非常广泛的解释。