














Ax +By +Cz + D = 0
其中n = (A, B, C)是平面的法向量,D是将平面平移到坐标原点所需距离(所以D=0时,平面过原点)
给定一个向量V(x, y, z),则|V| = sqrt(x * x + y * y + z * z)
给定两个向量V1(x1, y1, z1)和V2(x2, y2, z2)则他们的内积是
V1V2 = x1x2 + y1y2 + z1z2
有了上面的准备知识,则求点到直线的距离不再是难事,有图有真相

如果法相量是单位向量的话,那么分母为1
顺便看一下Ogre中的实现
Real Plane::getDistance (const Vector3& rkPoint) const
{
return normal.dotProduct(rkPoint) + d;
}
可见Ogre默认法相量为单位向量,且没有对结果取绝对值,根据注释,当点与法相量的方向在同一侧时,结果为正,否则为负。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。