给定三个3D点(A,B和C),如何计算法向量?这三个点定义了一个平面,我想要垂直于该平面的向量。
请问有演示此过程的C#代码示例吗?
给定三个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;
}
}
}