アプリ版:「スタンプのみでお礼する」機能のリリースについて

線の長さの計算がわかりません。下記の計算を教えてください。
A点からB点までの3次元上の線の長さ
方向
A点:X-Y平面上45°(X-Z平面上0°)
B点:X-Y平面上-180°(X-Z平面上-180°)
距離
X方向:1400 Y方向:800 Z方向:400
その他条件
直線と半径570の曲線のみを使ってA点からB点までを最短距離で結んだ時の長さ。
どなたか宜しくお願いします。

「線の長さの計算を教えてください。」の質問画像

A 回答 (6件)

#1,#3,#4,#5です。


A#4の補足質問とA#5
追加補足です。
球Qの中心座標G(xo,yo,zo)と球Qと直線ACの接点座標C(x1,y1,z1),球Qと直線BDとの接点D(x2,y2,z2)を求める一連の方程式と条件式の例を参考までに書いておきます。無縁解(虚数解)、実数の不適解(最小経路上にない解)は解いて排除して、球の中心座標Gを求める必要があることはいうまでもありません。
------
球Qの方程式
球Qの中心G(xo,yo,zo), ただし zo=-200
(x-xo)^2+(y-yo)^2+(z-z0)^2=570^2,
直線ACの方程式lA:y=x, z=0
直線BDの方程式lB:y=800, z=-400
C(x1,y1,z1),D(x2,y2,z2)とおくと
直線上の点である条件:x1=y1, z1=0, y2=800,z2=-400
(x1-xo)^2+(y1-yo)^2+(z1-z0)^2=570^2, zo=-200
(x2-xo)^2+(y2-yo)^2+(z2-z0)^2=570^2, zo=-200
直線laが球Qに接する条件
(x-xo)^2+(x-yo)^2+(0-z0)^2=570^2,
が重解x=x1を持つこと。
直線lBが球Qに接する条件
(x-xo)^2+(800-yo)^2+(-400-z0)^2=570^2,
が重解x=x2を持つこと。
------
これだけでも解けるなら解いてみて下さい。
チャンと解くと、球の中心座標Gの実数解の組が4通りでてきますが内3組は不適解の組です。
無縁解(虚数解)も4通り出てきますので、途中計算では8次方程式を解いていることになります。一般の8次方程式は一般的に解けませんので、ただ形式的に解こうとしても数式処理ソフトが解いてくれません(ギブアップしてしまう可能性がある)ので、解けるような工夫をして方程式を与えないといけませんね。無縁解や不適解が出たら、そこで解を排除して、その先の計算を進めないと、その先の計算が膨大になって、不適解が増加して、収拾が付かなくなりますのでご注意下さい。
    • good
    • 0
この回答へのお礼

たてた方程式の内容までは何とか理解できましたが、その計算についてはとても出来ませんでした。私にとっては難しすぎる計算である事は良く理解できました。
計算していただいた結果を用いて試作品を製作したところ長さが丁度良かったので大変助かりました。
本当は同じような事例があり、それについても今後自分で計算したいのですが、それについてはせっかく教えていただいたのですが難しいようです。
どうもありがとうございました。

お礼日時:2009/08/04 11:20

#1,#3,#4です。


A#4の補足の質問の回答
>2直線に接する球の接点と中心座標の求め方がわかりませんでした。
>球の位置が最短距離を結ぶように決める条件もわからなかったんですが。
考え方だけ説明しておきます。
表面には出てこない未知数や方程式など沢山出てきますので、立てたとしても手計算では先ず解けません。特にも数式処理ソフトと人が介在して判断するコラボレーション(共同作業)が要求されます。連立方程式をそのまま入力しても、数式処理ソフトの能力を超えて解けなかったり、不適解が沢山出てきます(排除が必要)。スーパーコンピュータでも使えば、沢山の未知数を設定して、沢山の方程式や条件式を入力すれば、計算機のパワーで解いてくれると思います。

考え方)
3次元の平行でないねじれの関係にある直線上の2点間の最短距離の直線は調べればネット上に見つかると思います。また交差する2直線間を半径r(一定)の円弧で結ぶ円弧の2接点は4組ありますが、一方の直線上の点から他方の直線上の点にいたる最短距離で結ぶ経路となると4組の中の1組に確定します。交差する2直線の場合でも2次元平面座標系で扱う場合は、中心座標(xo,yo)と既知の半径rの円と交差する2直線の方程式y=ax+bとy=cx+d(a,b,c,dは既知の定数)のそれぞれと接点(x1,y1),(x2,y2)で接する条件から、未知座標(xo,yo),(x1,y1),(x2,y2)(合計6個の未知数)を決定する方程式を立てて解く問題に帰着します。形式的な解は実数解の組が4組と複素解も他に出てきます。複素解は排除し、実数解4組中の接点座標4組で出発点および到着点にいたる最短ルートの接点を選び出して1組を決定することをしないといけません。この一連の操作を三次元空間中の交差する直線間で同じ問題を解こうとすると直線、円の方程式が三次元表現となり方程式の数が2倍以上になり、求める接点の座標も(x1,y1,z1),(x2,y2,z2)と未知数が増加します。直接解こうとすると方程式の数が増加して解くのが大変です。座標系の線形変換を行って、両直線を含む平面上の問題に帰着させれば、最初に述べた2次元座標系での問題として解けます。結果は逆の線形変換で三次元の座標点に戻してやる必要があります。

以上は交差する2直線についてですが、交差しない三次元の2直線ACとDB
間を半径r(r一定)の円弧で結ぶ円弧の中心座標(xo,yo,zo)と円弧の傾き(三次元では少なくても2つの角度:地球で言えば緯度角と経度角で指定)と円弧の出発点C(x1,y1,z1)と離別点(x2,y2,z2)を決めてやるには、交差する2直線の場合のように座標系の線形変換が適用できませんから、三次元空間座標のまま扱う必要があります。ねじれの関係にある交差しない2直線AC,DB間を半径rの円弧CDで最短経路で接続するには、円弧の中心(xo,yo,zo)を中心とする半径r(一定)の球上の大円コース上に円弧CDを重ねてやると円弧CDが最短経路になります。大円コースの円弧CDの両端のC(x1,y1,z1),D(x2,y2,z2)は直線AC,DBは、交差しないねじれの関係にある3次元直線であるため、大円コースの円弧CDの両端で円弧に接することは不可能です。では円弧CDの両端である2点C、Dと、直線AC,DBの関係はC,Dにおける球(半径r、中心(x0,y0,z0))の2つの接平面を考え、2直線AC,BDがこの接平面上にあり、球との接点がそれぞれC,Dとなるように接平面と接点を決定してやることが必要になります。その際、球の中心座標(xo,yo,zo)は2直線ACとBDから等距離にある平面上にあるという条件を付けてやります。
直線ACとBD、はねじれの関係にあることから、大円コースの円弧CDには3次元的に接することはできず、CDを含む球上の点C,Dで球に接することになります。なので円弧CDの両端における円弧の三次元の接線と直線ACや直線BDとの間には一定の交差角ができます。

以上の条件を考慮して三次元空間の座標系の直線や平面や球の方程式と接点における接する条件や大円コースの条件の元で連立多次方程式を立ててやり解いてやります。方程式を解くと球の中心座標(xo,yo,zo)の組が複数出てきますのでその中から最短コースの大円コースを含む中心座標を選んでやります。
方程式の数が未知数の数だけできますので、それらの方程式を手計算で解くことは先ず不可能です。出てくる球の中心座標と接点C,Dの座標の組の最短コース解も最初から条件式を付けて最適解を自動的に計算で判別することは、計算をさらに複雑しますので、数値計算ソフトで連立方程式で解いて、その解の組を1組ずつ、最適解かどうかを人が介在して判断して求めてやります。途中途中で不適な途中解も人が介在して排除してやります。人の介在でかなりの条件の方程式や不等式をたて計算する量を減らすことができます。

質問者さんも以上のやり方で未知数を設定して、連立方程式や条件式を立ててみてください。
それらの方程式は手計算で解くことはまず不可能ですので数式計算ソフトを利用して解いてみると良いでしょう。ソフトはMaple,Mathematica,R,Maximaなどを使うと良いです。当方ではwxMaximaを使用しましたが、解き方をソフトで解きやすいように工夫しないと、ソフトやパソコンがギブアップしてしまいます(結果をだしてくれません)。
やってみた方程式に自信がなかったり、解き方について分からないことがあれば質問して下さい。

私が求めたC,D点の座標や円弧の中心座標を簡単に結果だけを簡単に書きましたが、裏では沢山の三次元の方程式を立て、接平面や大円コース条件などの解析を行っています。計算途中で人が介入して判断し不適解を排除して不要な計算量を減らしています。先ず、上述の解き方や条件を方程式で表してみて、手計算で解くことが無理だと痛感されると思います。また三次元空間の方程式や空間図形の知識をくししないと、理解することが難しいでしょう。計算途中で三次元のプロットソフトで計算結果をプロットしてみて、三次元空間的に検証し、途中解の妥当性をチェックしながら計算をすると良いですね。
    • good
    • 0

#1,#3です。



計算してみましたか?

A#3の補足です。
L1,L2,L3を求めて見ました。

>A点(0,0,0)→C点(643.665,643.665,0) ここまで直線コース
距離L1=643.665√2=910.280

C点(643.665,643.665,0)→D点(1021.091,800,-400) ここまで
 中心G(1021.091,266.240,-200)、半径r=570の球面上のC点とD点を結ぶ大円コース(短い方の円弧)
CD=571.744, GC=GD=570
 ∠CGD=θとおくと余弦第2定理から
cosθ=(GC^2+GD^2-CD^2)/(2GC*GD)=0.49693576, θ=1.0507322[rad]
円弧CD長L2=570θ=598.917

D点(1021.091,800,-400)→B点(1400,800,-400) ここまで直線コース
距離L3=1400-1021.091=378.909

最短距離L=L1+L2+L3
で計算してください。

この回答への補足

計算してみましたが、わかりませんでした。
ABCD点の座標から各点間の距離は計算できましたが、そもそも2直線に接する球の接点と中心座標の求め方がわかりませんでした。
球の位置が最短距離を結ぶように決める条件もわからなかったんですが。可能でしたらご教授下さい。

補足日時:2009/07/30 08:27
    • good
    • 0
この回答へのお礼

大変丁寧な解説ありがとうございました。
内容は充分理解できました。解説いただいた方法で計算してみます。
ありがとうございました。

お礼日時:2009/07/27 16:02

折角、アップしていただいた図が不鮮明でよく分かりません。


しかしこれまでに、補足頂いた説明で多分、内容が把握できたと思います。

半径570の球と直線コースのACとDBの直線が接する条件から
球の中心座標と2接点が求まりますのでA→C→D→Bの最短コースが
決められると思います。
最短コースを決めるために必要な座標点を求めた結果から以下のように最短コースが出てきました。

A点(0,0,0)→C点(643.665,643.665,0) ここまで直線コース

C点(643.665,643.665,0)→D点(1021.091,800,-400) ここまで
 中心G(1021.091,266.240,-200)、半径r=570の球面上のC点とD点を結ぶ大円コース(短い方の円弧)

D点(1021.091,800,-400)→B点(1400,800,-400) ここまで直線コース

これらの経路(コース)の和
(AC:線分長)+(CD:円弧長)+DB:線分長)
で最短距離となると思います。

CD間の円弧長(大円の短い方)は球面の半径と中心座標と球面上のC点とD点の座標が既知ですので球面三角法、経度緯度変換して求める方法、座標変換法を使って、円弧長を計算してみてください。

球面三角法参考URL
http://www.astro.sci.yamaguchi-u.ac.jp/~kenta/ec …
経度緯度変換して求める方法
http://oshiete.eibi.co.jp/qa249931.htmlの#2参照
など
    • good
    • 0

>A点(0,0,0)B点(1400,800,-400)です。


>距離はA点とB点を結んだ距離ですが、2点間を結ぶ条件として、直線と半径570の曲線のみを用いて結んだ最短距離を知りたいのです。

この条件だけなら、A点とB点を結ぶ直線が最短距離を与えるのでは?

この回答への補足

条件が間違っていました。すいません。
画像を添付いたしました。画像のA点とB点を結んだ線の長さが知りたいです。宜しくお願いします。

補足日時:2009/07/24 14:18
    • good
    • 0

質問に書かれた内容だけでは


A点、B点の位置が確定しません。
直交座標(x,y,z)
を使うか
球座標(r,φ,θ)
を使うか
円柱座標(r,θ,z)
を使うか
して位置を指定しないと位置が確定しません。
どの座標系を使っても3つの要素を指定する必要があります。

質問の中では1つの要素の角度しか与えてなく、他に2つの座標要素を与える必要があります。

それから距離とはどこの距離か分かりません。
文面からするとA点,B点はともにX-Y平面上(z=0の平面上)にあることだけは分かります。なのでA-B間にはZ座標の差はないはずですが。。。

A点、B点の位置を確定するだけの座標データがない以上、両点間の最短距離など考えようがありません。
質問は回答者に分かるように書かないと回答が付きません。

不足情報を補足にお書きください。

この回答への補足

わかりにくくてすいません。直交座標で表します。
A点(0,0,0)B点(1400,800,-400)です。
距離はA点とB点を結んだ距離ですが、2点間を結ぶ条件として、直線と半径570の曲線のみを用いて結んだ最短距離を知りたいのです。
また、2点ともスタート部分は直線であり、その方向が決まっています。以上で分かりますでしょうか。

補足日時:2009/07/23 22:54
    • good
    • 0

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