求兩條直線交點的正確姿勢


求兩條直線交點的正確姿勢

  • 在白書上看到的,但沒有找到解釋,於是記錄一下.
  • 如果兩條直線是用線上一點+方向向量的方式表示的話,可以這樣求直線交點(假定存在):
v2 interpoint(Line a,Line b)
{
    v2 u=a.P-b.P;
    double t=(b.v*u)/(a.v*b.v);
    return a.P+a.v*t;
}
  • 這里 \(P\) 是直線上一點, \(v\) 是方向向量, \(*\) 定義為向量叉乘.
  • 怎么理解呢?看這張圖:

  • 叉積是兩向量圍成三角形面積的兩倍,那么 \(t\) 就是兩個三角形面積之比,有一條底邊長度相同,為 \(|v_2|\).那么 \(t\) 也等於高之比,即圖中 \(h_1 : h_2\) .圖中兩條垂線是平行的,那么由相似知識可知 \(t=AE : |v_1|\). 那么交點 \(E\) 的坐標就可以用上面式子算出了.


免責聲明!

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



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