点到直线的距离公式推导

点到直线的距离公式推导

本文地址:blog.lucien.ink/archives/495

摘自 点到直线距离公式的几种推导 - 三横先生的文章 - 知乎 的三角形面积法,稍作修改并更正书写错误。

起因

今天在 PPT 里看到一个点到超平面的距离公式 d = 1 ∥ w ∥ ∣ w ⋅ x 0 + b ∣ d = \frac{ 1 }{ \left\| \boldsymbol w \right\| }| \boldsymbol w \cdot \boldsymbol x_0 + \boldsymbol b | d=w1wx0+b,看了半天没看懂为什么这样算,遂去问学霸,答曰“平面情况下就是点到直线的距离公式”。

万分惭愧,我连初中数学都忘了。

三角形面积法

图片来自知乎

直线 l l l 方程为 A x + B y + C = 0 Ax + By + C = 0 Ax+By+C=0 A A A B B B 均不为 0 0 0,点 P ( x 0 , y 0 ) P(x_0, y_0) P(x0,y0),设点 P P P l l l 的距离为 d d d

设点 R ( x R , y 0 ) R(x_R, y_0) R(xR,y0),点 S ( x 0 , y S ) S(x_0, y_S) S(x0,yS)

R , S R, S R,S 在直线 l l l 上,得到

A x R + B y 0 + C = 0 Ax_R + By_0 + C = 0 AxR+By0+C=0 A x 0 + B y S + C = 0 Ax_0 + By_S + C = 0 Ax0+ByS+C=0

所以

x R = − B y 0 − C A x_R = \frac{ -By_0 - C }{ A } xR=ABy0C y S = − A x 0 − C B y_S = \frac{ -Ax_0 - C }{ B } yS=BAx0C

∣ P R ∣ = ∣ x 0 − x R ∣ = ∣ x 0 − − B y 0 − C A ∣ = ∣ A x 0 + B y 0 + C A ∣ | PR | = | x_0 - x_R | = | x_0 - \frac{ -By_0 - C }{ A } | = | \frac{ Ax_0 + By_0 + C }{ A } | PR=x0xR=x0ABy0C=AAx0+By0+C ∣ P S ∣ = ∣ y 0 − y S ∣ = ∣ y 0 − − A x 0 − C B ∣ = ∣ A x 0 + B y 0 + C B ∣ | PS | = | y_0 - y_S | = | y_0 - \frac{ -Ax_0 - C }{ B } | = | \frac{ Ax_0 + By_0 + C }{ B } | PS=y0yS=y0BAx0C=BAx0+By0+C

于是

∣ R S ∣ = P R 2 + P S 2 = A 2 + B 2 A B ⋅ ∣ A x 0 + B y 0 + C ∣ | RS | = \sqrt{ { PR }^2 + { PS }^2 } = \frac{ \sqrt{ A^2 + B^2 } }{ AB } \cdot | Ax_0 + By_0 + C | RS=PR2+PS2 =ABA2+B2 Ax0+By0+C

Δ P S R \Delta_{PSR} ΔPSR

d ⋅ ∣ R S ∣ = ∣ P R ∣ ⋅ ∣ P S ∣ d \cdot | RS | = | PR | \cdot | PS | dRS=PRPS

d = ∣ P R ∣ ⋅ ∣ P S ∣ ∣ R S ∣ = ∣ A x 0 + B y 0 + C A ∣ ⋅ ∣ A x 0 + B y 0 + C B ∣ A 2 + B 2 A B ⋅ ∣ A x 0 + B y 0 + C ∣ = ∣ A x 0 + B y 0 + C ∣ A 2 + B 2 d = \frac{ | PR | \cdot | PS | }{ | RS | } = \frac{ | \frac{ Ax_0 + By_0 + C }{ A } | \cdot | \frac{ Ax_0 + By_0 + C }{ B } | }{ \frac{ \sqrt{ A^2 + B^2 } }{ AB } \cdot | Ax_0 + By_0 + C | } = \frac{ | Ax_0 + By_0 + C | }{ \sqrt{ A^2 + B^2 } } d=RSPRPS=ABA2+B2 Ax0+By0+CAAx0+By0+CBAx0+By0+C=A2+B2 Ax0+By0+C

另一种形式

设函数 f ( x , y ) = A x + B y + C f(x, y) = Ax + By + C f(x,y)=Ax+By+C,直线 l : A x + B y + C = 0 l: Ax + By + C = 0 l:Ax+By+C=0 的法向量为 v ( A , B ) \boldsymbol v(A, B) v(A,B)

则点 P ( x 0 , y 0 ) P(x_0, y_0) P(x0,y0) 到直线 l l l 的距离 d d d

d = ∣ A x 0 + B y 0 + C ∣ A 2 + B 2 = f ( x 0 , y 0 ) ∥ v ∥ d = \frac{ | Ax_0 + By_0 + C | }{ \sqrt{ A^2 + B^2 } } = \frac{ f(x_0, y_0) }{ \left\| \boldsymbol v \right\| } d=A2+B2 Ax0+By0+C=vf(x0,y0)

注: ∥ v ∥ \left\| \boldsymbol v \right\| v 为向量 v \boldsymbol v v 的 2-范数

在三维空间解析几何中,计算一个点到一条直线的距离是一个常见的问题。这个距离是指从给定点垂直投影至直线上最短路径的长度。 假设有一条由两个不同点A($x_1$, $y_1$, $z_1$) 和B($x_2$, $y_2$, $z_2$)确定的空间直线L以及另一个不在直线上的点P($x_p$, $y_p$, $z_p$),那么可以利用向量的方法求出点P到直线L的距离d。 设$\vec{AB}$是从点A指向点B的方向向量,则有: $$\vec{AB} = (x_2-x_1, y_2-y_1, z_2-z_1)$$ 再设定$\vec{AP}$是从点A指向点P的位置向量,则有: $$\vec{AP} = (x_p-x_1, y_p-y_1, z_p-z_1)$$ 点P到直线L的距离可以通过下面的公式得到: $$ d = \frac{\|\vec{AP}\times\vec{AB}\|}{\|\vec{AB}\|} $$ 这里 $\vec{AP}\times\vec{AB}$ 是两向量的叉乘结果,它给出的是一个新的向量,其大小等于以这两个向量为邻边形成的平行四边形面积;而分子中的范数(即绝对值符号内的表达式)代表了该新向量的模长。分母则是方向向量$\vec{AB}$的模长。 如果直线是由参数方程或者一般形式的方程给出的话,也可以直接应用相应的公式来找到距离。例如对于标准型直线方程$(x-x_0)/a=(y-y_0)/b=(z-z_0)/c$和一点$M(x_m,y_m,z_m)$,则可以用以下公式: $$ d=\sqrt{(by_{m}-bz_{0}-cy_{0}+cz_{m})^2+(az_{0}-ax_{m}+cx_{m}-cz_{0})^2+(ay_{0}-bx_{0}+bx_{m}-ay_{m})^2}/\sqrt{a^{2}+b^{2}+c^{2}} $$ 其中$a,b,c$是直线的方向比例系数,$(x_0,y_0,z_0)$是直线上任意已知的一个点坐标。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值