如何计算空间一条直线外一点到这条直线的垂足点坐标
示例代码:
/计算空间一条直线外一点到这条直线的垂足点坐标。
Point3f CoreAlgorithm::GetFootOfPerpendicular(
const Point3f &pt, // 直线外一点
const Point3f &begin, // 直线开始点
const Point3f &end) // 直线结束点
{
Point3f retVal;
double dx = begin.x - end.x;
double dy = begin.y - end.y;
double dz = begin.z - end.z;
if (abs(dx) < 0.00000001 && abs(dy) < 0.00000001 && abs(dz) < 0.00000001)
{
retVal = begin;
return retVal;
}
double u = (pt.x - begin.x)*(begin.x - end.x) +
(pt.y - begin.y)*(begin.y - end.y) + (pt.z - begin.z)*(begin.z - end.z);
u = u / ((dx*dx) + (dy*dy) + (dz*dz));
retVal.x = begin.x + u*dx;
retVal.y = begin.y + u*dy;
retVal.z = begin.z + u*dz;
return retVal;
}
在光笔的实验中使用过,验证正确,可以大胆使用此函数。
个人公众号: