人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

緯度経度で表される球体の表面上の三点があります。球体の中心と、その三点を通る小円の中心を通る線(小円の中心を通る球体の軸)が球面と交わる点を緯度経度で求める方法を教えてください。小円に近いほうの点だけで結構です。

●質問者: spin6536
●カテゴリ:学習・教育 科学・統計資料
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a_ki_su_te_no
●35ポイント

その小円が緯線となるように座標を変換したときの極が求める点です。


方法はいくつかあります。

その小円が緯線となるように座標を変換して(回して)、極に逆の変換をする方法。

これがいちばん直感的でストレートな方法だと思います。


あとは3点からの距離が等しい点を導く方法。

一旦別の座標系に変換したほうが計算しやすいでしょう。

XYZの直交座標系なら何も考えず、機械的に計算できます。


2 ● ita
●35ポイント ベストアンサー

3点の緯度、経度をAi,Biとし、これをラジアンにしてからXYZ座標を出します。

簡単のために地球の半径=1と仮定

Ai=Ai/180*π

Bi=Bi/180*π

Xi=cos(Bi)*cos(Ai)

Yi=sin(Bi)*cos(Ai)

Zi=sin(Ai)

次に三点を通る面の法線を外積により計算

X21=X2-X1

Y21=Y2-Y1

Z21=Z2-Z1

X31=X3-X1

Y32=Y3-Y1

Z32=Z3-Z1

NX= Y32*Z21 - Z32*Y21

NY= Z32*X21 - X32*Z21

NZ= X32*Y21 - Y32*X21

これを長さ1に規格化

l=sqrt(NX*NX+NY*NY+NZ*NZ)

NX=NX/l

NY=NY/l

NZ=NZ/l

これが求める点の座標。これを緯度経度に変換

緯度=asin(NZ)*180/π

経度=atan2(NX,NY)*180/π

C言語だとatan2(NY,NX)と順番が逆になるので注意です。

◎質問者からの返答

いつもありがとうございます。同じ質問を扱ったQ&Aサイトを見つけたのですが、いただいた回答と外積の計算の部分が微妙に異なります。

http://mathforum.org/library/drmath/view/68373.html

引く数と引かれる数が入れ替わっているので、外積の計算の結果を比べてみますと、ちょうど数字は同じで符号が逆になっています。どちらが正しいかご確認いただけるでしょうか。

追記:求める軸が球面と交わる点は球の反対側にもう一つ二点ありますが、それぞれの解法はそれぞれのお互いの反対側の点を示しているようですね。小円に近いほうの点を示しているのは上記のサイトのほうのようなのですが...(残念ながら)。わたしの計算間違いでしょうか。


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ