圆的公切线

1. 圆外一点切线问题

已知点P(x0,y0)P(x_0,y_0)在圆C:(xx1)2+(yy1)2=r2C:(x-x_1)^2+(y-y_1)^2=r^2外, 求过点PP引圆CC的两条切线.

2. 求解

2.1. 距离法

设切线的斜率为kk(至少有一个斜率存在), 切线方程设为y=k(xx0)+y0y=k(x-x_0)+y_0, 则由距离公式

r=k(x1x0)+y0y11+k2.r=\dfrac{|k(x_1-x_0)+y_0-y_1|}{\sqrt{1+k^2}}.

化简整理后为关于kk的二次函数, 如果只有一个解, 那么另外一条切线是x=x0x=x_0.

该方法容易想到, 但是解一元二次方程可能计算量会比较大, 因此不太推荐

2.2. 正切公式法(推荐)

设切线方程为y=k(xx0)+y0y=k(x-x_0)+y_0.

如图所示, tanα=rPC2r2\tan \alpha = \dfrac{r}{\sqrt{|PC|^2-r^2}},

直线PCPC的斜率为kPC=y0y1x0x1k_{PC}=\dfrac{y_0-y_1}{x_0-x_1},

则切线斜率可以表示为

k=kPC+tanα1kPCtanα 或 kPCtanα1+kPCtanα,k=\dfrac{k_{PC}+\tan \alpha}{1-k_{PC}\tan \alpha} \text{ 或 } \dfrac{k_{PC}-\tan \alpha}{1+k_{PC}\tan \alpha},

上式若有出现分母为零, 则对应切线为x=x0x=x_0.

kPCk_{PC}的分母为零, 则k=±1tanαk=\pm \dfrac{1}{\tan \alpha}.

推荐用该方法,

用此法, 必画图!

3. 两圆公切线问题

如何求两个圆

的公切线?

4. 求解

4.1. 方程法(推荐)

设公切线方程为y=kx+by=kx+b, 列出方程组

{kx1+by11+k2=r1kx2+by21+k2=r2\begin{cases} \dfrac{|kx_1+b-y_1|}{\sqrt{1+k^2}}=r_1\\[1em] \dfrac{|kx_2+b-y_2|}{\sqrt{1+k^2}}=r_2\\[1em] \end{cases}

上面两式相除, 然后整理得

r2kx1+by1=r1kx2+by2,r_2|kx_1+b-y_1|=r_1|kx_2+b-y_2|,

去绝对值有两种情形, 即:

r2(kx1+by1)=r1(kx2+by2),r_2(kx_1+b-y_1)=r_1(kx_2+b-y_2),

r2(kx1+by1)=r1(kx2+by2),r_2(kx_1+b-y_1)=-r_1(kx_2+b-y_2),

接下来可以消参, 并回代原方程, 最后求两次一元二次方程, 计算略复杂.

当然有一种办法, 可以通过kkbb的关系, 先求出直线的定点. 例如方程r2(kx1+by1)=r1(kx2+by2)r_2(kx_1+b-y_1)=r_1(kx_2+b-y_2), 可化简整理成

k(r2x1r1x2)+(r2r1)b=r2y1r1y2.k(r_2x_1-r_1x_2) + (r_2-r_1)b=r_2y_1-r_1y_2.

因此直线必过定点 (r2x1r1x2r2r1,r2y1r1y2r2r1)\left(\dfrac{r_2x_1-r_1x_2}{r_2-r_1}, \dfrac{r_2y_1-r_1y_2}{r_2-r_1}\right).

r1=r2r_1=r_2最好用几何法去做

另外一定点可以根据所谓的同构, 直接写出(原理是只需在式中的所有r1r_1前面加上负号), 另一个定点坐标为 (r2x1+r1x2r2+r1,r2y1+r1y2r2+r1)\left(\dfrac{r_2x_1+r_1x_2}{r_2+r_1}, \dfrac{r_2y_1+r_1y_2}{r_2+r_1}\right).

求出定点之后, 再根据具体情况求切线:

这种方法有点万能, 并且很容易想到, 但是计算需要一定技巧

计算技巧的核心就是, 两式相除, 得到kkbb的关系

4.2. 三角换元法(最推荐)

4.2.1. 圆上一点的切线

不难验证, 过圆 C:(xa)2+(yb)2=r2C:(x-a)^2+(y-b)^2=r^2上的点M(a+rcost,b+rsint)M(a+r\cos t,b+r\sin t )的切线方程为

l:xcost+ysint(acost+bsint+r)=0l:x\cos t+y\sin t - (a\cos t + b\sin t + r) = 0

只需验证:

4.2.2. 两圆公切线

根据圆上一点切线的结论, 可以设公切线为

xcost+ysint(x1cost+y1sint+r1)=0x\cos t+y\sin t - (x_1\cos t + y_1\sin t + r_1) = 0

xcosθ+ysinθ(x2cosθ+y2sinθ+r2)=0.x\cos \theta +y\sin \theta - (x_2\cos \theta + y_2\sin \theta + r_2) = 0.

O2(x2,y2)O_2(x_2,y_2)到该公切线的距离等于圆半径r2r_2, 有

r2=x2cost+y2sint(x1cost+y1sint+r1)r_2=|x_2\cos t +y_2\sin t - (x_1\cos t + y_1\sin t + r_1)|

去绝对值得

()(x2x1)cost+(y2y1)sint=r1±r2(\star)\quad (x_2-x_1)\cos t + (y_2-y_1)\sin t = r_1 \pm r_2

接下来利用辅助角公式求解()(\star)式. 设R=(x2x1)2+(y2y1)2R=\sqrt{(x_2-x_1)^2+(y_2-y_1)^2}, 因此可令

于是根据()(\star)式有

Rsin(θ+t)=r1±r2R\sin(\theta+t)={r_1\pm r_2}

所以

sin(t)=sin(θ+tθ)=sin(θ+t)cos(θ)cos(θ+t)sin(θ)=sin(θ+t)x2x1R±1sin2(θ+t)y2y1R\begin{aligned} \sin(t)&=\sin(\theta+t-\theta) \\&=\sin(\theta+t)\cos(\theta)-\cos(\theta+t)\sin(\theta)\\ &=\sin(\theta+t)\dfrac{x_2-x_1}{R} \pm \sqrt{1-\sin^2(\theta+t)}\dfrac{y_2-y_1}{R} \end{aligned}

其中sin(θ+t)=r1±r2R\sin(\theta+t)=\dfrac{r_1\pm r_2}{R}, 因此sin(t)\sin(t)最多可能有四种情况,

得到sin(t)\sin(t)后, 可通过()(\star)式算出cos(t)\cos(t)

该算法计算量少, 且无需麻烦的讨论.

4.3. 分类讨论法

得分情况讨论, 本质上是需要考虑

4.3.1. 两内切圆的公切线

只需把两个圆的解析式做差, 也就是公切线为:

l:(xx1)2+(yy1)2(xx2)2(yy2)2=r12r22,l:(x-x_1)^2+(y-y_1)^2-(x-x_2)^2-(y-y_2)^2=r_1^2-r_2^2,

化简整理得

l:(x2x1)x+(y2y1)y=t,l:(x_2-x_1)x+(y_2-y_1)y=t,

其中t=12[r12r22+x22+y22x12y12]t=\dfrac{1}{2}[r_1^2-r_2^2+x_2^2+y_2^2-x_1^2-y_1^2].

只需验证:

自行验证

4.3.2. 两相交圆的公切线

若满足r2r1<O1O2<r1+r2|r_2-r_1|<|O_1O_2|<r_1+r_2, 则两圆相交. 此时它们有两条公切线, 分别设为l1,l2l_1,l_2, 设这两条公切线的交点为P(x0,y0)P(x_0,y_0).

(1)r1=r2r_1=r_2, 则两切线都与直线O1O2O_1O_2平行, 直线O1O2O_1O_2方程为:

(y2y1)(xx1)+(x1x2)(yy1)=0(y_2-y_1)(x-x_1)+(x_1-x_2)(y-y_1)=0

设切线方程为

(y2y1)(xx1)+(x1x2)(yy1)+t=0(y_2-y_1)(x-x_1)+(x_1-x_2)(y-y_1)+t=0

则根据平行线距离公式有

r=t(y1y2)2+(x1x2)2,r=\dfrac{|t|}{|\sqrt{(y_1-y_2)^2+(x_1-x_2)^2}|},

于是

t=rO1O2 或 rO1O2t=r|O_1O_2| \text{ 或 } -r|O_1O_2|


(2)r1r2r_1\neq r_2, 不妨设(r2>r1r_2>r_1)

法一(公切线交点法): 根据向量关系

O1P=r1r2O2P=r1r2(O2O1+O1P),\overrightarrow{O_1P}=\dfrac{r_1}{r_2}\overrightarrow{O_2P}=\dfrac{r_1}{r_2}(\overrightarrow{O_2O_1}+\overrightarrow{O_1P}),

于是有

O1P=r1r2r1O2O1\overrightarrow{O_1P}=\dfrac{r_1}{r_2-r_1}\overrightarrow{O_2O_1}

(也可直接三角形相似得到上一步)可解得

{x0=x1+r1r2r1(x1x2)=r2x1r1x2r2r1y0=x1+r1r2r1(y1y2)=r2y1r1y2r2r1\begin{cases} x_0=x_1+\dfrac{r_1}{r_2-r_1}(x_1-x_2)=\dfrac{r_2x_1-r_1x_2}{r_2-r_1}\\[1em] y_0=x_1+\dfrac{r_1}{r_2-r_1}(y_1-y_2)=\dfrac{r_2y_1-r_1y_2}{r_2-r_1}\\ \end{cases}

接下来只需考虑圆外一点求切线的问题, 可参考之前的讨论

法二(辅助圆法):

只给出这种方法的思路, 设公切线方程为y=kx+by=kx+b

上面两步可依次求出kkbb.

法三(斜率法):

这种方法先是先求出斜率, 再根据距离公式算出截距. 这里只给出求斜率的办法. 如图, 设公切线斜率为kk, 两圆心所在直线斜率为k0k_0, 几何关系可以得到

tanα=r2r1O1O22(r2r1)2\tan \alpha =\dfrac{r_2-r_1}{\sqrt{|O_1O_2|^2-(r_2-r_1)^2}}

于是, 根据正切公式

k=k0±tanα1k0tanαk=\dfrac{k_0 \pm \tan \alpha}{1\mp k_0\tan \alpha}

4.3.3. 两外切圆的公切线

若满足O1O2=r1+r2|O_1O_2|=r_1+r_2, 则两圆外切. 公切线共有三条

其中有两条切线的求解方法同两相交圆的公切线

另外一条切线的求解方法同两内切圆的公切线

4.3.4. 两相离圆的公切线

若满足O1O2>r1+r2|O_1O_2|>r_1+r_2, 则两圆相离. 公切线有四条.

求解思路同两相交圆的公切线, 不同的是, 需要分两种情况讨论

两对切线的交点坐标分别为

{x0=r2x1r1x2r2r1,y0=r2y1r1y2r2r1,{x0=r2x1+r1x2r2+r1,y0=r2y1+r1y2r2+r1.\begin{cases} x_0=\dfrac{r_2x_1-r_1x_2}{r_2-r_1},\\[1em] y_0=\dfrac{r_2y_1-r_1y_2}{r_2-r_1},\\ \end{cases} \quad \begin{cases} x_0=\dfrac{r_2x_1+r_1x_2}{r_2+r_1},\\[1em] y_0=\dfrac{r_2y_1+r_1y_2}{r_2+r_1}.\\ \end{cases}

辅助圆也对应需要做两个, 圆心都是O2O_2, 半径分别是r2r1r_2-r_1r2+r1r_2+r_1


5. GeoGebra绘制两圆公切线

自己动手丰衣足食, 把下面代码一行行输入到下面链接输入框里

r1=1
r2=3
A=(2,2)
B=(5,4)
c1:circle(A,r1)
c2:circle(B,r2)
P = (r2*A-r1*B)/(r2-r1)
Tangent(P,c1)
Q = (r2*A+r1*B)/(r2+r1)
Tangent(Q,c1)
# 对于两圆相切的情形,可加上下面代码
tg:LeftSide(c1)-LeftSide(c2)=RightSide(c1)-RightSide(c2)

6. 例题

6.1. 问题

(22年数1)写出与圆x2+y2=1x^2+y^2=1(x3)2+(y4)2=16(x-3)^2+(y-4)^2=16都相切的一条直线的方程

6.2. 三角换元法(最推荐)

在第一个圆上找一点(cost,sint)(\cos t,\sin t), 于是可设公切线为

xcost+ysint=1x\cos t + y\sin t=1

根据点线距等于半径: 3cost+4sint1=4|3\cos t+4\sin t-1|=4

如果在第二个圆上找一点(3+4cost,4+4sint)(3+4\cos t,4+4\sin t), 则公切线为:

xcost+ysint=3cost+4sint+4x\cos t+y\sin t=3\cos t+4\sin t+4

根据点线距等于半径: 3cost+4sint+4=1|3\cos t+4\sin t+4|=1

后面求解过程是一样的

(1)3cost+4sint1=43\cos t+4\sin t-1=4时, 即

35cost+45sint=1\dfrac{3}{5}\cos t +\dfrac{4}{5}\sin t =1

sinθ=35\sin \theta = \dfrac{3}{5}, cosθ=45\cos \theta=\dfrac{4}{5},

sin(t+θ)=1\sin(t+\theta)=1, cos(t+θ)=0\cos(t+\theta)=0, 于是

sint=sin(t+θθ)=sin(t+θ)cosθcos(t+θ)sinθ=cosθ=45\begin{aligned} \sin t &= \sin(t+\theta-\theta) \\ & = \sin(t+\theta)\cos \theta -\cos(t+\theta)\sin \theta\\ &= \cos \theta = \dfrac{4}{5} \end{aligned}

从而cost=53(145sint)=35\cos t=\dfrac{5}{3}(1-\dfrac{4}{5}\sin t)=\dfrac{3}{5}

这种计算方式可以优化, 这样写只是为了体现一般性

因此切线方程为: 35x+45y1=0\dfrac{3}{5}x+\dfrac{4}{5}y-1=0

(2)3cost+4sint1=43\cos t+4\sin t-1=-4时, 即

35cost+45sint=35\dfrac{3}{5}\cos t+\dfrac{4}{5}\sin t=-\dfrac{3}{5}

sinθ=35\sin \theta = \dfrac{3}{5}, cosθ=45\cos \theta=\dfrac{4}{5},

sin(t+θ)=35\sin(t+\theta)=-\dfrac{3}{5}, cos(t+θ)=±45\cos(t+\theta)=\pm \dfrac{4}{5}, 于是

sint=sin(t+θθ)=sin(t+θ)cosθcos(t+θ)sinθ=3545±4535=0 或 2425\begin{aligned} \sin t &= \sin(t+\theta-\theta) \\ & = \sin(t+\theta)\cos \theta -\cos(t+\theta)\sin \theta\\ &= -\dfrac{3}{5}\cdot\dfrac{4}{5} \pm \dfrac{4}{5} \dfrac{3}{5} \\ &= 0 \text{ 或 } - \dfrac{24}{25} \end{aligned}

综上所述, 所有公切线为:

6.3. 方程法(推荐)

写出与圆x2+y2=1x^2+y^2=1(x3)2+(y4)2=16(x-3)^2+(y-4)^2=16都相切的一条直线的方程

懒得画图, 就用代数法快速推导出公切线上的点,

这种计算没必要额外记公式

设公切线方程为: y=kx+by=kx+b

根据点线距等于半径, 列两个方程

3k+b4=4b|3k+b-4|=4|b|

(1)3k+b4=4b3k+b-4=4b时, 即3k3b=43k-3b=4, 整理得k+b=43-k+b=-\dfrac{4}{3},

因此, 公切线必过点P(1,43)P(-1,-\dfrac{4}{3}),

于是tanα=rOP2r2=34\tan \alpha=\dfrac{r}{\sqrt{|OP|^2-r^2}}=\dfrac{3}{4}, 以及 kOP=43k_{OP}=\dfrac{4}{3}

k=kOP±tanα1kOPtanα=43±3411k=\dfrac{k_{OP}\pm \tan \alpha}{1\mp k_{OP}\tan \alpha}=\dfrac{\dfrac{4}{3}\pm \dfrac{3}{4}}{1\mp 1}

对于此题而言, 直接把b=k43b=k-\dfrac{4}{3}, 代入到 b1+k2=1\dfrac{|b|}{\sqrt{1+k^2}}=1中, 反而更简单, 不过这样计算容易遗漏kk不存在的情形

(2)3k+b4=4b3k+b-4=-4b时, 即3k+5b=43k+5b=4,整理得35k+b=45\dfrac{3}{5}k+b=\dfrac{4}{5},

因此, 公切线必过点(35,45)(\dfrac{3}{5},\dfrac{4}{5}),

不难发现它恰好在第一个圆上,

所以公切线为35x+45y1=0\dfrac{3}{5}x+\dfrac{4}{5}y-1=0

综上所述, 所有公切线为:

7. 总结