求解3维空间中点到直线的距离

        最近在工程上遇到一个比较实际也比较常见的问题,就是求三维空间上任意一个点b到某条直线uv(u,v是直线上的两个点)的距离。如果用几何解法,思路:求解过b且垂直于直线uv的直线方程,两个直线方程求焦点a,计算点a到点b的欧式距离。这种解法十分繁琐,且公式推导十分麻烦。

        还好我知道线性代数里有个叫投影矩阵的东西,如下图点b到过原点和点a的直线的距离就是向量e的模长||e||。向量的运算关系,在图中p+e=b,而投影矩阵要做的事情就是求解p,p由投影矩阵给出:p=\frac{aa^{T}}{a^{T}a}b,那么e=b-p,距离||b-p||。

        

        点到直线的投影矩阵是基于向量推到的,我们知道向量都从原点指向空间某一点的,那么如何求解点到任意直线(直线可能不过原点)的距离呢?方法很简单,只需要通过点b的和直线上两点u,v的坐标求出b'向量和a向量,然后应用投影矩阵的公式就可以了。那么b' = b-u ,a=v-u,所以空间中任意一点到直线的距离表达式:||b-\frac{(v-u)(v-u)^{T})}{(v-u)^{T}(v-u)}(b-u)||

        求解3维空间中点到直线的距离_第1张图片

        这里的表达式是并不止适合2维或3维空间,它适合n维空间。只需要将b,v,u的坐标代入上面的公司就能求出点到直线的距离了,而且直线上u,v点的选择不会影响最后的结果。

你可能感兴趣的:(线性代数,数学,dicom医学图像处理)