流れる空の中で数学を。

とある数学好きの「手作りすうがく」と「気ままな雑記」。

空間中の円の決定方法

Amazon.co.jp: Yoshiki Ueoka:作品一覧、著者略歴

数学関連の絶版本・品切れ本をコチラから購入できます!

事始めと問題

twitterのNAKさんが、空間中の円の決定問題についてツイートしていたので、解いてみました。以下のツイートです。

 この記事では、3つの条件下で空間中の円の決定問題を解いてみます。

中心と1点と法線ベクトルが分かっている場合

中心の位置ベクトルを\vec{p}=(p_x,p_y,p_z)とする。1点を\vec{x_1}=(x_1,y_1,z_1)とする。

このとき、中心が\vec{p}の円の方程式は、半径をrとすると、

(\vec{x}-\vec{p})^2=r^2……①

であるので、この円が点\vec{x_1}を通るので、半径rは、

r=|\vec{x_1}-\vec{p}|=\sqrt{(x_1-p_x)^2+(y_1-p_y)^2+(z_1-p_z)^2}

と求まる。

円の存在する平面の法線ベクトルを\vec{n}=(n_x,n_y,n_z)とすると、

(\vec{x}-\vec{p})\cdot \vec{n}=0……②

これから、\vec{x}=(x,y,z)z座標を変数x,yで表せる。

決定されたrを用いて、空間中の球が方程式①により決定される。②式と連立して、z座標を消去したものが、xy平面に射影した円の方程式となり、その各点に対して、求める円のz座標を②式で計算できる。

半径と2点と円の平面の法線ベクトルがわかっている場合

2点の内、一点を原点とする三次元座標をとると、既知の情報は、半径rと2点\vec{0}=(0,0,0),\vec{x_1}=(x_1,y_1,z_1)を通ること、および、円が与えられた法線ベクトル\vec{n}=(n_x,n_y,n_z)に垂直な平面内にあることである。このとき、円の中心の位置ベクトルを\vec{p}=(p_1,p_2,p_3)として円の方程式を書くと、

(\vec{x}-\vec{p})^2=r^2……①

与えられた2点を通ることから、

\vec{p}^2=r^2……②

r^2=(\vec{x_1}-\vec{p})^2=\vec{x_1}^2-2\vec{x_1} \cdot \vec{p}+\vec{p}^2

rを消去すると、

\vec{x_1}^2-2\vec{x_1} \cdot \vec{p}=0

2\vec{x_1} \cdot \vec{p}=\vec{x_1}^2

を得る。ここで、実数X

X=\vec{x_1}^2=x_1^2+y_1^2+z_1^2

と定義しておく。すると、

2(x_1p_x+y_1p_y+z_1p_z)-X=0……③

次に、円のある平面内に、円の中心もあるので、

\vec{p}\cdot\vec{n}=0

p_x n_x+p_y n_y+p_z n_z=0

3次元空間中の円を考えているので、n_z\neq 0と設定しておくと、

p_z=-\frac{1}{n_z}(p_x n_x+p_y n_y)

p_z=ap_x+bp_y……④

ここで、実数a,b

a=-\frac{n_x}{n_z}

b=-\frac{n_y}{n_z}

 とおいた。④を③に代入して、

2(x_1p_x+y_1p_y+z_1(ap_x+bp_y))-X=0

p_y=\frac{(X/2)-(x_1+a z_1)p_x}{y_1+b z_1} 

p_y=c+d p_x……⑤

ここで、実数c,d

c=\frac{X}{2(y_1+b z_1)}

d=-\frac{x_1+a z_1}{y_1+b z_1}

 で定義した。すると、④式より、

p_z=ap_x+b(c+d p_x)=bc+(a+bd)p_x

そして、②式より、

p_x^2+p_y^2+p_z^2=r^2

なので、

p_x^2+(c+d p_x)^2+(bc+(a+bd)p_x)^2=r^2

p_x^2+(c+d p_x)^2+(bc+(a+bd)p_x)^2-r^2=0

(1+d^2+(a+bd)^2)p_x^2+2(cd+abc+b^2cd )p_x+c^2(1+b^2)-r^2=0

 これは、p_xについての2次方程式なので、中心のx座標は2つあり、円は2通り考えられる。p_xについて解くと、2次方程式の解の公式より、

p_x=\frac{-(cd+abc+b^2cd)\pm \sqrt{(cd+abc+b^2cd)^2-(1+d^2+(a+bd)^2)(c^2(1+b^2)-r^2)}}{(1+d^2+(a+bd)^2)}

従って、各p_xに対して、④⑤式より、p_y,p_zが決定できる。与えられた半径rと中心の位置ベクトル\vec{p}=(p_x,p_y,p_z)が求まったので、球の方程式は、①となる。

この式と法線ベクトルの式を用いて、変数zを消去すると、xy平面に射影した円の方程式が得られ、同じ式を用いることで、求める円のz座標も求まる。

3点が与えられている場合

3点の内、x座標の値が最も値が小さいものが原点になるように、座標を取り直す。すると、3点は\vec{0}=(0,0,0),\vec{x_1}=(x_1,y_1,z_1),\vec{x_2}=(x_2,y_2,z_2)と表せる。全ての点を適切に平行移動することで、一般性は失われない。

この3点により、円の存在する平面が決定されるので、その平面の法線ベクトルに平行なベクトル\vec{n}は、

\vec{n}=\vec{x_1}\times\vec{x_2}=(n_x,n_y,n_z)=(y_1z_2-z_1y_2,z_1x_2-x_1z_2,x_1y_2-y_1x_2)

と計算できる。円上の点の位置ベクトルを\vec{x}とすると、円はこのベクトルに垂直なので、

\vec{n}\cdot \vec{x}=0……①

また、円の中心の位置ベクトルを\vec{p}=(p_1,p_2,p_3)、半径をrとすると、

(\vec{x}-\vec{p})^2=r^2……②

となる。円上の3点が1直線上にあることはないので、位置ベクトル\vec{x_1},\vec{x_2}は平行ではないので、この2つベクトルの線形結合で中心の位置ベクトルを表すことができる。すなわち、ある実数s,tを用いて

\vec{p}=s\vec{x_1}+t\vec{x_2}……③

と表せる。ここで、座標軸の取り方から、

s,t\ge 0

である。円の中心の位置ベクトルは、平面の法線ベクトルに垂直なので、

0=\vec{n} \cdot \vec{p}

=\vec{n} \cdot (s\vec{x_1}+t\vec{x_2})

=(\vec{n} \cdot \vec{x_1})s+(\vec{n} \cdot \vec{x_2}) t=0

= t=-\frac{\vec{n} \cdot \vec{x_1}}{\vec{n} \cdot \vec{x_2} }s 

t=\alpha s……④

ここで、実数\alpha

\alpha=-\frac{\vec{n} \cdot \vec{x_1}}{\vec{n} \cdot \vec{x_2} }

=-\frac{n_x x_1+n_y y_1+n_z z_1}{n_x x_2+n_y y_2+n_z z_2}

で定義した。

また、円は原点を通るので、

\vec{p}^2=r^2

r=\sqrt{p_x^2+p_y^2+p_z^2}……⑤

となる。従って、中心の位置ベクトルを決定できれば、円の半径がこの式により求まる。

②式と連立して、

\vec{x}^2-2\vec{x}\cdot \vec{p}=0

となる。円は、点vec{x_1}を通るので、

\vec{x_1}^2-2\vec{x_1}\cdot (s\vec{x_1}+t\vec{x_2})=0

④式をtに代入して、

\vec{x_1}^2-2\vec{x_1}\cdot (s\vec{x_1}+\alpha s\vec{x_2})=0

\vec{x_1}^2-2\vec{x_1}^2s-2\alpha s\vec{x_1}\cdot\vec{x_2}=0

2\vec{x_1}^2s+2\alpha s\vec{x_1}\cdot\vec{x_2}=\vec{x_1}^2

2(\vec{x_1}^2+\alpha \vec{x_1}\cdot\vec{x_2})s=\vec{x_1}^2

s=\frac{\vec{x_1}^2}{2(\vec{x_1}^2+\alpha \vec{x_1}\cdot\vec{x_2})}

s=\frac{x_1^2+y_1^2+z_1^2}{2(x_1^2+y_1^2+z_1^2+\alpha (x_1x_2+y_1y_2+z_1z_2))}

以上より、3点の座標からsが求まったので、④式よりtが求まり、結局、円の中心の位置ベクトル\vec{p}が③式により、求まる。 \vec{p}から半径rが、⑤式により求まるので、これらの量を用いて、球の方程式は②式により決定される。

この式と法線ベクトルの式を用いて、変数zを消去すると、xy平面に射影した円の方程式が得られ、同じ式を用いることで、求める円のz座標も求まる。