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