空間點與直線距離算法


1. 原理推導

令空間中點A與點B組成向量\(\overrightarrow{AB}\),向量外有一點P,那么我們要求的就是P與直線\(\overrightarrow{AB}\)的距離d。

連接點A與點P,得直線向量\(\overrightarrow{AP}\)。將向量\(\overrightarrow{AB}\)\(\overrightarrow{AP}\)叉乘,根據向量叉乘的幾何意義,\(|\overrightarrow{AB} \times \overrightarrow{AP}|\)實際上是一個平行四邊形面積,如下圖所示:

imglink1

根據平行四邊形公式,很顯然我們要求的d就是這個平行四邊形的高,也就是:

\[d = \frac{|\overrightarrow{AB} \times \overrightarrow{AP}|} {|\overrightarrow{AB}|} \]

2. 具體實現

直到了原理,具體的實現就很簡單了,只要套公式就可以了。其中^是個自己重載實現的求叉乘的操作:

double CalDistancePointAndLine(Vec3d &point, Vec3d &lineBegin, Vec3d &lineEnd)
{
    //直線方向向量
    Vec3d n = lineEnd -lineBegin;

    //直線上某一點的向量到點的向量
    Vec3d m = point - lineBegin;

    return (n ^ m).length() / n.length();
}

詳細代碼

3. 參考

  1. 空間向量如何求點到直線距離?
  2. 立體幾何:如何用空間向量方法求點到直線的距離?
  3. 向量運算(叉乘幾何意義)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM