dポイントプレゼントキャンペーン実施中!

任意の3点、点A(x1,y1,z1)、点B(x2,y2,z2)、点C(x3,y3,z3)を通る球体半径rの中心点D(a,b,c)を求めるために、エクセルで常に計算出来るように書式を作りたいのですが、ソルバーを使ってもうまくいきません。

どのように制約条件を定めたら良いのでしょうか。

分かる方ご教授のほどよろしくお願いします。

計算の参考にしたのはこちらの方法です。
https://detail.chiebukuro.yahoo.co.jp/qa/questio …

A 回答 (1件)

こんにちは



>ソルバーを使ってもうまくいきません。
ソルバーの場合、初期値や変化量によっては収束しない可能性も考えられるので、例えば、初期値を何点か変えてみるなどしてみてもダメでしょうか?


一方で、ご提示の題意であれば計算でも求められるはずなので、(かなり面倒そうではありますが)そちらに関してを以下に。
現在、スマホからなので、文章のみで考え方だけの回答になりますが、ご容赦ください。

まず、考えを簡単にするために、3点で決まる平面をXY平面となるように座標変換します。
求めた座標を逆変換すれば元の座標系での位置にもどすことができますので。
(座標変換はご理解なさっているものと仮定。エクセルを利用するのであれば、行列計算もサポートしていますので、計算自体は比較的簡単にできると思います。)

XY平面上で3点の外心を求めると、この半径(Rとします)が、与えられる半径rの取り得る最小値であることは理解できるものと思います。
求める点(中心点)は外心から3点のなす平面に対する法線(=z軸に並行な線)上にありますので、その長さをdとすれば、
 d^2 = r^2 - R^2
となるので、dを求めることができます。

dは正負の2点存在しますが、XY平面に対して上下対象な位置に題意を満たす中心が存在することを考えれば理解できると思います。
また、r<Rの場合は、実数解が存在しませんが、これは「rが外心半径よりも小さな値になり得ない」ことと一致します。

一番面倒そうなのが、外心の座標を算出する計算ですが、ゴリゴリと計算してくださっているサイトがありましたのでそちらにお任せすることにしておきます。
https://qiita.com/tatesuke/items/59133758ec25146 …

外心の座標x,yと上記のdから、求める中心座標は(x, y, ±d)として算出できるはずです。

エクセルをご利用になるのであれば、計算を分解して、それぞれの(途中)結果をセルに表示させながら、順次計算をして行くようにすれば、計算式が長く複雑になることを防げることができると思います。
若干の計算誤差が蓄積される可能性はありますが、それは、まとめて計算した場合でも同様であろうと推測します。
    • good
    • 0

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