Nowは, 現在の時間

firstMは, 元紀の位置

moveMは, 移動速度

Aは, 軌道半径

Ecは, 軌道離心率

Incは, 軌道傾斜

Nodeは, 昇交点黄径

Periは, 近日点引数

M=firstM+moveM*Now // これは平均近点離角

Ei=M+Ec*sin(M)*180/pi

iterate{

Eii=M+Ec*sin(Ei)*180/pi

EiDash=Ei

Ei=Eii

}converge{ abs(EiDash-Eii)<許容範囲}proceed

E=Eii // 離心近点離角

V=acos((cos(E)-Ec)/(1-Ec*cos(E)) // これは真近点離角

R=A*(1-Ec*cos(E)) // これは日心距離

U=V+Peri

Uが360以上なら, U=U mod 360

Phi=asin(sin(Inc)*sin(U))

protoTheta=acos(cos(U)/cos(Phi))

U>=180の時, protoTheta=360-protoTheta

Theta=protoTheta+Node

 これはぼくが初めてケプラー運動の計算をした時の事です. BASICは角度をラジアンで計算するのでプログラムを電卓用の式に書き直す時に"*180/3.1415926536"や"*3.1415926536/180"を全部取り除いたら, 変な答えが出て来ました. その翌日図書館の本を見たら, デグリーで計算をするのに途中で"*180/3.1415926536"を使い, 答えはデグリーというひねくれた方法でした.

 そして更に軌道に傾きを与えようとした時の事です. tan(90)とtan(270)がエラーになる事は最初から知ってたので気をつけてたのですが, 星が90度あたりから270度あたりへとワープするという怪現象が起きました. 翌日tan(91)をatanで元に戻すと-89になる事に気づいて, 90以上270以下の時に180を足し, 270以上360以下の時に360を足す事にしました. 数日後に逆行衛星が出て来た時にも似たような事件が起きたので, 注意書きを書き足しました. ちなみに現在は, 当時使っていたのよりも簡単な式を使っています.

目次