師匠の散歩

JavaScriptをちょこっと

VBAで構築した内容を実行する部分をJavaScriptで記述しました。

2点を通る半径Rの円の中心座標

2点 \( A \) と \( B \)を通る半径\( R \) の円の中心座標\( C \)を求めよ。 Fig1
図:2点を通る円

検算例

  1. 2点と半径を入力
  2. 実行で結果表示
入力点1(x1.y1) / 点2(x2,y2) / 半径r
計算結果

計算式

ここでは、禁則対応は行いません。

各点の座標を以下のように定義する。

\( \begin{aligned} A:&(x_1,y_1)\\ B:&(x_2,y_2)\\ C:&(X,Y) \end{aligned} \)

点AとBの中点Pの座標は以下のようになる。

\( P:(x_3,y_3)= \left( \dfrac{x_1+x_2}{2} , \dfrac{y_1+y_2}{2} \right) \)

\( 各辺の長さ \overline{AP}=a , \overline{CP}=b \)とすると、それぞれは次のように求められる。

\( \begin{aligned} a&=\sqrt{(x_3 - x_1)^2 + (y_3 - y_1)^2} \\ b&=\sqrt{R^2-a^2}\\ \end{aligned} \)

ここで

\( \angle{PCQ}=\angle{BPQ} \)

なので、\( \phi \) は次式となる。

\( \phi= \arctan{\left(\dfrac{x_2 - x_3 }{y_2 - y_3} \right)} \)

\( \phi \) を使えば点\( C \)の座標が求められるのであるが、そもそも点\( C \)は \( \overline{AB} \) の反対側にもできることを考慮すると、 求める円は2つあり中心座標は次のどちらかの点となる。

\( C:(X,Y)= \begin{cases} \big( x_3 + b \cos\phi , y_3 - b \sin\phi \big) = \left. \Bigl[ x_3 + b \cos{ \Big\{ \arctan{ \big( \dfrac{x_2-x_3}{y_2-y_3} \big)} \Big\} } , y_3 - b \sin{ \Big\{ \arctan{ \big( \dfrac{x_2-x_3}{y_2-y_3} \big)} \Big\} } \Bigl] \right. \\ \big( x_3 - b \cos\phi , y_3 + b \sin\phi \big) = \left. \Bigl[ x_3 - b \cos{ \Big\{ \arctan{ \big( \dfrac{x_2-x_3}{y_2-y_3} \big)} \Big\} } , y_3 + b \sin{ \Big\{ \arctan{ \big( \dfrac{x_2-x_3}{y_2-y_3} \big)} \Big\} } \Bigl] \right.\\ \end{cases} \)

JavaScriptソース


Topに戻る ・・・ 戻る
Copyright(C) 2010-2014 Grandmaster 最終更新:2020/5/18