double GetDistanceToLine(const double ptStartX,
const double ptStartY,
const double ptStartZ,
const double ptEndX,
const double ptEndY,
const double ptEndZ,
const double ptX,
const double ptY,
const double ptZ,
double& ptPedalX,
double& ptPedalY,
double& ptPedalZ)
{
if (IsZero(GetDistance(ptStartX, ptStartY, ptStartZ, ptEndX,
ptEndY, ptEndZ)))
{
return -1;
}
double d = 0; // 系数,因为垂足在直线上,所以,垂足可以用起点+方向向量X一个系数表示
double vtDirectionX = ptEndX -
ptStartX;
double vtDirectionY = ptEndY - ptStartY;
double vtDirectionZ = ptEndZ - ptStartZ;
// 一定要单位化,下面求d时就不需要分母了
double dLength = sqrt(vtDirectionX * vtDirectionX +
vtDirectionY * vtDirectionY + vtDirection