使用向量的方法计算点到直线的距离

  • 使用向量的方法效率更高,更简单。
  • 首先要了解什么是向量,什么是向量的模
  • 主要用到了解析几何里的几个公式

    1. a·b = |a||b|cos(x),其中x为向量a,b的夹角
    2. |a|*单位向量 = a,单位向量为模为1的向量
    3. 向量的加减法 ,如下图所示
      • 向量的加法
        向量的加法
      • 向量的减法
        向量的减法
  • 问题的原型如下图所示,红色的点为鼠标位置,蓝色的点(x0,y0),(x1,y1)为线段的端点,求红色的点到直线的距离
    问题原型
    可以将点到线的距离转换为直角三角形的问题,如下图所示:
    转换为直角三角形

    1. 我们定义鼠标所在点为M,线段起点为A,终点为B,AM为向量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=(ab)|b|b|b|

      =(ab)|b|2b
    4. 得到c的向量之后,就可以得到向量e = a - c再取e的模即可得到点到直线的距离。
  • 最后两个图片源自https://msdn.microsoft.com/en-us/library/ms969920.aspx

  • 其中星号为乘法,点表示点积

猜你喜欢

转载自blog.csdn.net/tracing/article/details/46563383
今日推荐