求直线对称点最快办法

1. 问题

已知点P(x1,y1)P(x_1,y_1)不在直线l:Ax+By+C=0l:Ax+By+C=0上, 求点PP关于直线ll的对称点Q(x2,y2)Q(x_2,y_2)

2. 求解

2.1. 经典方法

先找直线ll的一个法向量n=(A,B)\bm n=(A,B),

于是相应直线ll方向向量可取m=(B,A)\bm m=(-B,A)

然后根据对称原理: 垂直且平分, 得到二元一次方程组,

llPQ\overrightarrow{PQ}垂直得 mPQ=0\bm m \cdot \overrightarrow{PQ}=0, 于是

B(x2x1)+A(y2y1)=0①\quad -B(x_2-x_1)+A(y_2-y_1)=0

根据线段PQPQ的中点在直线ll上得:

Ax1+x22+By1+y22+C=0②\quad A\dfrac{x_1+x_2}{2}+B\dfrac{y_1+y_2}{2}+C=0

下面给出解方程组的技巧:

可以把式可改写成

A(x2x1)+B(y2y1)=2(Ax1+By1+C)③\quad A(x_2-x_1)+B(y_2-y_1)=-2(Ax_1+By_1+C)

通过 A×B×A\times ③-B\times ①, 得

x2x1=2AAx1+By1+CA2+B2x_2-x_1=-2A\dfrac{Ax_1+By_1+C}{{A^2+B^2}}

通过 A×+B×A\times ① + B\times ③, 得

y2y1=2BAx1+By1+CA2+B2y_2-y_1=-2B\dfrac{Ax_1+By_1+C}{{A^2+B^2}}

简单移项目, 可得x2x_2y2y_2的坐标

2.2. 快速方法 1

先找直线ll的一个法向量n=(A,B)\bm n=(A,B),

假设点PP到直线ll的距离为dd, 则根据距离公式

d=Ax1+By1+CA2+B2d=\dfrac{|Ax_1+By_1+C|}{\sqrt{A^2+B^2}}

一旦算出向量PQ\overrightarrow{PQ}, 那么QQ点坐标可以表示为

OQ=OP+PQ\overrightarrow{OQ}=\overrightarrow{OP}+\overrightarrow{PQ}

最后经过讨论可去绝对值, 推出最终结论为:

Q=(x1,y1)2Ax1+By1+CA2+B2(A,B)Q=(x_1,y_1) - 2\dfrac{Ax_1+By_1+C}{A^2+B^2}(A,B)

这是最容易推导也最好理解的一种推导办法, 缺陷是去绝对值比较麻烦一点

2.3. 快速方法 2

先找直线ll的一个单位法向量τ=1A2+B2(A,B)\bm \tau=\frac{1}{\sqrt{A^2+B^2}}(A,B),

任取直线ll上一点H(x0,y0)H(x_0,y_0), 则有

PQ=2(PHτ)τ\overrightarrow{PQ}=2(\overrightarrow{PH}\cdot\bm \tau)\bm \tau

以及

Ax0+By0+C=0Ax_0+By_0+C=0

再联立OQ=OP+PQ\overrightarrow{OQ}=\overrightarrow{OP}+\overrightarrow{PQ}, 得

OQ=(x1,y1)+2A(x0x1)+B(y0y1)A2+B2(A,B)=(x1,y1)2Ax1+By1+CA2+B2(A,B)\begin{aligned}\overrightarrow{OQ} &=(x_1,y_1)+2\dfrac{A(x_0-x_1)+B(y_0-y_1)}{A^2+B^2}(A,B)\\ &=(x_1,y_1) - 2\dfrac{Ax_1+By_1+C}{A^2+B^2}(A,B) \end{aligned}

要注意到点PP到直线ll的距离d=PHτ,方法二也可由方法一推导出来d=|\overrightarrow{PH}\cdot\bm \tau|, 方法二也可由方法一推导出来

2.4. 快速方法 3(推荐使用)

先求垂点, 再算对称点

设点PPll的距离为dd,

构造圆C:(xx1)2+(yy1)2=d2C:(x-x_1)^2+(y-y_1)^2=d^2

设线段PQPQ的中点为M(x0,y0)M(x_0,y_0), 则MM在圆上, 且圆CCMM处的切线恰好是ll, 根据圆的切线公式有:

l:(x0x1)(xx1)+(y0y1)(yy1)=d2l:(x_0-x_1)(x-x_1)+(y_0-y_1)(y-y_1)=d^2,

另一方面, 根据已知条件ll的表达式可转化为

l:A(xx1)+B(yy1)=Ax1By1Cl:A(x-x_1)+B(y-y_1)=-Ax_1-By_1-C,

同一条直线, 系数一定成比例, 也就是存在实数kk, 使得

{x0x1=kAy0y1=kBd2=k(Ax1By1C)\begin{cases} x_0-x_1=kA\\ y_0-y_1=kB\\ d^2=k(-Ax_1-By_1-C) \end{cases}

根据距离公式d=Ax1+By1+CA2+B2d=\dfrac{|Ax_1+By_1+C|}{\sqrt{A^2+B^2}}, 整理可得

{x0=x1+kAy0=y1+kB,    k=Ax1+By1+CA2+B2\begin{cases} x_0=x_1+kA\\ y_0=y_1+kB\\ \end{cases},\;\; k=-\dfrac{Ax_1+By_1+C}{A^2+B^2}.

最后可得对称点为

{x2=x1+2kAy2=y1+2kB,    k=Ax1+By1+CA2+B2\begin{cases} x_2=x_1+2kA\\ y_2=y_1+2kB\\ \end{cases},\;\; k=-\dfrac{Ax_1+By_1+C}{A^2+B^2}.

2.5. 一些结论

已知点P(x1,y1)P(x_1,y_1)不在直线l:Ax+By+C=0l:Ax+By+C=0上, 求点PP到直线ll的垂足点MM.

答案为:

OM=(x1,y1)Ax1+By1+CA2+B2(A,B)\overrightarrow{OM}= (x_1,y_1) - \dfrac{Ax_1+By_1+C}{A^2+B^2}(A,B)

推导过程同上,

理解记忆就是

找直线ll的一个法向量n=(A,B)\bm n=(A,B), 则如果该法向量与PM\overrightarrow{PM}同向, 有

PM=dnn\overrightarrow{PM}=d\dfrac{\bm n}{|\bm n|}

于是

OM=OP+PM=OP+dnn\overrightarrow{OM}=\overrightarrow{OP}+\overrightarrow{PM}=\overrightarrow{OP}+d\dfrac{\bm n}{|\bm n|}

向量法和圆切线法是求对称点或者垂足点的快速算法

3. 问题二

已知不重合的两点Q(x2,y2,z2)Q(x_2,y_2,z_2)R(x3,y3,z3)R(x_3,y_3,z_3)在直线ll上, 求P(x1,y1,z1)P(x_1,y_1,z_1)ll上的垂足点H(x0,y0,z0)H(x_0,y_0,z_0).

3.1. 求解

共线即系数贡献和为11的原理

可设OH=tOQ+(1t)OR=(tx2+(1t)x3,ty2+(1t)y3,tz2+(1t)z3)\overrightarrow{OH}=t\overrightarrow{OQ}+(1-t)\overrightarrow{OR}=\Big(tx_2+(1-t)x_3,ty_2+(1-t)y_3,tz_2+(1-t)z_3 \Big)

根据垂直关系PHRQ\overrightarrow{PH}\perp \overrightarrow{RQ}, 有

[tx2+(1t)x3x1](x2x3)+[ty2+(1t)y3y1](y2y3)+[tz2+(1t)z3z1](z2z3)=0[tx_2+(1-t)x_3-x_1]\cdot(x_2-x_3)+[ty_2+(1-t)y_3-y_1]\cdot(y_2-y_3)+[tz_2+(1-t)z_3-z_1]\cdot(z_2-z_3)=0

可解出

t=RPRQQR2t=\dfrac{\overrightarrow{RP}\cdot\overrightarrow{RQ}}{|QR|^2}

回代可得OH\overrightarrow{OH}

如果为了求点到直线距离, 也可以直接设
PH=tPQ+(1t)PR\overrightarrow{PH}=t\overrightarrow{PQ}+(1-t)\overrightarrow{PR}
这里的tt和原来式子中的tt相等

4. 距离与投影点通用结论

已知直线(或平面)的单位法向量为n\bm n, QQ为该直线(或平面)上一点, PP为直线(或平面)外一点, 则


返回主页

点我返回主页, 查看更多精彩


参考链接