點到平面直線的距離和空間直線的距離


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))  //求解二范數

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM