贡献者: hfb25; addis
一点 $(x_1,y_1)$ 到直线 $ax + by + c = 0$ 的最短距离为
\begin{equation}
\frac{ \left\lvert ax_1 + by_1 + c \right\rvert }{\sqrt{a^2 + b^2}}~.
\end{equation}
最近点的坐标为
\begin{equation}
\left(
\frac{b^2x_1 - aby_1 - ac}{a^2 + b^2}, \quad
\frac{a^2y_1 - abx_1 - bc}{a^2 + b^2} \right) ~.
\end{equation}
1. 推导
根据垂线段最短,点 $(x_1, y_1)$ 距离直线 $ax + by + c = 0$ 最近的点也位于该直线的垂线上。
过点 $(x_1, y_1)$ 且垂直于直线 $ax+by+c=0$ 的直线方程为
\begin{equation}
bx - ay - bx_1 - ay_1 = 0~.
\end{equation}
它与直线 $ax + by + c = 0$ 的交点 $(x_2, y_2)$ 满足
\begin{equation}
\left\lbrace
\begin{aligned}
ax_2 + by_2 + c &= 0\\
bx_2 - ay_2-bx_1 + ay_1 &= 0
\end{aligned}~.
\right.
\end{equation}
解得
\begin{equation}
\left\lbrace
\begin{aligned}
x_2=\frac{b^2x_1 - aby_1 - ac}{a^2 + b^2}\\
y_2=\frac{a^2y_1 - abx_1 - bc}{a^2 + b^2}
\end{aligned}~.
\right.
\end{equation}
根据两点距离公式得
\begin{equation}
\begin{split}
d&=\sqrt{(x_1-\frac{b^2x_1 - aby_1 - ac}{a^2 + b^2})^2 + (y_1-\frac{a^2y_1 - abx_1 - bc}{a^2 + b^2})^2}\\
&=\frac{1}{a^2 + b^2}\sqrt{(a^2x_1 + aby_1 + ac)^2 + (b^2y_1 + abx_1 + bc)^2}\\
&=\frac{1}{\sqrt{a^2 + b^2}}\sqrt{(ax_1 + by_1 + c)^2}\\[3pt]
&=\frac{ \left\lvert ax_1 + by_1 + c \right\rvert }{\sqrt{a^2 + b^2}}~.\\
\end{split}
\end{equation}
2. 推导 2
设直线 $ax + by + c = 0$ 的法向量为 $ \boldsymbol{\mathbf{n}} $,则
\begin{equation}
\boldsymbol{\mathbf{a}} \boldsymbol\cdot \boldsymbol{\mathbf{n}} = \cos \frac{\pi}{2} = 0~,
\end{equation}
所以 $ \boldsymbol{\mathbf{n}} =(a,b)$。其中 $ \boldsymbol{\mathbf{a}} =(b,-a)$,称为直线的方向向量。
那么直线的单位法向量(背向原点)为 $ \hat{\boldsymbol{\mathbf{n}}} = (-a/d, -b/d)$,其中
\begin{equation}
d = \sqrt{a^2 + b^2}~.
\end{equation}
未完成:图
若令原点到直线上任意一点的矢量为 $ \boldsymbol{\mathbf{r}} $,那么直线方程可以表示为
\begin{equation}
\boldsymbol{\mathbf{r}} \boldsymbol\cdot \hat{\boldsymbol{\mathbf{n}}} = \frac{c}{d}~,
\end{equation}
即直线到原点的距离为 $c/\sqrt{a^2 + b^2}$。
令任意一点为 $ \boldsymbol{\mathbf{r}} _1 = (x_1, y_1)$,那么 $ \boldsymbol{\mathbf{r}} _1$ 到直线的距离为
\begin{equation}
\left\lvert ( \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} ) \boldsymbol\cdot \hat{\boldsymbol{\mathbf{n}}} \right\rvert = \left\lvert \boldsymbol{\mathbf{r}} _1 \boldsymbol\cdot \hat{\boldsymbol{\mathbf{n}}} - \boldsymbol{\mathbf{r}} \boldsymbol\cdot \hat{\boldsymbol{\mathbf{n}}} \right\rvert
= \frac{ \left\lvert ax_1 + by_1 + c \right\rvert }{\sqrt{a^2 + b^2}}~.
\end{equation}
未完成:推导过程配图
3. 高维情形
未完成:预备知识
我们将推导 2拓展到有限维的情况。
考虑一条 $n(n>2)$ 维空间中的直线,它的方程可以表示为
\begin{equation}
\boldsymbol{\mathbf{r}} = \boldsymbol{\mathbf{r}} _0 + \lambda \hat{\boldsymbol{\mathbf{a}}} ~.
\end{equation}
其中 $ \boldsymbol{\mathbf{r}} _0$ 是原点到直线上某点的矢量,$ \hat{\boldsymbol{\mathbf{a}}} $ 是直线的单位方向向量($n$ 维)。$\lambda$ 是一个参数,表示点在直线上的位置。
未完成:图
令任意一点为 $ \boldsymbol{\mathbf{r}} _1$。
设与 $ \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} _0$ 共面的直线的法向量 $ \boldsymbol{\mathbf{n}} =k_1 \hat{\boldsymbol{\mathbf{a}}} + k_2 ( \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} _0)$,则有下列方程
\begin{equation}
k_1 + k_2 \hat{\boldsymbol{\mathbf{a}}} \boldsymbol\cdot ( \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} _0) = 0 \quad ( \hat{\boldsymbol{\mathbf{a}}} \boldsymbol\cdot \boldsymbol{\mathbf{n}} = 0)~.
\end{equation}
上述方程有无数个解,为了简单化,令 $k_2 = -1$。我们得到
\begin{equation}
\boldsymbol{\mathbf{n}} = [ \hat{\boldsymbol{\mathbf{a}}} \boldsymbol\cdot ( \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} _0)] \hat{\boldsymbol{\mathbf{a}}} - ( \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} _0)~.
\end{equation}
点 $ \boldsymbol{\mathbf{r}} _1$ 到直线的距离为1
\begin{equation}
d=\frac{1}{ \left\lvert \boldsymbol{\mathbf{n}} \right\rvert } \left\lvert ( \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} _0) \boldsymbol\cdot \boldsymbol{\mathbf{n}} \right\rvert =\frac{ \left\lvert \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} _0 \right\rvert ^2 - [ \hat{\boldsymbol{\mathbf{a}}} \boldsymbol\cdot ( \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} _0)]^2
}{ \left\lvert [ \hat{\boldsymbol{\mathbf{a}}} \boldsymbol\cdot ( \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} _0)] \hat{\boldsymbol{\mathbf{a}}} - ( \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} _0) \right\rvert }~.
\end{equation}
我们可以知道
\begin{equation}
\left\lvert ( \boldsymbol{\mathbf{x}} \boldsymbol\cdot \boldsymbol{\mathbf{y}} ) \boldsymbol{\mathbf{y}} - \boldsymbol{\mathbf{x}} \right\rvert ^2=( \boldsymbol{\mathbf{x}} \boldsymbol\cdot \boldsymbol{\mathbf{y}} )^2 ( \left\lvert \boldsymbol{\mathbf{y}} \right\rvert ^2-2) + \left\lvert \boldsymbol{\mathbf{x}} \right\rvert ^2~,
\end{equation}
所以
\begin{equation}
d= \left\lvert [ \hat{\boldsymbol{\mathbf{a}}} \boldsymbol\cdot ( \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} _0)] \hat{\boldsymbol{\mathbf{a}}} - ( \boldsymbol{\mathbf{r}} _1 - \boldsymbol{\mathbf{r}} _0) \right\rvert ~.
\end{equation}
容易证明上述公式与 $ \boldsymbol{\mathbf{r}} _0$ 的选取无关,因为 $d$ 是一个几何量。
如果我们取 $ \boldsymbol{\mathbf{r}} _1=0$,则上述公式可以简化为
\begin{equation}
d= \left\lvert \boldsymbol{\mathbf{r}} _0 - ( \hat{\boldsymbol{\mathbf{a}}} \boldsymbol\cdot \boldsymbol{\mathbf{r}} _0) \hat{\boldsymbol{\mathbf{a}}} \right\rvert ~,
\end{equation}
这就是直线到原点的距离。
未完成:图
1. ^ $ \left\lvert \boldsymbol{\mathbf{x}} \boldsymbol\cdot \boldsymbol{\mathbf{y}} \right\rvert \leq \left\lvert \boldsymbol{\mathbf{x}} \right\rvert \left\lvert \boldsymbol{\mathbf{y}} \right\rvert $。