ねこでじ(Nekodigi)

Nekodigi’s diary

学習中の気づきをまとめています。応援よろしくお願いします

【Processing】三点を通る円を求める

成果物

www.youtube.com
三点を入力すると、それを通る円の方程式を求めてくれます。そして、その方程式から、円の中心と半径を求め、Processingに表示しています。

仕組み

   \begin{array}{l}
三点でのx,yを代入すると、連立方程式を解くことでl,m,nが求められます。\\
\begin{cases}
lx_{0} +my_{0} +n= & -\left( x_{0}^{2} +y_{0}^{2}\right)\\
lx_{1} +my_{1} +n= & -\left( x_{1}^{2} +y_{1}^{2}\right)\\
lx_{2} +my_{2} +n= & -\left( x_{2}^{2} +y_{2}^{2}\right)
\end{cases}
\end{array}
 \begin{array}{l}
円の方程式\\
x^{2} +y^{2} +lx+my+n=0\\
cx=-\frac{l}{2}\\
cy=-\frac{m}{2}\\
rは中心と三点の距離と同じです。
\end{array}
※追記
よりシンプルに解くことが出来るようにコードを追加しました。Horikawa JunitiroさんのHyperbolic Tilingに良いコードがあるのですが、出典が分からないので別のものを参考にしました。より良いコードを知っている方は教えてください。
www.geeksforgeeks.org

コード

Circle passing through 3 pointsという名前で追加しています。
github.com