パソコン用の立体恒星地図ソフトは, 光速の有限性と固有運動 を無視して現在見える位置に星が止まっている物, 固有運動 は再現してるが光速の有限性を無視して現在見える位置に星が在る物, 固有運動 と光速の有限性は無視してるが連星 の動きを再現している物など様々なタイプが有ります. このうちタキオン望遠鏡 搭載型というのは, まずコンピューターの中で真の位置を計算しから, タキオン望遠鏡 使用時にはそこで計算をやめるが, 通常の観測をしているなら更に惑星光行差 で補正して見掛けの位置に直す物で, 現地でも使える恒星図を作る事が出来ます. そのうちの一つは, これから述べる様な仕組みです. これは摂動を考慮していない最も簡単なタイプであり, 天文愛好家達の間を渡り歩いていたノートから写した物です. ちなみにタキオンとは空想の粒子 ですので, 本物のタキオン望遠鏡 などは製造不可能です. 当然ながらベテルギウスが爆発してるかどうかは分かりません.

観測地の位置は, ObX, ObY, ObZ

元紀からの経過年数はNow

星のデータは

AbMag, firstX, moveX, firstY, moveY, firstZ, moveZ

CfirstM, CmoveM, CA, CEc, CInc, CNode, CPeri

GCfirstM, GCmoveM, GCA, GCEc, GCInc, GCNode, GCPeri

GGCfirstM, GGCmoveM, GGCA, GGCEc, GGCInc, GGCNode, GGCPeri

単独星(親星)は一番上の行だけを使い, 子星は上の二行を使い, 孫星は上の三行を使い, 曾孫星は全ての行を使う.

ItsTime=Now

label1

 /* 単独星の位置 */

PX=firstX+moveX*ItsTime

PY=firstY+moveY*ItsTime

PZ=firstZ+moveZ*ItsTime

 /* 子星の位置(ガンマ2アンドロメダC, アルファCenC, デルタOriC, アルゴルC, リゲルA, アルファHerA, アルファUMiA, シグマ2EriAなど) */

firstM=CfirstM

moveM=CmoveM

A=CA

Ec=CEc

Inc=CInc

Node=CNode

Peri=CPeri

gosub Kepler  // ケプラーの計算

CX=KX

CY=KY

CZ=KZ

 /* 孫星の位置(アルファCenA, アルファCenB, ガンマ2AndA, ガンマ2AndB, デルタOriA, デルタOriB, アルゴルA, アルゴルB, リゲルB, リゲルC, アルファHerB, アルファHerC, カストルC1, カストルC2など) */

firstM=GCfirstM

moveM=GCmoveM

A=GCA

Ec=GCEc

Inc=GCInc

Node=GCNode

Peri=GCPeri

gosub Kepler

GCX=KX

GCY=KY

GCZ=KZ

 /* 曾孫星の位置(カストルA1, カストルA2, カストルB1, カストルB2など) */

firstM=GGCfirstM

moveM=GGCmoveM

A=GGCA

Ec=GGCEc

Inc=GGCInc

Node=GGCNode

Peri=GGCPeri

gosub Kepler

GGCX=KX

GGCY=KY

GGCZ=KZ

 /* 仕上げ */

X=PX+CX+GCX+GGCX

Y=PY+CY+GCY+GGCY

Z=PZ+CZ+GCZ+GGCZ

SX=X-ObX

SY=Y-ObY

SZ=Z-ObZ

Di=(SX^2+SY^2+SZ^2)^0.5

タキオン望遠鏡 を使っているならlabel2に行くが, そうでないならlabel3に行く

label2

D=Di

label4

VMag=log(10,(D/32.62))*5+AbMag

end

label3

ItsTime=ItsTime-Diと再定義してlabel1に行く

こうして出た新しい距離がDii

DiとDiiの差が許容範囲以下ならそれをDとしてlabel4に行くが, そうでないなら

ItsTime=ItsTime+(Di-Dii)と再定義してlabel1に行く

*Kepler サブルーチン・ケプラー

M=firstM+moveM*ItsTime

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

label5

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

EiとEiiの差が許容範囲以上ならEi=Eiiと再定義してlabel5に行くが, そうでないならそれをEとする

V=acos((cos(E)-Ec)/(1-Ec*cos(E))

R=A*81-Ec*cos(E))

U=V+Peri

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

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

protoThetaは

U<180の場合

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

U>=180の場合

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

Theta=protoTheta+Node

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

KX=R*cos(Phi)*cos(Theta)

KY=R*cos(Phi)*sin(Theta)

KZ=R*sin(Phi)

return

 /* 太陽の位置 */

データは, moveSunX, moveSunY, moveSunZ, SunAbMag

SunAbMag=4.79

タキオン望遠鏡 使用時はlabel6に行き, そうでないならlabel7に行く

label6

SunD=(ObX^2+ObY^2+ObZ^2)^0.5

SunVMag=log(10,(SunD/32.62))*5+SunAbMag

end

label7

SunX=moveSunX*SunD*(-1)

SunY=moveSunY*SunD*(-1)

SunZ=moveSunZ*SunD*(-1)

label8

SSunX=SunX-ObX

SSunY=SunY-ObY

SSunZ=SunZ-ObZ

SunDi=(SSunX^2+SSunY^2+SSunZ^2)^0.5

SunX=moveSunX*SunDi*(-1)

SunY=moveSunY*SunDi*(-1)

SunX=moveSunZ*SunDi*(-1)

と再定義してlabel8に行く

そしてその時の距離をSunDiiとする

SunDiとSunDiiの差が許容範囲以上ならSunDi=SunDi+(SunDi-SunDii)と再定義してlabel9に行くが, そうでないならそれをSunDとしてlabel6に行く

目次