画面サイズ(横:/縦:) |
2都市間の距離を求める(PHP+JavaScript版)へ |
地球上の2地点間の距離計算の方法
(誤差が若干出るので研究中です) |
(1)2つの都市が同じ半球にある場合 |
【図1】 |
上の図1において、地点Aの緯度をα°, 地点Bの緯度をβ°,
2地点間の経度の差をγ°とすれば ,2つの空間ベクトル のなす角をθとすれば ちょっと!待ったー! (↑)ナンでこうなるの?教えてよ~!→ 三角比を用いて詳しく説明します。 だから だけを求めればよい。なぜかと言うと となる。上の図1で確認してね! |
地点Aと地点Bにおける地球の半径は「
その地点における緯度
」を用いて求められる。緯度が高くなればなるほど地球の半径は少しずつ短くなる。
下の図2で説明します。 【図2】 上の図2において、地点Aの緯度を北緯α°(←アルファ) 、地点Bの緯度を北緯β°とすれば、地点Aにおける地球の半径は R1=R-α×(R-R’)÷90で求められます。その証拠にα=0のときはR1=Rとなり、α=90のときは R1=R’となります。 また、緯度が45°のときは、 R1=R-45×(R-R’)÷90=(R+R’)÷2なので、RとR’の平均になります。 ※表記の都合上「R(下付き小文字1)」をR1と表しています。 (完全数式通りに表記することも可能ですが面倒なので・・・) となる。上の式(※)に(1)の値を代入すれば、 となります。(↑)上の式を 【式(1)】 とおこう! 上の【式(1)】の値がわかれば、2つの空間ベクトルのなす角θがわかります。 cosθから角度θを求めるには逆関数の「アークコサイン関数」を用います。 「アークコサイン」とは、y=cosθからθを求める関数のことでθ=arccos(y)で求められます。 角度θは、0 (ゼロ) ~ π(パイ) の範囲内のラジアン(弧度法)です。 さて、なす角θがわかったら次は下の【図4】で説明します。 図の赤い部分が求める距離ですが、赤い部分は楕円上にあるので、計算が面倒になります。 そこで、計算を楽にする方法として次の2つの方法が考えられます。 |
※
【図4】 【第1の方法】 若干の誤差が出ますが、2地点ABのそれぞれの緯度の平均緯度を求めて(上の図の点C)、その「 平均緯度における地球の半径 」での円周を求めてから2地点間の距離の近似値を求める方法 【第2の方法】 これもある程度の誤差が出ますが、2地点ABでのそれぞれの「地球の半径」を求めて、その「 地球半径の平均での円周 」を求めてから2地点間の距離の近似値を求める方法(上の図の点D) 【第3の方法】 これもある程度の誤差が出ますが、2地点ABを通る楕円(上の図の赤い部分が乗っている楕円)の方程式を求めて「 n等分に区分して」それぞれの微小幅での距離を三平方の定理を用いて計算して、 それらを合算することによって「2地点間の距離の近似値」を求める方法 【第4の方法】 もっとも誤差がすくない方法は「 楕円積分を用いる方法 」でしょうが、今後の研究課題としておき、ここでは「第1~第3の方法」で計算します。 |
2都市間の距離を求める(PHP+JavaScript版)へ |
(2)赤道をはさんで南半球と北半球にある場合 |
【図5】 |
上の図5のように2つの都市が赤道をはさんで南北の半球にある場合 |
三角比の基礎を用いて説明するよ! |
【図6】 上の【図6】で説明するよ! 三角比の定義に従えば、 cosα=(底辺)/(斜辺)=OH/R1 だから (↑)(↓)コサインアルファ cosα=(地点Aのx座標)/R1 となり、地点Aのx座標=R1cosα と表せます。 また、sinα=(対辺)/(斜辺)=AH/R1 だから sinα=(地点AのZ座標)/R1 となり、地点AのZ座標=R1sinα と表せます。 よって、点Aの座標は(R1cosα , 0 , R1sinα) となります。 次は「ちょっと(かなり?)ややこしい」けど、点Bの座標の求め方を説明します。 もどる |
2都市間の距離を求める(PHP+JavaScript版)へ |