数学公式:点到直线的距离
求点到直线的距离,点 P(a,b),直线 l 为 Ax + By + C = 0
过 P 点作垂直于 l 的直线 m
l的点斜式为
\[\begin{align*}
&x = -\frac{B}{A}y - \frac{C}{A} \\
&y = -\frac{A}{B}x - \frac{C}{B} \\
\end{align*}\]
求垂直斜率,通过斜率相乘得-1求得。\(k = \frac{B}{A}\)
则 m 的点斜式方程为
\[\begin{align*}
y &= \frac{B}{A}(x-a) + b \\
Ay &= B(x-a)+Ab \\
Ay &= Bx-Ba+Ab \\
-Bx&=-Ay-Ba+Ab \\
Bx&=Ay+Ba-Ab \\
\end{align*}\]
\[x=\frac{A}{B}y+a - \frac{Ab}{B}
\]
\[y = \frac{B}{A}x-\frac{Ba}{A} + b
\]
通过两个方程计算交点 Q 的坐标
求 x
\[\begin{align*}
-\frac{A}{B}x-\frac{C}{B} &= \frac{B}{A}x-\frac{Ba}{A}+b\\
-\frac{AAB}{B}x-\frac{ABC}{B} &= \frac{ABB}{A}x-\frac{ABBa}{A}+ABb \\
-A^2x-AC &= B^2x-B^2a+ABb\\
-B^2x - A^2x &= -B^2a+ABb +AC\\
A^2x + B^2x &= B^2a-ABb - AC\\
(A^2+B^2)x &= B^2a-ABb - AC\\
x &= \frac{B^2a-ABb - AC}{A^2+B^2}
\end{align*}\]
求 y
\[\begin{align*}
-\frac{B}{A}y - \frac{C}{A} &= \frac{A}{B}y+a - \frac{Ab}{B}\\
-\frac{ABB}{A}y - \frac{ABC}{A} &= \frac{ABA}{B}y+ABa - \frac{ABAb}{B}\\
-B^2y - BC &= A^2y + ABa - A^2b \\
-BC-ABa+A^2b &= (A^2+B^2)y\\
y&=\frac{A^2b-ABa-BC}{A^2+B^2}
\end{align*}\]
则点 Q坐标为
\[(\frac{B^2a-ABb - AC}{A^2+B^2},\frac{A^2b-ABa-BC}{A^2+B^2})
\]
先求出了垂直线的方程,再求出了两直线的交点坐标,因此可以通过两点间距离公式算出点到直线的距离
\[\begin{align}
|PQ| &= \sqrt{(x-a)^2+(y-b)^2}\\
&=\sqrt{(\frac{B^2a-ABb - AC}{A^2+B^2}-a)^2+(\frac{A^2b-ABa-BC}{A^2+B^2}-b)^2}\\
&=\sqrt{(\frac{B^2a-ABb - AC-a(A^2+B^2)}{A^2+B^2})^2+(\frac{A^2b-ABa-BC-b(A^2+B^2)}{A^2+B^2})^2}\\
&=\sqrt{(\frac{B^2a-ABb - AC-A^2a-B^2a}{A^2+B^2})^2+(\frac{A^2b-ABa-BC-A^2b-B^2b}{A^2+B^2})^2}\\
&=\sqrt{(\frac{-ABb - AC-A^2a}{A^2+B^2})^2+(\frac{-ABa-BC-B^2b}{A^2+B^2})^2}\\
&=\sqrt{(\frac{A(-Bb - C-Aa)}{A^2+B^2})^2+(\frac{B(-Aa-C-Bb)}{A^2+B^2})^2}\\
&=\sqrt{(\frac{A^2(-Bb - C-Aa)^2}{(A^2+B^2)^2})+(\frac{B^2(-Aa-C-Bb)^2}{(A^2+B^2)^2})}\\
&=\sqrt{(\frac{A^2(-Bb - C-Aa)^2+B^2(-Aa-C-Bb)^2}{(A^2+B^2)^2})}\\
&=\sqrt{(\frac{A^2(-Aa-Bb-C)^2+B^2(-Aa-Bb-C)^2}{(A^2+B^2)^2})}\\
&=\sqrt{(\frac{(A^2+B^2)(-Aa-Bb-C)^2)}{(A^2+B^2)^2})}\\
&=\sqrt{(\frac{(-Aa-Bb-C)^2}{A^2+B^2})}\\
&=\frac{\left| -(-Aa-Bb-C) \right|}{\sqrt{A^2+B^2}}\\
&=\frac{\left| Aa+Bb+C \right|}{\sqrt{A^2+B^2}}
\end{align}
\]
算是推出来了吧,难受的很,好几次都因为前面算错了导致最后这步算不出来,浪费了很多时间