求解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)||

        

        這裏的表達式是並不止適合2維或3維空間,它適合n維空間。只需要將b,v,u的座標代入上面的公司就能求出點到直線的距離了,而且直線上u,v點的選擇不會影響最後的結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章