计算三角面片法向量


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

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM