利用向量求点到线的最短距离

参考JTS的CGAlgorithms类distancePointLine方法,实现原理是根据向量原理进行计算

利用向量求点到线的最短距离_第1张图片

利用向量求点到线的最短距离_第2张图片

利用向量积(叉积)计算三角形的面积和多边形的面积:

向量的数量积和向量积:

(1)  向量的数量积

 

(1)  向量的向量积

两个向量a和b的叉积(向量积)可以被定义为:

在这里θ表示两向量之间的角夹角(0° ≤ θ ≤ 180°),它位于这两个矢量 所定义的平面上。

向量积的模(长度)可以解释成以ab为邻边的平行四边形的面积。求三角形ABC的面积,根据向量积的意义,得到:

a=axi+ayj+azk;

b=bxi+byj+bzk;

a×b=(aybz-azby)i+(azbx-axbz)j+(axby-aybx)k,为了帮助记忆,利用三阶行列式,写成:

利用向量求点到线的最短距离_第3张图片

根据数量积可以判断P点在AB直接或者是A之外还是B之外

利用向量求点到线的最短距离_第4张图片

如果在AB直接根据叉乘来计算距离

使用向量叉积来求点到直线的距离
向量 p(x, y)

直线上的两点的向量:a(x1, y1), b(x2, y2)

向量 ab = a - b

点 p 到直线 ab 的距离:|p x ab| / |ab|

|p x ab|是 p 和 ab 形成的四边面的面积,那么除以 底边|ab| 就是高,即 p 到 ab 的距离

根据向量表示

向量AP可以表示为(Px-Ax,Py-Ay,0) 向量AB(Bx-Ax,By-Ay,0)则

ax=Px-Ax,ay=Py-Ay,az=0,bx=Bx-Ax,by=By-Ay,bz=0代入公式

S=|axby-aybx|(绝对值)=(Px-Ax)(By-Ay)-(Py-Ay)(Bx-Ax)

AB距离算出L之后,那么点到线距离就是S/L

 

附录:

利用向量求点到线的最短距离_第5张图片

你可能感兴趣的:(利用向量求点到线的最短距离)