只谈思路.
方法一:
因圆切线的斜率等于其导数,原方程两边求导:
2(x-a)+2(y-b)y'=0
y'=-(x-a)/(y-b)
设切点坐标(x1,y1),则切线方程:
(y-y1)/(x-x1)=-(x1-a)/(y1-b) (1)
于是(y0-y1)/(x0-x1)=-(x1-a)/(y1-b)
联立圆方程求出x1、y1,代入(1)即可.
方法二:
过(x0,y0)的直线方程为:
y=k(x-x0)+y0 (2)
带入圆方程,得:
(x-a)^2+[k(x-x0)+y0-b]^2=r^2
这是关于x的一元二次方程,根据切线性质,该方程应该有相等的两个根,所以delta=0,解这个关于k的方程,带入(2)就可.
方法三:
设P(x0,y0)和圆心O相距l,则:
l^2=(x0-a)^2+(y0-b)^2
设切点为Q(x1,y1),则:
角OPQ=arcsin(r/l)
切线斜率有两个:
k1=tan{arctan[(y0-a)/(x0-b)]+arcsin(r/l)}
k2=tan{arctan[(y0-a)/(x0-b)]-arcsin(r/l)}
用点斜式写出切线方程.