点到空间平面的距离

计算公式::

struct Point{
    double x;
    double y;
    double z;
}

struct PlaneEquation{
    double A;
    double B;
    double C;
    double D;
}


//计算点到面距离
double dist(Point &pt, PlaneEquation &pe) //Distance between point and plane
{
    double dt = 0.0;
    double mA, mB, mC, mD, mX, mY, mZ;

    mA = pe.A;
    mB = pe.B;
    mC = pe.C;
    mD = pe.D;

    mX = pt.X;
    mY = pt.Y;
    mZ = pt.Z;

    if (mA*mA + mB*mB + mC*mC)// 如果mA*mA + mB*mB + mC*mC==0  说明面缩成点
    {
        dt = abs(mA*mX + mB*mY + mC*mZ + mD) / sqrt(mA*mA + mB*mB + mC*mC);
    }
    else
    {
        std::cout << "空间面方程输入错误::系数全为零!!!!";
        dt = pt.mod();
    } // The plane is reduced to the origin. point(pt) to point(zero) distance.
    return dt;
}
原文地址:https://www.cnblogs.com/lovebay/p/11506152.html