计算三角面片法向量

Vector CaculateTriangleNormal(Point3d& p0, Point3d& p1, Point3d& p2)
{
    Vector Normal;
    float v1x = p1.X - p0.X;
    float v1y = p1.Y - p0.Y;
    float v1z = p1.Z - p0.Z;
    float v2x = p2.X - p1.X;
    float v2y = p2.Y - p1.Y;
    float v2z = p2.Z - p1.Z;
    Normal.X= v1y * v2z - v1z * v2y;
    Normal.Y = v1z * v2x - v1x * v2z;
    Normal.Z = v1x * v2y - v1y * v2x;
    float len = (float)sqrt(Normal.X * Normal.X + Normal.Y * Normal.Y + Normal.Z * Normal.Z);
    if (len == 0)
    {
        //throw Exception();
    }
    else
    {
        Normal.X /= len;
        Normal.Y /= len;
        Normal.Z /= len;
    }
    return Normal;
}

  

原文地址:https://www.cnblogs.com/wjx-zjut/p/7144398.html