圆上三点坐标计算圆心坐标
原理
圆上任意两点的中垂线都会相交于圆心。
三点共线
假设有3个点 \(P_{1}(x_{1}, y_{1})\), \(P_{2}(x_{2}, y_{2})\), \(P_{3}(x_{3}, y_{3})\)。
若3点共线,则任意两点的斜率必然相等。比如 \(K_{1}=\frac{y_{1}-y_{2}}{x_{1}-x_{2}}\),\(K_{2}=\frac{y_{1}-y_{3}}{x_{1}-x_{3}}\),
则 K1=K2,考虑到误差,|k1-k2|<1e-5,即可判定共线,无法计算圆心。
圆心
假设圆心坐标 (x,y)。圆心到任意点的距离都是圆的半径,则有
\[\begin{cases}
(x-x_{1})^{2}+(y-y_{1})^{2}=(x-x_{2})^{2}+(y-y_{2})^2
\\
(x-x_{1})^{2}+(y-y_{1})^{2}=(x-x_{3})^{2}+(y-y_{3})^2
\end{cases}
\Longrightarrow
\begin{cases}
2(x_{1}-x_{2})x+2(y_{1}-y_{2})y=x_{1}^2-x_{2}^2+y_{1}^2-y_{2}^2
\\
2(x_{1}-x_{3})x+2(y_{1}-y_{3})y=x_{1}^2-x_{3}^2+y_{1}^2-y_{3}^2
\end{cases}
\Longrightarrow
\begin{cases}
x+\frac{y_{1}-y_{2}}{x_{1}-x_{2}}y=\frac{x_{1}^2-x_{2}^2+y_{1}^2-y_{2}^2}{2(x_{1}-x_{2})}
\\
x+\frac{y_{1}-y_{3}}{x_{1}-x_{3}}y=\frac{x_{1}^2-x_{3}^2+y_{1}^2-y_{3}^2}{2(x_{1}-x_{3})}
\end{cases}\]
假设
\[\begin{aligned}
a & = x_{1}-x_{2} \\
b & = y_{1}-y_{2} \\
c & = x_{1}-x_{3} \\
d & = y_{1}-y_{3} \\
e & = \frac{x_{1}^2-x_{2}^2+y_{1}^2-y_{2}^2}{2} \\
f & = \frac{x_{1}^2-x_{3}^2+y_{1}^2-y_{3}^2}{2}
\end{aligned}\]
则
\[\left\{\begin{matrix}
x=\frac{bf-de}{bc-ad} \\
y=\frac{ce-af}{bc-ad}
\end{matrix}\right.
\Longrightarrow
\left\{\begin{matrix}
x=\frac{(y_{1}-y_{2})(x_{1}^2-x_{3}^2+y_{1}^2-y_{3}^2)-(y_{1}-y_{3})(x_{1}^2-x_{2}^2+y_{1}^2-y_{2}^2)}{2[(y_{1}-y_{2})(x_{1}-x_{3})-(x_{1}-x_{2})(y_{1}-y_{3}))]} \\
y=\frac{(x_{1}-x_{3})(x_{1}^2-x_{2}^2+y_{1}^2-y_{2}^2)-(x_{1}-x_{2})(x_{1}^2-x_{3}^2+y_{1}^2-y_{3}^2)}{2[(y_{1}-y_{2})(x_{1}-x_{3})-(x_{1}-x_{2})(y_{1}-y_{3}))]}
\end{matrix}\right. \]
半径
\[\begin{aligned}
R & = \sqrt{(x-x_{1})^2+(y-y_{1})^2} \\
& = \sqrt{(\frac{bf-de}{bc-ad} -x_{1})^2+(\frac{ce-af}{bc-ad} -y_{1})^2}
\end{aligned}\]