2つの円の方程式
中心をC(x₁, y₁)、半径がrである円の方程式は2点間の距離の公式からわかります。円周上の点をP(x, y)とすれば、CP=rすなわちCP²=r²であることから
(x- x₁)²+(y- y₁)²=r² 円の方程式(標準形)
と表されます。これが円の方程式の標準形です。
標準形を展開すると、
x²-2 x₁x+ x₁²+y²-2 y₁y+ y₁²-r²=0
x²+y²-2 x₁x-2y₁y+ x₁²+ y₁²-r²=0
すなわち、
x²+y²+ax+by+c=0 円の方程式(一般形)
の形をしていることがわかります。これが円の方程式の一般形です。
平面上の3点が与えられると未定係数がa、b、cについての連立方程式がつくられ、これを解くことでa、b、cが決定します。このことから異なる3点を通る円が一つ決まることがわかります。
座標を入れる
土器の図に座標を入れることにより、円弧上の3点の座標を取り出すことができます。実際に座標を入れてみるとわかりますが、その入れ方で3点の座標の精度が変わります。下の図は、計算を分かりやすくするために3点が格子点(x座標およびy座標がともに整数値の点)となるようにメッシュ間隔と原点Oの位置を選んであります。
3点として(2,5)、(4,9)、(9,13)を選ぶことができます。この3点を円の方程式(一般形)に代入すれば、未定係数a、b、cについての連立方程式ができあがります。見てわかるように格子点を選んだので、係数が整数なので手計算で連立方程式は解けます。
第1式と第2式からcを消去します。同様に第2式と第3式からもcを消去します。出来上がったaとbの連立方程式を解くことでaとbが求まります。aとbの値からcが求まります。
Pythonに解かせてもいいでしょう。pythonによる方程式を解くコーディングはPythonで3次方程式を解く|Pythonで数学を学ぼう! 第35回で紹介しています。次がコードです。
solve([2*a+5*b+c+29, 4*a+9*b+c+97, 9*a+13*b+c+250],[a,b,c])
このコードを実行させると
{a: -85/3, b: -17/6, c: 251/6}
が出力されます。
こうして未定係数a、b、cが求まり円の方程式(一般形)が得られます。
一般形を標準形に変形する
一般形からは円の中心および半径がわかりません。標準形に変形します。一般形のxとyの係数をそれぞれ2分の1にする(-85/3→-85/6、-17/6→-17/12)ことで、標準形に変形することができます。定数項は右辺に集めます。これが半径rの2乗r²になります。
はたして、中心(85/6, 17/12)、半径r=12.68…が得られます。この結果を座標に反映してみると3点を通る円周が浮かび上がります。
円は3点で決まることを前回の幾何学的解法と今回の方程式による解法でみてみました。円とは2次元平面上のある点から等距離にある点の集合です。これが3次元空間になったのが球面です。
次回はGPSによる測位の仕組みをみていきます。
インフォマティクスからのお知らせ
今回のコラムでは、円の方程式を使って土器の破片から元の大きさを求める方法をご紹介しましたが、GIS(地理情報システム)でも同様の幾何学原理により、空間情報を使って位置や形状、領域を高精度に解析できます。
たとえば、GISを活用することで
・多点データから正確な中心・半径(領域)を計算
・現場の位置情報をリアルタイムに地図上に表示(例:車両位置の管理)
・3Dビジュアライゼーションにより、迅速かつ正確な判断をサポート(例:都市計画、災害対策)
といったことが可能になります。
「GISを使ってデータを解析してみたい」「既存の図形処理やモデルを地図上に展開したい」とお考えの方は、ぜひこの機会にGISソフト「SIS」の無料トライアルを体験してみませんか?
トライアルのお知らせ
📝無償版SISの機能紹介記事はこちら