直线方程初探


平行与垂直

平行即斜率相同,在一般式 \(Ax+By+C=0\) 中,如果要判断平行,记住斜率 \(-\dfrac{A_1}{B_1}=-\dfrac{A_2}{B_2}\) 就行了,当然在带入数之前,要适当地对等式施加一些变换,这样之后代入数之后才更好算。

垂直靠方向向量的点积等于零推出来,即 \(1+k_1k_2=0\),即 \(k_1k_2=-1\),在一般式中就是 \(\dfrac{A_1A_2}{B_1B_2}=-1\),当然正如上面所说的,先在脑子里把这个式子换成 \(A_1A_2+B_1B_2=0\) 会更好,因为现在这种形式符号一般会更少,脑子更容易处理。


距离问题

两点间距离公式 \(\sqrt{(x_1-x_2)^2+(y_1-y_2)^2}\)

点到直线的距离

如果是 \(P(x_0,y_0)\)\(y=kx+b\),那么把 \(y=kx+b\)\(y-y_0=-\dfrac1k(x-x_0)\) 联立,最后用两点间距离公式就行了。

如果是 \(P(x_0,y_0)\)\(Ax+By+C=0\),有一个很简便的公式 \(d=\dfrac{|Ax_0+By_0+C|}{\sqrt{A^2+B^2}}\)。(这玩意不比上面那个傻逼联立好用?)

这个公式在 \(A=0\)\(B=0\) 的情况也能用。

这个有很多推导方法,要是闲着没事,我往这里放了一种,可以看看。

以下推导默认 \(A\neq0\and B\neq0\)

首先有一个小插曲,\(Ax_0+By_0+C\)\((x_0,y_0)\) 不在直线上时看似没有意义对吧?毕竟直线本身就是 \(x,y\) 两个维度之间的关系,但是如果只确定一个维度,直线上是必然存在一个点的。

那么必有 \(x_1,y_1\) 使得 \((x_0,y_1)\)\((x_1,y_0)\) 均在直线上,故而 \(Ax_0+By_0+C=Ax_0+By_1+C+B(y_0-y_1)=B(y_0-y_1)\),且 \(Ax_0+By_0+C=Ax_1+By_0+C+A(x_0-x_1)=A(x_0-x_1)\)

那么设 \(\Delta x=x_0-x_1\)\(\Delta y=y_0-y_1\),显然 \(|\Delta x|\) 就是 \(P(x_0,y_0)\) 沿 \(x\) 轴方向到直线的距离,\(|\Delta y|\) 就是沿 \(y\) 轴方向到直线的距离,而且:

\[|\Delta x|=\left|\dfrac{Ax_0+By_0+C}{A}\right|\\ |\Delta y|=\left|\dfrac{Ax_0+By_0+C}{B}\right| \]

那么这就形成了一个以 \(|\Delta x|\)\(|\Delta y|\) 为边长的直角三角形,斜边上的高就是点到直线的距离。

如果算出了斜边长 \(L\),那么点到直线的距离 \(d=\dfrac{|\Delta x|\cdot|\Delta y|}L\)

首先 \(L=\sqrt{|\Delta x|^2+|\Delta y|^2}=\sqrt{\dfrac{(A^2+B^2)(Ax_0+By_0+C)^2}{A^2B^2}}=\dfrac{\sqrt{A^2+B^2}}{|AB|}\cdot|Ax_0+By_0+C|\)

所以 \(d=\dfrac{|Ax_0+By_0+C|}{\sqrt{A^2+B^2}}\)

平行直线的距离

这个公式是 点到直线的距离 公式的衍生。

得到它的具体方法是,先把两条直线整理成 \(A,B\) 都相同的状态,然后其中一条直线在 \(y\) 轴上的点(即 \((0,截距)\))到另一条直线上的距离就是所求了。

也就是 \(\dfrac{|C_1-C_2|}{\sqrt{A^2+B^2}}\)

这个公式在 \(B=0\) 的时候也能用。

这两个公式是用有约束的情况推的,却能用到所有情况上,不免令人遐想:这类问题是否可以用更高的视角看待?


对称问题

关于直线对称的点

已知点 \(P(x_0,y_0)\),直线 \(Ax+By+C=0\),求点 \(P\) 关于直线的对称点 \(P'(x_1,y_1)\)

还记得在本节的 **距离问题 **中证明 点到直线的距离公式 时用到的 \(Ax_0+By_0+C=?\) 的相关结论吗?

可以发现:

\[x_1=x_0-\Delta x=x_0-\frac{Ax_0+By_0+C}A=-\frac{By_0+C}A\\ y_1=y_0-\Delta y=y_0-\frac{Ax_0+By_0+C}B=-\frac{Ax_0+C}B \]

然而这个公式在 \(A=0\) 或是 \(B=0\) 的情况下不顶用,要减去两个 \(\Delta\),我在网上搜到了另一个公式:

\[x_1=x_0-2A\cdot\frac{Ax_0+By_0+C}{A^2+B^2}\\ y_1=y_0-2B\cdot\frac{Ax_0+By_0+C}{A^2+B^2} \]

这个公式在 \(A=0\) 或是 \(B=0\) 的情况也顶用。

这个是通过求直线和两个对称点所成直线的交点推出来的,我摸了,不证了。

关于直线对称的直线

有公式:

直线 \(ax+by+c\) 关于对称轴 \(Ax+By+C\) 的对称直线为:

\[(A^2+B^2)(ax+by+c)=(2aA+2bB)(Ax+By+C) \]

证不了,摸了。

不用公式的话,如果对称轴水平或者竖直且直线与对称轴有交点还挺好求,其它情况就很操蛋。

posted @   sirinakydxt  阅读(477)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· Ollama——大语言模型本地部署的极速利器
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· Windows编程----内核对象竟然如此简单?
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示