大円距離

大円距離(だいえんきょり、英: great-circular distance、球面上の大円に沿う距離をさす。大円の性質により、球面上の2点間の長さが最短となる距離である。 特に地球上においては大圏距離（たいけんきょり）とも言う。 最も両極に近い点を頂点と呼ぶ。 ユークリッド空間では、球内部を通り2点間を直線結ぶユークリッド距離が最小となるが、球面上には直線が存在しないためこれとは異なる。  非ユークリッド空間では、直線を一般化した測地線を使用する。球面においては測地線は球の中心を中心とする円である大円となるため、大円距離は大円上の2点間の弧の長さとなる。 球面上の対蹠点以外の2点を通る大円は一意に定まる。 2点は大円を2つの弧に分割する。 そのうち短い方の弧の長さが大円距離となる。 A great circle endowed with such a distance is the Riemannian circle. 対蹠点に関しては、その2点を通る任意の円が大円となるが、すべての円において2点間の弧の長さは一定である。すなわち半円の円周であり、半径 r {\displaystyle r} の球においては π r {\displaystyle \pi r} である。 地球はほぼ球状であるため、2点間の距離を球として計算しても誤差は0.5%以内となる（後述）。  大円の弧（大圏コース）は等角航路やisoazimuthal線と同様に地球上の任意の2点間を結ぶことができる3つの手法の一つである。 ϕ 1 , λ 1 {\displaystyle \phi _{1},\lambda _{1}} と ϕ 2 , λ 2 {\displaystyle \phi _{2},\lambda _{2}} をそれぞれ点1と点2の緯度と経度とする。また Δ ϕ , Δ λ {\displaystyle \Delta \phi ,\Delta \lambda } はその差の絶対値である。その時、2点間の中心角 Δ σ {\displaystyle \Delta \sigma } は球面余弦定理より Δ σ = arccos ⁡ ( sin ⁡ ϕ 1 ⋅ sin ⁡ ϕ 2 + cos ⁡ ϕ 1 ⋅ cos ⁡ ϕ 2 ⋅ cos ⁡ ( Δ λ ) ) {\displaystyle \Delta \sigma =\arccos {\bigl (}\sin \phi _{1}\cdot \sin \phi _{2}+\cos \phi _{1}\cdot \cos \phi _{2}\cdot \cos(\Delta \lambda ){\bigr )}} となる。 距離 d {\displaystyle d} 、すなわち円弧長は、球の半径 r {\displaystyle r} 、弧度で表された Δ σ {\displaystyle \Delta \sigma } を用いて d = r Δ σ {\displaystyle d=r\,\Delta \sigma } と表される。 精度（ビット数）が低い浮動小数点数 を扱う計算機においては、球面余弦定理による計算では短い距離において大きな丸め誤差が発生してしまう。たとえば地球上においては1 kmの距離に対する中心角の余弦は0.99999999となる。 ただし現在用いられる64ビットの浮動小数点数においては数メートル以上の距離においては問題となるほどの丸め誤差は発生しない。 下記のhaversine関数による計算法を用いたほうが良条件である。 Δ σ = 2 arcsin ⁡ sin 2 ⁡ ( Δ ϕ 2 ) + cos ⁡ ϕ 1 ⋅ cos ⁡ ϕ 2 ⋅ sin 2 ⁡ ( Δ λ 2 ) . {\displaystyle \Delta \sigma =2\arcsin {\sqrt {\sin ^{2}\left({\frac {\Delta \phi }{2}}\right)+\cos {\phi _{1}}\cdot \cos {\phi _{2}}\cdot \sin ^{2}\left({\frac {\Delta \lambda }{2}}\right)}}.\;\!} 歴史的に、この式は hav ⁡ ( θ ) = sin 2 ⁡ ( θ / 2 ) {\displaystyle \operatorname {hav} (\theta )=\sin ^{2}(\theta /2)} で定義されるhaversine関数の関数表を用いることで計算された。 この数式は球面上のほとんどの点の間において正確だが、対蹠点間においては誤差が大きい。すべての距離に用いることができる複雑な式としてVincenty formulaの全ての軸の経が等しい楕円という場合の下記の式がある。 Δ σ = arctan ⁡ ( cos ⁡ ϕ 2 ⋅ sin ⁡ ( Δ λ ) ) 2 + ( cos ⁡ ϕ 1 ⋅ sin ⁡ ϕ 2 − sin ⁡ ϕ 1 ⋅ cos ⁡ ϕ 2 ⋅ cos ⁡ ( Δ λ ) ) 2 sin ⁡ ϕ 1 ⋅ sin ⁡ ϕ 2 + cos ⁡ ϕ 1 ⋅ cos ⁡ ϕ 2 ⋅ cos ⁡ ( Δ λ ) . {\displaystyle \Delta \sigma =\arctan {\frac {\sqrt {\left(\cos \phi _{2}\cdot \sin(\Delta \lambda )\right)^{2}+\left(\cos \phi _{1}\cdot \sin \phi _{2}-\sin \phi _{1}\cdot \cos \phi _{2}\cdot \cos(\Delta \lambda )\right)^{2}}}{\sin \phi _{1}\cdot \sin \phi _{2}+\cos \phi _{1}\cdot \cos \phi _{2}\cdot \cos(\Delta \lambda )}}.} プログラミングの際は通常の逆正接関数(atan())よりも atan2() 関数を用いたほうが、 Δ σ {\displaystyle \Delta \sigma } が全象限で出力されるため良い。 大円距離の計算は、航空機や船舶の経路計算の一部であり、大円距離以外に、出発点および中間の各点における方位角の計算も行う。 緯度/経度による表現ではなく通常のユークリッド空間上の3次元ベクトルを用いた方法だが、ベクトルの内積と外積により以下のように表すことができる。 Δ σ = arccos ⁡ ( n 1 ⋅ n 2 ) Δ σ = arcsin ⁡ | n 1 × n 2 | Δ σ = arctan ⁡ | n 1 × n 2 | n 1 ⋅ n 2 {\displaystyle {\begin{aligned}\Delta \sigma &=\arccos(\mathbf {n} _{1}\cdot \mathbf {n} _{2})\\\Delta \sigma &=\arcsin \left|\mathbf {n} _{1}\times \mathbf {n} _{2}\right|\\\Delta \sigma &=\arctan {\frac {\left|\mathbf {n} _{1}\times \mathbf {n} _{2}\right|}{\mathbf {n} _{1}\cdot \mathbf {n} _{2}}}\\\end{aligned}}\,\!} n 1 {\displaystyle \mathbf {n} _{1}} と n 2 {\displaystyle \mathbf {n} _{2}} は球面上の2点の単位法線ベクトルである。 上記の緯度/経度に基づく物と同様に、逆正接関数による計算式が唯一全ての角度において良条件である。 球面上の2点間を3次元空間上で結ぶ線分は大円の弦となる。2点間の中心角はこの弦の長さから求めることができる。そして、大円距離は中心角に比例する。 単位球面における大円弦長 C h {\displaystyle C_{h}\,\!} は、直交座標系において Δ X = cos ⁡ ϕ 2 ⋅ cos ⁡ λ 2 − cos ⁡ ϕ 1 ⋅ cos ⁡ λ 1 ; Δ Y = cos ⁡ ϕ 2 ⋅ sin ⁡ λ 2 − cos ⁡ ϕ 1 ⋅ sin ⁡ λ 1 ; Δ Z = sin ⁡ ϕ 2 − sin ⁡ ϕ 1 ; C = ( Δ X ) 2 + ( Δ Y ) 2 + ( Δ Z ) 2 {\displaystyle {\begin{aligned}\Delta {X}&=\cos \phi _{2}\cdot \cos \lambda _{2}-\cos \phi _{1}\cdot \cos \lambda _{1};\\\Delta {Y}&=\cos \phi _{2}\cdot \sin \lambda _{2}-\cos \phi _{1}\cdot \sin \lambda _{1};\\\Delta {Z}&=\sin \phi _{2}-\sin \phi _{1};\\C&={\sqrt {(\Delta {X})^{2}+(\Delta {Y})^{2}+(\Delta {Z})^{2}}}\end{aligned}}} となる。このとき、中央角は Δ σ = 2 arcsin ⁡ C 2 . {\displaystyle \Delta \sigma =2\arcsin {\frac {C}{2}}.} であり、大円距離は d = r Δ σ . {\displaystyle d=r\Delta \sigma .} となる。 最後の式の中心角度は弧度で表されたものである。 海里の距離の計算の際は度数法における分がそのまま海里として用いられる（度で表したものの60倍）。 地球の形状は回転軸方向に潰れた球（扁球）とみなすことができる。この時赤道半径 a {\displaystyle a} は6378.137 km、極半径 b {\displaystyle b} は6356.752 kmとなる。 赤道付近の短い南北方向の線においては半径 b 2 / a {\displaystyle b^{2}/a} (6335.439 km)とした際が最も良い近似となり、極においては半径 a 2 / b {\displaystyle a^{2}/b} (6399.594 km) が最も良い。この差は1%である。 つまり、地球を球体と仮定した計算においては、地球上の任意の2点間の距離に対する1つの計算による誤差は 0.5% 以内とすることができる（ただし、限られた地域に関してはより誤差の少ない値を使用することもできる。）。 この値として平均地球半径を用いるとよく、その値は R 1 = 1 3 ( 2 a + b ) ≈ 6371 k m {\displaystyle R_{1}={\frac {1}{3}}(2a+b)\approx 6371\,\mathrm {km} } (値はGRS 80における回転楕円体近似に対して)である。 扁平率が小さい場合はこの値が平均自乗誤差を最小化する。