点到直线的距离公式推导

点到直线的距离公式推导

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

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

起因

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

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

三角形面积法

点到直线的距离公式推导

直线 ll 方程为 Ax+By+C=0Ax + By + C = 0AABB 均不为 00,点 P(x0,y0)P(x_0, y_0),设点 PPll 的距离为 dd

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

R,SR, S 在直线 ll 上,得到

AxR+By0+C=0Ax_R + By_0 + C = 0Ax0+ByS+C=0Ax_0 + By_S + C = 0

所以

xR=By0CAx_R = \frac{ -By_0 - C }{ A }yS=Ax0CBy_S = \frac{ -Ax_0 - C }{ B }

PR=x0xR=x0By0CA=Ax0+By0+CA| PR | = | x_0 - x_R | = | x_0 - \frac{ -By_0 - C }{ A } | = | \frac{ Ax_0 + By_0 + C }{ A } |PS=y0yS=y0Ax0CB=Ax0+By0+CB| PS | = | y_0 - y_S | = | y_0 - \frac{ -Ax_0 - C }{ B } | = | \frac{ Ax_0 + By_0 + C }{ B } |

于是

RS=PR2+PS2=A2+B2ABAx0+By0+C| RS | = \sqrt{ { PR }^2 + { PS }^2 } = \frac{ \sqrt{ A^2 + B^2 } }{ AB } \cdot | Ax_0 + By_0 + C |

ΔPSR\Delta_{PSR}

dRS=PRPSd \cdot | RS | = | PR | \cdot | PS |

d=PRPSRS=Ax0+By0+CAAx0+By0+CBA2+B2ABAx0+By0+C=Ax0+By0+CA2+B2d = \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 } }

另一种形式

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

则点 P(x0,y0)P(x_0, y_0) 到直线 ll 的距离 dd

d=Ax0+By0+CA2+B2=f(x0,y0)vd = \frac{ | Ax_0 + By_0 + C | }{ \sqrt{ A^2 + B^2 } } = \frac{ f(x_0, y_0) }{ \left\| \boldsymbol v \right\| }

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