天天看點

使用向量的方法來計算點到直線的距離

  • 使用向量的方法效率更高,更簡單。
  • 首先要了解什麼是向量,什麼是向量的模
  • 主要用到了解析幾何裡的幾個公式
    1. a * b = | a | * | b | * cos(x)

      ,其中x為向量a,b的夾角
    2. | a | * 機關向量 = a

      ,機關向量為模為1的向量
    3. 向量的加減法 ,如下圖所示 
      • 向量的加法 
        使用向量的方法來計算點到直線的距離
      • 向量的減法 
        使用向量的方法來計算點到直線的距離
  • 問題的原型如下圖所示,紅色的點為滑鼠位置,藍色的點(x0,y0),(x1,y1)為線段的端點,求紅色的點到直線的距離 
    使用向量的方法來計算點到直線的距離
    可以将點到線的距離轉換為直角三角形的問題,如下圖所示: 
    使用向量的方法來計算點到直線的距離
    1. 我們定義滑鼠所在點為M,線段起點為A,終點為B,MA為向量a,AB為向量b,向量c為向量a在向量b上的投影,向量e為M點到AB的垂線,關鍵就是求出向量e的模。
    2. 要得到向量e的模,首先要得到向量e,而要得到向量e就需要得到向量c,問題就轉換為了求向量c。
    3. 由勾股定理可得

      |c| = |a| * cos(x)

      ,x為向量ab的夾角,而 

      |a| * cos(x) = |a| * |b| * cos(x) / |b| = a * b / |b|

      ,這樣就得到了c的模,這樣就可以得到

      c = |c| * 機關向量

      , 

      因為c與b的方向相同,是以取

      機關向量=b / |b|

      ,整理可得: 

      c=(a∗b)|b|b|b|

      =(a∗b)|b|2b

    4. 得到c的向量之後,就可以得到向量

      e = a - c

      再取e的模即可得到點到直線的距離。
  • 最後兩個圖檔源自https://msdn.microsoft.com/en-us/library/ms969920.aspx

轉載位址:http://blog.csdn.net/tracing/article/details/46563383

繼續閱讀