点到平面直线的距离和空间直线的距离
1、点到平面直线的距离:
代码:
double pt3dToLine(double* pt0, double* pt1, double* pt2) {
// 使用空间直线的两点式,pt0为直线外一点.
double t = ((pt2[0] - pt1[0]) * (pt0[0] - pt1[0]) +
(pt2[1] - pt1[1]) * (pt0[1] - pt1[1])) /
((pt2[0] - pt1[0]) * (pt2[0] - pt1[0]) +
(pt2[1] - pt1[1]) * (pt2[1] - pt1[1]));
double Xc = (pt2[0] - pt1[0]) * t + pt1[0];
double Yc = (pt2[1] - pt1[1]) * t + pt1[1];
double d = sqrt((pt0[0] - Xc) * (pt0[0] - Xc) +
(pt0[1] - Yc) * (pt0[1] - Yc)); // 求解二范数
return d;
}
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)) //求解二范数