设平面外一点为P(p1,p2,p3)
,指定的方向向量为d=(d1,d2,d3)
,平面Q方程为Ax+By+Cz=D
,设系数ABC已经归一化,则其法向量为n=(A,B,C)
。则计算点P沿方向向量d到平面Q的距离,可以通过下式计算
(P+t* d)* n=D [1]
其中t为待求的常数。下面将[1]式分两个步骤解释一下该式子的意义(理解了以后其实就很简单):
P’ = P+t* d [2]
P’ * n=D [3]
[2]式表示三维点P沿着方向向量d移动t倍距离,到达点P’,这里应该好理解。[3]式表示的是点P’在平面上,则应该满足平面Q的方程。
因此,通过上述式子即可求出t,即:
t= (D - P * n) / d * n [4]
求出t后,可以通过[2]式求出射线与平面Q的交点P’的坐标,最后通过两点距离公式求出点P和P’之间的距离,即为点P沿方向向量d到平面Q的距离dist。计算dist的式子化简后为:
dist=t* ||d|| [5]
其中||d||表示向量d的模长。
下面是具体的c++实现代码:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)