プロが教える店舗&オフィスのセキュリティ対策術

3次元空間中に座標・半径が既知の球面が3つあり、これらが2点で交わっている時、この2点の座標はどのように表されるのでしょうか?
xyz直交座標系で考えるものとし、
3つの球は
1つ目の球:中心の座標(x1, y1, z1), 半径r1
2つ目の球:中心の座標(x2, y2, z2), 半径r2
3つ目の球:中心の座標(x3, y3, z3), 半径r3
で与えられるものとします。
何か参考になるウェブページや資料等をご存知の方、教えていただけませんか?

A 回答 (2件)

計算してみたのかどうかを補足にどうぞ。

この回答への補足

どうも失礼しました。
以下にこれまでmatlabを用いて行ってきた計算過程の概略を示します。

1つ目の球面を球1、
2つ目の球面を球2、
3つ目の球面を球3
と呼ぶことにします。



1.球1と球2が交わる部分(円)を求める。

円の中心の座標は、球1の中心の位置ベクトルO1と球2の中心の位置ベクトルO2から、

(r1^2-r2^2+|O1-O2|^2)O1 + (r2^2-r1^2+|O1-O2|^2)O2
--------------------------------------------------
2|O1-O2|^2

と計算されました。この位置ベクトルを以下ではCと表記します。
半径は

sqrt(r1^2-((r1^2-r2^2+|O1-O2|^2)/2|O1-O2|)^2)

と計算されました。この半径を以下ではRと表記します。

円が3次元空間内でどのように「傾いて」いるのかを調べるために、
球1と球2の位置ベクトルの差O2-O1が
z軸に対してどの程度傾いているのかを回転行列で表し、
xy平面上の円を表すベクトル

[R*cos(t)]
[R*sin(t)]
[0 ]
0<=t<=2*pi

に回転行列をかけ、
更にベクトルCを加算して
球1と球2が交わる部分である円を求めました。



2. 1.で求めた円と球3が交わる点を求める

円上の点は上記で示しましたように、パラメータtを遷移させることで円上を移動することができます。
tを小刻みに遷移させ、
円上の点と球3の中心の間の距離が十分にr3に近づいたらその時の円上の点を3つの球の交点とみなします。



非線形の3元連立方程式を解く技量は今の自分には無いので、計算は上のような手順でmatlabを用いてやっておりますが、
力技の近似でしかないので何か別の高速で精度の良い方法は無いものかと思っております。
公式のようなものがあれば一番はやいのですが。
どうも長々と読みづらい文章ですみません。
お時間がよろしければお返事いただけると嬉しいです。

補足日時:2008/07/06 23:50
    • good
    • 0

3つの球の方程式が2定点を通るなら,それらの2定点の座標を(xa,ya,za)と(xb,yb,zc)とおいて代入してやれば、6つの方程式ができますので、数式処理ソフトを使って解かれればいいだけでしょう。


2定点から、各球の中心座標までの距離が等距離(各球の半径に等しい)にあることが分かります。つまり各球の中心座標は、2定点から等距離の平面上にあるということです。
簡単のためXY座標平面をこの等距離の平面に一致し、2定点の中点を原点に設定すると考えやすいでしょう。
座標軸をこのようにとれば、z1=z2=z3=0となります。
つまり、球の方程式は
(x-x1)^2+(y-y1)^2+z^2=r1^2
(x-x2)^2+(y-y2)^2+z^2=r2^2
(x-x3)^2+(y-y3)^2+z^2=r3^2
となります。
また2定点の座標は(0,0,a),(0,0,-a),(a>0)と置けますので代入すると
x1^2+y1^2+a^2=r1^2
x2^2+y2^2+a^2=r2^2
x3^2+y3^2+a^2=r3^2
a^2=r1^2-x1^2-y1^2=r2^2-x2^2-y2^2=r3^2-x3^2-y3^2
と出てきます。
これを満たすa>0を
a^2=r1^2-x1^2-y1^2
から求めれば、2定点の座標は(0,0,a)と(0,0,-a)となります。

なお、
r1^2-x1^2-y1^2=r2^2-x2^2-y2^2=r3^2-x3^2-y3^2(=a^2)
の関係は3つの異なる円が2定点を共有する為の条件になります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!