




其原理如下:
假设有3个点 P1(x1,y1), P2(x2,y2), P3(x3,y3)。
若3点共线,则任意两点的斜率必然相等。比如 K1=(y1-y2)/(x1-x2),K2=(y1-y3)/(x1-x3),
则 K1=K2,考虑到误差,|k1-k2|<1e-5,即可判定共线,无法计算圆心。
圆心
假设圆心坐标(a,b)。圆心到任意点的距离都是圆的半径,则有
(a-x1)^2+(b-y1)^2=(a-x2)^2+(b-y2)^2
(a-x1)^2+(b-y1)^2=(a-x3)^2+(b-y3)^2
==>
2(x1-x2)a+2(y1-y2)b=x1^2-x2^2+y1^2-y2^2
2(x1-x3)a+2(y1-y3)b=x1^2-x3^2+y1^2-y3^2
==>
a+(y1-y2)/(x1-x2)b=(x1^2-x2^2+y1^2-y2^2)/2(x1-x2)
a+(y1-y3)/(x1-x3)b=(x1^2-x3^2+y1^2-y3^2)/2(x1-x3)
==>
a=[(y1-y2)(x1^2-x3^2+y1^2-y3^2)-(y1-y3)(x1^2-x2^2+y1^2-y2^2)]/2[(y1-y2)(x1-x3)-(x1-x2)(y1-y3))]
b=[(x1-x3)(x1^2-x2^2+y1^2-y2^2)-(x1-x2)(x1^2-x3^2+y1^2-y3^2)]/2[(y1-y2)(x1-x3)-(x1-x2)(y1-y3))]
`
半径
R=√[(a-x1)^2+(b-y1)^2]
