0

楕円積分を用いた楕円弧長の計算 その2

118
0
  1. はじめに
     その1では、第I象限に限定して、第2種不完全楕円積分を用いて楕円弧長を求める方法を解説した。今回は、弧の存在範囲を、第I及び第IV象限(すなわち、楕円の右半分)に拡げる。楕円は、上下左右対称なので、第I象限での計算方法が分かれば、基本的には全てのケースで計算可能である。しかし、実際には拡張が必要になった時、短時間で対応する事が困難な事が多く、定式化しておく事は、無意味ではないと思われる。さらに、今回は幾つかの計算例を追加した。

  2. 0<baの時の弧長
    離心率は、e=1(b/a)2である。
    その1と同様に、媒介変数uを用いた第2の形式で楕円を表すが、楕円の右半分を動くものとする。
    x=asinu,y=bcosu,0uπ
    θの動く範囲は、π/2θπ/2とする。
    第2種不完全楕円積分E(u,e)の計算にあたっては、θからuへの変換が必要になるが、分母の0等への注釈の煩わしさを避ける為、変換関数を導入する。
    th2u(θ)={tan1((b/a)/tanθ)(π/2<θ<π/2,θ0)π/2(θ=0)0(θ=±π/2)
    また、その1で言及しなかったが、第2種完全楕円積分E(e)は四分楕円の弧長に対応している事を指摘しておく。
    以下、場合分けして、[θ1,θ2]の範囲の弧長Lを求める。
    i) 0θ1θ2π/2の時
    その1と同一条件なので、明らかに、
    L=a(E(u2,e)E(u1,e))
    u1=th2u(θ2),u2=th2u(θ1)
    である。
    ii) π/2θ1<0θ2π/2の時
    弧の範囲を[θ1,0][0,θ2]に分けて考察する。
    先に[0,θ2]の弧長L2を求める。
    aE(r,e)は、点(0,b)からu=rで与えられる点までの弧長であった。u1=th2u(θ2)と置くと、L2は点(a,0)からu=u1で与えられる点までの弧長なので、四分楕円の弧長からaE(u1,e)を差し引いて求められる。よって、
    L2=a(E(e)E(u1,e))
    となる。
    次に[θ1,0]の弧長L1だが、楕円は上下対称なので、u2=th2u(θ1)と置くと、L2と全く同様に扱える。よって、
    L1=a(E(e)E(u2,e))
    となる。以上から、
    L=L1+L2=a(2E(e)E(u2,e)E(u1,e))
    u1=th2u(θ2),u2=th2u(θ1)
    が得られる。
    iii) π/2θ1θ2<0の時
    楕円の上下対称性を考慮すると明らかに
    L=a(E(u2,e)E(u1,e))
    u1=th2u(θ1),u2=th2u(θ2)
    となる。

  3. 0<abの時の弧長
    離心率は、e=1(a/b)2である。
    その1と同様に、媒介変数vを用いた第1の形式で楕円を表すが、楕円の右半分を動くものとする。
    x=acosv,y=bsinv,π/2vπ/2
    θの動く範囲は、2.と同様にπ/2θπ/2とする。
    また、2.と同様に変換関数を導入する。
    th2v(θ)={tan1((a/b)tanθ)(π/2<θ<π/2)±π/2(θ=±π/2)
    以下、場合分けして、[θ1,θ2]の範囲の弧長Lを求める。
    i) 0θ1θ2π/2の時
    その1と同一条件なので、明らかに、
    L=b(E(v2,e)E(v1,e))
    v1=th2v(θ1),v2=th2v(θ2)
    である。
    ii) π/2θ1<0θ2π/2の時
    弧の範囲を[θ1,0][0,θ2]に分けて考察する。
    先に[0,θ2]の弧長L2を求める。
    bE(r,e)は、点(a,0)からv=rで与えられる点までの弧長であったからv2=th2v(θ2)と置くと、直ちに、
    L2=bE(v2,e)
    となる。
    次に[θ1,0]の弧長L1だが、楕円は上下対称なので、v1=th2v(θ1)と置くと、L2と全く同様に扱える。よって、
    L1=bE(v1,e)
    となる。以上から、
    L=L1+L2=b(E(v1,e)+E(v2,e))
    v1=th2v(θ1),v2=th2v(θ2)
    が得られる。
    iii) π/2θ1θ2<0の時
    楕円の上下対称性を考慮すると明らかに
    L=b(E(v2,e)E(v1,e))
    v1=th2v(θ2),v2=th2v(θ1)
    となる。

  4. まとめ
    楕円を
    x2a2+y2b2=1
    と表す時、θ=θ1からθ=θ2までの弧長Lは、第2種不完全楕円積分E(φ,k)と第2種完全楕円積分E(k)を用いて、次のように求められる。ただし、θは動径とx軸との間の反時計方向の角度であり
    π/2θ1θ2π/2
    とする。
    A. 0<baの場合
    e=1(b/a)2
    i) 0θ1θ2π/2
    L=a(E(u2,e)E(u1,e))
    u1=th2u(θ2),u2=th2u(θ1)
    ii) π/2θ1<0θ2π/2
    L=a(2E(e)E(u2,e)E(u1,e))
    u1=th2u(θ2),u2=th2u(θ1)
    iii) π/2θ1θ2<0
    L=a(E(u2,e)E(u1,e))
    u1=th2u(θ1),u2=th2u(θ2)
    B. 0<abの場合
    e=1(a/b)2
    i) 0θ1θ2π/2
    L=b(E(v2,e)E(v1,e))
    v1=th2v(θ1),v2=th2v(θ2)
    ii) π/2θ1<0θ2π/2
    L=b(E(v2,e)+E(v1,e))
    v1=th2v(θ1),v2=th2v(θ2)
    iii) π/2θ1θ2<0
    L=b(E(v2,e)E(v1,e))
    v1=th2v(θ2),v2=th2v(θ1)

  5. 計算例
    以下では、角度の単位を数値表の表示に合わせて、「度(°)」とする。
    1)a=10,b=6の楕円の、θ=45°の点から点(0,b)までの弧長を求める
    ケースA)-i)に該当する。
    e=1(6/10)2=0.8
    u1は計算するまでもなく0
    u2=th2u(45)=30.96376
    E(31,0.8)=0.52468
    よって、
    L=10E(31,0.8)=5.2468
    2)a=100,b=125の楕円の、θ=15°の点からθ=60°の点までの弧長を求める
    ケースB)-i)に該当する。
    e=1(100/125)2=0.6
    v1=th2v(15)=12.09879
    v2=th2v(60)=54.18247
    E(12,0.6)=0.20889
    E(54,0.6)=0.89872
    よって、
    L=125(E(54,0.6)E(12,0.6))=86.2
    3)シドニー-東京間の子午線距離を求める
    (任意の子午線上の、シドニーの緯度の点から、東京の緯度の点までの距離を求める例で、シドニー-東京間の距離を求めるのではない。念の為。)
    ここでは、E(φ,k)を求めるのに、丸め誤差を防ぐため、専用ソフトを使う。
    ネット上では、たとえば ke!+san が利用できる。
    a = 6378.137km, b = 6356.752km
    シドニー:南緯33.868333
      東京:北緯35.689556
    ケースA)-ii)に該当する。
    e=1(6356.752/6378.137)2=0.08181979
    ここで、u1,u2を求めるのだが、上記緯度は、詳しくは地理緯度と呼ばれるもので、楕円上の点に立てた法線が赤道面となす角度になっている。(詳細は 緯度 を参照)θとして使えるのは地球中心を通る地心緯度なので、先に地理緯度から地心緯度への変換が必要である。地理緯度をθ、地心緯度をθとすると、変換式は次のようになる。
    θ=tan1((1e2)tanθ)
    これから、地心緯度は
    シドニー:南緯33.690478
      東京:北緯35.507398
    となる。
    u1=th2u(35.507398)=54.401572
    u2=th2u(33.690478)=56.220652
    E(u2,e)=0.9803661
    E(u1,e)=0.9486891
    E(e)=1.5681641
    よって、
    L=a(2E(e)E(u2,e)E(u1,e))=7700.15(km)
    この値は国土地理院の測地線に沿って2点間の距離を出してくれる 測量計算 サイトでの結果と完全に一致している。

投稿日:2022423
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。
バッチを贈って投稿者を応援しよう

バッチを贈ると投稿者に現金やAmazonのギフトカードが還元されます。

投稿者

GonJii
2
1595

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中