点到平面直线的距离和空间直线的距离

1、点到平面直线的距离:

 代码:

struct Point{
    double x;
    double y;
}

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


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

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

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


    if (mA*mA + mB*mB + mC*mC)// 如果mA*mA + mB*mB + mC*mC==0  说明直线缩成点
    {
        dt = abs(mA*mX + mB*mY + mC) / sqrt(mA*mA + mB*mB);
    }
    else
    {
        std::cout << "方程输入错误::系数全为零!!!!";
        dt = pt.mod();
    } // The plane is reduced to the origin. point(pt) to point(zero) distance.
    return dt;
}

2、点到空间直线的距离:

 

 

//使用空间直线的两点式(X0 Y0 Z0)为直线外一点

Xc = (x2-x1)*t+x1;
yc = (y2-y1)*t+y1;
Zc = (z2-z1)*t+z1;   //垂足

t = ((X2-X1)*(X0-X1)+(Y2-Y1)*(Y0-Y1)+(Z2-Z1)*(Z0-Z1))/((X2-X1)*(X2-X1)+(Y2-Y1)*(Y2-Y1)+(Z2-Z1)*(Z2-Z1))

d=sqrt((X0-Xc)*(X0-Xc)+(Y0-Yc)*(Y0-Yc)+(Z0-Zc)*(Z0-Zc))  //求解二范数

猜你喜欢

转载自www.cnblogs.com/lovebay/p/11506504.html