问题描述: 求点 $\vec c$ 到直线 $l$ 的距离, 其中直线 $l$ 经过点 $\vec a$ 和点 $\vec b$, 且 $\vec a \ne \vec b$.
一般公式
直线 $l$ 上点可以表示为 $\vec p = t\vec a + (1 - t)\vec b = \vec b + (\vec a - \vec b)t$, $\forall t \in \mathbb{R}$.
点 $\vec c$ 到点 $\vec p$ 的距离的平方为
$$\begin{aligned}
d^2(t) &= \left\| {\vec c - \vec p} \right\|^2 \\
&= \left\| {\vec c - \vec b - (\vec a - \vec b)t} \right\|^2 \\
&= \left\| {\vec c - \vec b} \right\|^2 - 2\left\langle {\vec c - \vec b,\vec a - \vec b} \right\rangle t + {\left\| {\vec a - \vec b} \right\|^2}{t^2}
\end{aligned}$$
根据一元二次方程的性质, 当 $t = \frac{\left\langle {\vec c - \vec b,\vec a - \vec b} \right\rangle }{\left\| {\vec a - \vec b} \right\|^2}$ 时, $d^2(t)$ 取得最小值, 该最小值即为点 $\vec c$ 到直线 $l$ 的距离的平方, 记为 $d_{min}^2$.
$$\begin{aligned} d_{min}^2 &= \left\| {\vec c - \vec b} \right\|^2 - 2\left\langle {\vec c - \vec b,\vec a - \vec b} \right\rangle t + {\left\| {\vec a - \vec b} \right\|^2}{t^2} \\ &= \left\| {\vec c - \vec b} \right\|^2 - \frac{ \left\langle {\vec c - \vec b, \vec a - \vec b} \right\rangle^2}{\left\| {\vec a - \vec b} \right\|^2} \end{aligned}$$
点到三维直线的距离公式
根据性质: $\|\vec u \times \vec v \|^2 + \langle \vec u, \vec v \rangle^2=\|\vec u\|^2 \|\vec v \|^2$, 可得:
$$d_{min}^2 =\frac{ \left\| \left(\vec c - \vec b \right) \times \left(\vec a - \vec b\right) \right\|^2}{\left\| {\vec a - \vec b} \right\|^2}$$
所以,
$$d_{min} =\frac{ \left\| \left(\vec c - \vec b \right) \times \left(\vec a - \vec b\right) \right\|}{\left\| {\vec a - \vec b} \right\|}$$
点到二维直线的距离公式
对于二维直线, 设其方程为 $A\left( {x - {x_0}} \right) + B\left( {y - {y_0}} \right) = 0$ , 求点 $\left( {{x_p},{y_p}} \right)$ 到其的距离. 由方程可见直线经过点 $\left( {{x_0},{y_0}} \right)$, 且方向向量为 $\left( { - B,A} \right)$ . 代入一般公式中:
$$\begin{aligned}
d_{min}^2 &= (x_p - x_0)^2 + (y_p - y_0)^2 + \frac{(-B(x_p - x_0) + A(y_p - y_0))^2}{A^2 + B^2} \\
&= \frac{ \left(A(x_p - x_0) + B(y_p - y_0)\right)^2 }{A^2 + B^2}
\end{aligned}$$
所以,
$$d_{min} = \frac{ \left|A(x_p - x_0) + B(y_p - y_0)\right| }{\sqrt{A^2 + B^2}}$$
参考:
- https://mathworld.wolfram.com/Point-LineDistance3-Dimensional.html
- https://www.zhihu.com/question/315808226/answer/1303779626
更新记录
- 20210304, 发布
版权声明
版权声明: 自由分享, 保持署名-非商业用途-非衍生, 知识共享3.0协议.
如果你对本文有疑问或建议, 欢迎留言! 转载请保留版权声明!