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