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

0.引言

1.基础

  • 单位向量:模等于1的向量,一个非零向量除以它的模,可得所需单位向量。
  • 向量的加减法:

在这里插入图片描述

  • 向量的投影:设两个非零向量 a \mathbf{a} a b \mathbf{b} b 的夹角为 θ \theta θ, 则将 ∣ b ∣ ⋅ cos ⁡ θ |\mathbf{b}| \cdot \cos \theta bcosθ 叫做向量 b \mathbf{b} b 在向量 a \mathbf{a} a 方向上的投影
  • 向量的点乘:
    a ⃗ ∙ b ⃗ = ∣ a ⃗ ∣ ∣ b ⃗ ∣ cos ⁡ θ \vec{a} \bullet \vec{b}=|\vec{a}||\vec{b}| \cos \theta a b =a ∣∣b cosθ
  • 向量的叉乘:
    • 模长: ∣ a ⃗ × b ⃗ ∣ = ∣ a ⃗ ∣ ∙ ∣ b ⃗ ∣ ∙ sin ⁡ θ |\vec{a} \times \vec{b}|=|\vec{a}| \bullet|\vec{b}| \bullet \sin \theta a ×b =a b sinθ ,即长度在数值上等于以向量a、b、夹角 θ \theta θ 组成的平行四边形的面积。
    • 方向:与这两个向量所在的平面垂直, 且脍守右手定则(或左手定则)。

2.点到线的距离

红色的点为鼠标位置, 蓝色的点 ( x 0 , y 0 ) , ( x 1 , y 1 ) (x_0, y_0),(x_1, y_1) (x0,y0),(x1,y1) 为直线上的两个点, 求红色的点到直线的距离。

在这里插入图片描述
将问题进行一下转化:如下图所示

在这里插入图片描述

  • 点乘法:
    • 向量 c 为向量 a 在向量 b 上的投影向量, 求得向量 e 的模即可求得最终结果。
    • 向量 a 已知, 并且 e = a − c \mathrm{e}=\mathrm{a}-\mathrm{c} e=ac, 则问题转化为求向量 c \mathrm{c} c
    • 向量c的方向很容易确定, 即 b \mathbf{b} b normalized; 而向量c的模 ∣ c ∣ = ∣ a ∣ ⋅ cos ⁡ θ |\mathbf{c}|=|\mathbf{a}| \cdot \cos \theta c=acosθ, 则求出 cos ⁡ θ \cos \theta cosθ 即可。
    • 由向量的点乘很容易知道 a ⋅ b = ∣ a ∣ b ∣ cos ⁡ θ \mathbf{a} \cdot \mathbf{b}=|\mathbf{a}| \mathbf{b} \mid \cos \theta ab=abcosθ, 则最终问题得以解决。
  • 叉乘法:
    ∣ a x b ∣ |\mathbf{a x b}| axb 等于它们所张开的平行四边形的面积 s 。 s 除以 ∣ b ∣ |\mathbf{b}| b 即等于点到直线的距离。

在这里插入图片描述
根据平行四边形公式, 很显然我们要求的d就是这个平行四边形的高, 也就是:
d = ∣ A B → × A P → ∣ ∣ A B → ∣ d=\frac{|\overrightarrow{A B} \times \overrightarrow{A P}|}{|\overrightarrow{A B}|} d=AB AB ×AP

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐