求一个点到一个平面的距离?
接上篇 平面定义
上一篇中给出了两种定义平面的方程式
第一种
当给定的平面方程式为:n·p = d 时,求点到平面的距离
设想一个平面和一个不在平面上的点 q,在平面上存在一个点 q,它到 q 的距离最近,很显然从 p 到 q 的向量垂直于平面。
设 p 到 q 的距离为 a,如果 q 在平面的正面,a 为正,如果在平面的反面,a 为 负。
n 为单位向量,且是平面的法向量。
则 从 p 到 q 的向量可以表示为 an
点 p 加 an 得到 点 q 的坐标
p + an = q
(p + an)·n = q·n
p·n + (an)·n = q·n
p·n + a(n·n) = q·n
d + a = q·n
a = q·n - d
到此 q 到平面的距离 a 得到求解。
从 p·n + a(n·n) = q·n 到 d + a = q·n 的推演如何得到?
因为平面方程式为 n·p = d 因为 n·p = p·n,所以可以使用 d 替换 n·p
因为 n 为平面法向量,且是单位向量,所以 (n·n) 结果为数值 1,则 a(n·n) = a
第二种
当给定的平面是平面上不共线的三个点 P1, P2, P3 时,求点到平面的距离
上图中点 q 到平面的距离
在平面上任取一点 p3,连接从点 p3 到 点 q 的向量,过 q 向平面做垂线与平面相交与P,则q、P、p3构成一个直角三角形,点 q 到点 P 的长度 a 即为点 q 到平面的距离。
a 等于 从点 p3 到 点 q 的向量 p3q 在法向量 n 上的投影长度也就是 p3q 点乘 n 结果
a = p3q·n
n = p1p2 叉乘 p2p3
a = (p3q)·(p1p2 叉乘 p2p3)
两种不同的平面公式求解点到平面的距离都得到了答案
如何求 点 q 到平面的垂点 q 的坐标?
p + an = q
p = q - an
q 已知, 法向量 n 已知,a 已求得
上面已经计算得到了点 q 到平面的距离,那么进一步思考得到球与平面的相交检测?
球的定义为到点 q 距离小于等于R的点的集合
q 到平面的距离 a <= R, 球与平面相交