- ベストアンサー
球面上のある点から他の点への方向の計算
球面上で、緯度経度で表されるある点から他の点への方向を計算する方法を教えてください。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
No.5でのお礼に対するアドバイスです。 一般に、3点(x1,y1,z1),(x2,y2,z2),(x3,y3,z3) を通る平面は、これらが一直線上になければ | x1 y1 z1 1 | | x2 y2 z2 1 | = 0 | x3 y3 z3 1 | | x y z 1 | と書けます。 問題の件ではゼロになる要素があるので、その分 計算は楽になると思います。頑張って下さい。
その他の回答 (8)
- kony0
- ベストアンサー率36% (175/474)
#6のイメージでの解法について、外積2回でOKですね。 つまり中心O、基準点A、目標地点Bに対して αの法線ベクトル:OA×OB(外積) βの法線ベクトル:OA より求める接線ベクトル:(OA×OB)×OAで求められます。 たぶん向きもこれであってると思います。(理論的に説明できませんが^^;) 数値例を1つ。 半径sqrt(14)の球で、A(1,2,3), B(3,1,2)とすると、OA×OB=(1,7,-5), (OA×OB)×OA=(31,-8,-5)…答 検証 平面α(大円を含む平面OAB)の方程式はx+7y-5z=0 PをAP=k(31,-8,-5)とおくと、Pの座標は(1+31k,2-8k,3-5k)となり、これらは平面α上にある。 よって、Pはα上で直線を描き、OA・AP=0よりOA垂直APが言えるので、大円に対する点Aにおける接線であると言える。(終) 追伸 外積については、たとえば下記URLを参照してください。
お礼
実は本で、球面三角形の公式のひとつ: sinα/2 = √((sin(s-b)sin(s-c))/(sin b・sin c)) s = (a+b+c)/2 を見つけて、これを使うようにしてしまいました。 でもこの際なので、教えていただいた通り外積も勉強して、以後このような問題は自分で解けるよう心がけたいと思います。詳しいご回答ありがとうございました。
- beta16
- ベストアンサー率30% (4/13)
内積とったらどうですか? 意味違いますか?
お礼
何と何の内積でしょうか? とりあえず別の方法で解決はしたのですが。
- kony0
- ベストアンサー率36% (175/474)
こんな考え方ではできないでしょうか? 方針は、#3に対するお礼でmideさんが書かれていることそのもの(2点間のベクトルを接平面に射影)です。 イメージでいうと、 1. まず大円を考えるために、基準点、目標地点、中心(=原点)を通る平面αを考える。 2. 基準点における接平面βを考える。 すると、αとβの交線が、求めたい接線ベクトルになりませんでしょうか? αの方程式は、#4でranxさんが言われているAx+by+Cz=0 βの方程式は、基準点の座標を(a,b,c)とすれば、a(x-a)+b(y-b)+c(z-c)=0です。(接平面の法線ベクトルはまさに[a,b,c]) 交線は、上のx,y,zの3文字2式の不定方程式を解けばOK。 計算の仕方は、Ax+By+Cz=0については、原点を通っていることは式に織り込み済み(定数項=0)なので、残りの2点を代入して、A,B,Cに関する式を2つ作り、B,CをAで表せばOK。 また交線上の点は、求める方向ベクトルを[p,q,r]とすれば、パラメータkを使って(x,y,z)=(pk+a,qk+b,rk+c)とおける(点(a,b,c)は交線上!)ので、それを2平面の式に代入して、あとごりごり計算したらp:q:rが出てくると思われます。 が、なにぶん計算してないので。。。夜暇だったらこの方針で1回解いてみます。 ※2平面の交線の方向ベクトルという、高校生の練習問題レベルに落ちるところがミソなんですが。。。そもそも考え方が間違っていたらすみません。^^;
- ranx
- ベストアンサー率24% (357/1463)
どうも、再びranxです。 東か西かの判定、簡単でした。 No.4の中で、基準点を通り赤道に垂直な平面の方程式を Px+Qy=0と書きましたけれど、これ、経度をαとすると xsinα-ycosα=0 なんですね。 で、この式の左辺に目的点の三次元空間内での座標を代入し、 プラスなら西、マイナスなら東です。 (ゼロならば真北=真南です。)
お礼
2回のご回答ありがとうございました。 方針は分かりました。ただ原点、基準点、目的地点から A, B, Cをどう計算するかが分からないのですが…。3点の座標から方程式を解くなどしなくてはならないのでしょうか?
- ranx
- ベストアンサー率24% (357/1463)
私も球面三角法は知らないので、通常のユークリッド幾何と考えてやり方だけ。 基準点と目的の点の三次元空間内での座標はalpha16さんのやり方で求められますね。 (私なら東経をプラスにとりますけど。) その二点と球の中心(つまり原点)の三点を通る平面を求めます。 次に、原点と基準点を通り、赤道面に垂直な平面を求めます。 この二平面をAx+By+Cz=0、Px+Qy=0とすると、 cosθ=(AB+BQ)/(sqrt(A^2+B^2+C^2)*sqrt(P^2+Q^2)) とした時のθが、基準点から真北をゼロとした時の角度になります。 あとは東か西かを決めれば良いわけですが、う~ん、どうしよう。 ちょっと考えてみます。
- alpha16
- ベストアンサー率40% (8/20)
わたくしは、数学や力学の専門家ではないので、正しいかどうかはわかりませんが、基本的な考え方は、sakisakimanさんの説明でよいと思います。 もし経度緯度であらわされた点から点への方向を計算したければ、 地球中心を原点として 原点から経度0度緯度0度の方向をx軸、 原点から緯度0度西経90度の方向をy軸、 原点から北極点の方向をz軸とし、 ある地点の緯度をα度(北緯ならプラス南緯ならマイナスで[-90,90]) 経度をβ度(西経をプラス東経をマイナスで[-180,180]) とすれば、 その地点の座標は、(rcosαcosβ,rcosαsinβ,rsinα)となります。 (rは地球の半径) そこで緯度γ度、経度δ度の地点への方向は、 (rcosαcosβ-rcosγcosδ,rcosαsinβ-rcosγsinδ,rsinα-rsinγ) 単に方向でしたらrは必要ありません。 例えば北緯60度東経135度の地点から緯度0度経度0度の地点の方向ならば α=60度 β=-135度 γ=0度 δ=0度となるので (cos60cos(-135)-cos0cos0 ,cos60sin(-135)-cos0sin0 ,sin60-sin0) =-1/{2*(2^(1/2))}[ 1+2*(2^(1/2)) ,1 ,-6^(1/2) ] =[ 1+2*(2^(1/2)) ,1 ,-6^(1/2) ] です。 いかがでしょうか?
お礼
ご回答ありがとうございました。三次元的には、そうやって計算できると思います。ただ、知りたいのは基準点と目的地点とを結ぶ球面上の大円の、基準点からみた角度なのです。なので基準となる地点から球の中心に向かう直線に垂直な平面に、その三次元的ベクトルを投影すればいいのかなと思うのですが、それが計算できません…。
- pasta500g
- ベストアンサー率46% (30/65)
球面三角法とか、球面三角形の公式とか呼ばれている方法で計算します。 もし解法を知りたいのではなく計算結果が目的なら、 算出プログラムも色々公開されていますが。 このあたりのキーワードで探して見て下さい。
お礼
URLありがとうございました。とても長いのでゆっくり読んでみます。その中の計算式を2つほど試しましたが、その2つで異なる値が出たり、同一緯度で使えなかったりするので(私の計算のしかたに問題があるかも)もう少し調べてみます。算出プログラムも便利そうですが、できれば自分の計算に組み込みたいのです。
- sakisakiman
- ベストアンサー率33% (3/9)
ベクトルの問題ですか?? ある点をA,もう一方の点をBと置くと、ベクトルAB=ベクトルOBーベクトルOAですよね? Oは中心。 例えば、ベクトルOAが(13,30)、ベクトルOBが(23,45)だとすると、ベクトルAB=(23-13、45-30)=(10、15) ※(緯度、経度)という意味のつもり。 方向を計算するのだから、答えはベクトルなのでこれでいいのではないでしょうか?
お礼
平面座標ならそれでいいと思うのですが、球面ではなりたたないのです。三次元ベクトルを操作すればなんとかなりそうなのですが、自力では解けそうもありません。 ありがとうございました。
お礼
実は本で、球面三角形の公式のひとつ: sinα/2 = √((sin(s-b)sin(s-c))/(sin b・sin c)) s = (a+b+c)/2 を見つけて、これを使うようにしてしまいました。 でもこの機会に平面の計算も勉強したいと思います。ご回答ありがとうございました。