計算三角面片法向量


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