C# 给定3点,如何计算法向量?

C# 给定3点,如何计算法向量?,c#,math,.net-3.5,geometry,C#,Math,.net 3.5,Geometry,给定三个3D点(A、B和C),如何计算法向量?这三个点定义了一个平面,我想要向量垂直于这个平面 我可以从向量BA和BC的叉积中得到示例C代码来演示这一点吗。请参见。您需要计算曲面上任意两个非平行向量的距离。因为你有三个点,你可以通过向量AB和AC的叉积来计算 当你这样做的时候,你在计算a,维基百科对此有相当广泛的解释。这取决于点数的顺序。如果从与法线方向相反的方向看,点是按逆时针顺序指定的,那么计算起来很简单: Dir = (B - A) x (C - A) Norm = Dir / len(D

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


我可以从向量BA和BC的叉积中得到示例C代码来演示这一点吗。请参见。

您需要计算曲面上任意两个非平行向量的距离。因为你有三个点,你可以通过向量AB和AC的叉积来计算


当你这样做的时候,你在计算a,维基百科对此有相当广泛的解释。

这取决于点数的顺序。如果从与法线方向相反的方向看,点是按逆时针顺序指定的,那么计算起来很简单:

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;
        }
    }
}

数学与编程有很大关系。特别是这个数学,如果你在做3D的任何事情。让他休息一下,它被标记为C#和.net-3.5。当你开始编写3D应用程序时,这个问题会立即出现。看看相关的问题,我们通常允许这样做。我的决定是:被问到的数学问题是否会在代码中实现。当然,这会一直持续下去。@NoonSilk:StackOverflow帖子被其他访问者阅读,可能是在写了很长一段时间之后(正如我在你评论六年后发现这个问题时所看到的那样)。在封闭状态下保持应该封闭的问题和在开放状态下保持开放的问题只是通常策划的一部分,以便为未来的访客保持一切整洁。