閉じた宇宙1

宇宙の果てを越えて更に進むと地球に戻って来るというストーリーのSF小説を読んだので, 宇宙の果て近くでは反対側の星を後ろから見ている状態じゃないかと思って計算の仕方を調べてみました. 角度の単位は「度」, そして距離の単位は「光年」. 話を簡単にするため仮に宇宙の半径は180億光年という事にして, 1億光年は1度という事にします.

閉じた宇宙2

Alphaは, 星の赤経.

Deltaは, 星の赤緯.

Disは, 地球から星までの距離(単位は光年).

Phiは, 固有運動. 接線方向への運動の方向を, 北極方向から反時計回りに測る.

閉じた宇宙3

Thetaは, 固有運動. 視線方向からの, 運動方向の角度.

Vは, 星の空間速度(光速=1).

閉じた宇宙4

1・視位置から真位置を求める(惑星光行差の補正)

VisualDelta=(VisualDelta-90)*(-1)  // 赤道からの角距離を北極からの角距離にする

VisualDis=VisualDis/100,000,000   // 1億光年が1度なので1億で割る

TrueDis=acos(cos(VisualDis)*cos(V)+sin(VisualDis)*sin(V)*cos(180-VisualTheta))

Mu=acos((cos(V)-cos(TrueDis)*cos(VisualDis))/(sin(TrueDis)*sin(VisualDis)))

TrueTheta=acos((cos(VisualDis)-cos(V)*cos(TrueDis))/(sin(V)*sin(TrueDis)))

閉じた宇宙5

TrueDelta=acos(cos(Mu)*cos(VisualDelta)+sin(Mu)*sin(VisualDelta)*cos(Phi))

A=acos((cos(Mu)-cos(VisualDelta)*cos(TrueDelta))/(sin(VisualDelta)*sin(TrueDelta)))

Phi<180の場合, TrueAlpha=VisualAlpha+A

Phi>180の場合, TrueAlpha=VisualAlpha-A

B=acos((cos(VisualDelta)-cos(TrueDelta)*cos(Mu))/(sin(TrueDelta)*sin(Mu)))

VisualPhi<180の場合, TruePhi=180-B

VisualPhi>180の場合, TruePhi=180+B

TrueDelta=(TrueDelta-90)*(-1)   // 北極からの角距離を赤道からの角距離にする

TrueDis=TrueDis*100,000,000    // 1億光年が1度なので1億を掛ける

閉じた宇宙6

2・真位置から視位置を求める(惑星光行差の逆補正)

TrueDelta=(TrueDelta-90)*(-1)   // 赤道からの角距離なので北極からの角距離にする

TrueDis=TrueDis/100,000,000    // 1億光年が1度なので1億で割る

VisualDis=acos(cos(V)*cos(TrueDis)+sin(V)*sin(TrueDis)*cos(TrueTheta))

A=acos((cos(TrueDis)-cos(V)*cos(VisualDis))/(sin(V)*sin(VisualDis)))

VisualTheta=180-A

Mu=acos((cos(V)-cos(VisualDis)*cos(TrueDis))/(sin(VisualDis)*sin(TrueDis)))

閉じた宇宙7

VisualDelta=acos(cos(TrueDelta)*cos(Mu)+sin(TrueDelta)*sin(Mu)*cos(180-TruePhi))

VisualPhi=acos((cos(TrueDelta)-cos(Mu)*cos(VisualDelta))/(sin(Mu)*sin(VisualDelta)))

ただし, TruePhi>180の場合, VisualPhi=360-VisualPhi

TruePhi<180の場合, VisualAlpha=TrueAlpha+B

TruePhi>180の場合, VisualAlpha=TrueAlpha-B

VisualDelta=(VisualDelta-90)*(-1)   // 北極からの角距離なので赤道からの角距離にする

VisualDis=VisualDis*100,000,000    // 1億光年が1度なので1億でを掛ける

3・余所の星から見た星空

星のデータは真位置を使います.

Aは, 地球から見た星の現在の経度と目的地の経度の差.

Bは, 地球から見た星の現在の位置と, 地球から見た目的地の角距離.

Dは, 目的地から見た星の現在の位置と地球の角距離.

Fは, 現在の, 地球から見た星の経度と目的地から見た星の経度の差.

Gは, 地球から見た星の未来の位地と, 目的地の経度の差.

Hは, 地球から見た星の未来の位地と, 目的地の角距離.

Jは, 目的地から見た星の未来の位地と, 地球の角距離.

Kは, 地球から見た未来の星の経度と, 目的地から見た星の未来の経度の差.

Lは, 地球から見た, 現在と未来の星の経度差.

閉じた宇宙8

Mは, 目的地から見た, 現在と未来の星の経度差.

Nは, 目的地から見た, 現在と未来の星の位置の角距離.

BeforePhiは, 地球から見た星の固有運動の方向. 北極方向から反時計回りに測る.

AfterPhiは, 目的地から見た星の固有運動の方向.

BefoerThetaは, 地球から見た星の運動方向の, 視線方向からの角度.

AfterThetaは, 目的地から見た星の運動方向の, 視線方向からの角度.

BeforeNowStarDelta=(BeforeNowStarDelta-90)*(-1)  // 赤道からの角距離なので北極からの角距離にする

GoalDelta=(GoalDelta-90)*(-1)               // 赤道からの角距離なので北極からの角距離にする

BeforeNowStarDis=BeforeNowStarDis/100,000,000   // 1億光年が1度なので1億で割る

GoalDis=GoalDis/100,000,000                // 1億光年が1度なので1億で割る

閉じた宇宙9

B=acos(cos(GoalDelta)*cos(BeforeNowStarDelta)+sin(GoalDelta)*sin(BeforeNowStarDelta)*cos(A))

C=acos((cos(BeforeNowStarDelta)-cos(B)*cos(GoalDelta))/(sin(B)*sin(GoalDelta)))

閉じた宇宙10

AfterNowStarDis=acos(cos(GoalDis)*cos(BeforeNowStarDis)*sin(GoalDis)*sin(BeforeNowStarDis)*cos(B))

D=acos((cos(BeforeNowStarDis)-cos(AfterNowStarDis)*cos(GoalDis))/(sin(AfterNowStarDis)*sin(GoalDis)))

閉じた宇宙11
E=180-D

AfterNowStarDelta=acos(cos(GoalDelta)*cos(E)+sin(GoalDelta)*sin(E)*cos(C))

F=acos((cos(E)-cos(GoalDelta)*cos(AfterNowStarDelta))/(sin(GoalDelta)*sin(AfterNowStarDelta)))

目的地が星より西の場合, AfterNowStarAlpha=GoalAlpha-F

目的地が星より東の場合, AfterNowStarAlpha=GoalAlpha+F

閉じた宇宙12

BeforeFutureStarDis=acos(cos(BeforeNowStarDis)^2+sin(BeforeNowStarDis)^2*cos(180-BeforeTheta))

Mu=acos((cos(BeforeNowStarDis)-cos(BeforeFutureStarDis)*cos(BeforeNowStarDis))/(sin(BeforeFutureStarDis)*sin(BeforeNowStarDis)))

閉じた宇宙13
BeforeFutureStarDelta=acos(cos(Mu)*cos(BeforeNowStarDelta)+sin(Mu)*sin(BeforeNowStarDelta)*cos(BeforePhi))

L=acos((cos(Mu)-cos(BeforeNowStarDelta)*cos(BeforeFutureStarDelta))/(sin(BeforeNowStarDelta)*sin(BeforeFutureStarDelta)))

閉じた宇宙14

H=acos(cos(GoalDelta)*cos(BeforeFutureStarDelta)+sin(GoalDelta)*sin(BeforeFutureStarDelta)*cos(G))

I=acos((cos(BeforeFutureStarDelta)-cos(H)*cos(GoalDelta))/(sin(H)*sin(GoalDelta)))

閉じた宇宙15
AfterFutureStarDis=acos(cos(GoalDis)*cos(BeforeFutureStarDis)+sin(GoalDis)*sin(BeforeFutureStarDis)*cos(H))

J=acos((cos(BeforeFutureStarDis)-cos(AfterFutureStarDis)*cos(GoalDis))/(sin(AfterFutureStarDis)*sin(GoalDis)))

閉じた宇宙16

AftreFutureStarDelta=acos(cos(GoalDelta)*cos(180-J)+sin(GoalDelta)*sin(180-J)*cos(I))

K=acos((cos(180-J)-cos(GoalDelta)*cos(AfterFutureStarDelta))/(sin(GoalDelta)*sin(AfterFutureStarDelta)))

目的地が星より西の場合, AfterFutureStarAlpha=GoalAlpha-K

目的地が星より東の場合, AfterFutureStarAlpha=GoalAlpha+K

閉じた宇宙8
N=acos(cos(AfterNowStarDelta)*cos(AfterFutureStarDelta)+sin(AfterNowStarDelta)*sin(AfterFutureStarDelta)*cos(M))

AfterPhi=acos((cos(AfterFutureStarDelta)-cos(N)*cos(AfterNowStarDelta))/(sin(N)*sin(AfterNowStarDelta)))

ただし未来の位地が現在より西の場合は, AfterPhi=360-AfterPhi

閉じた宇宙17

O=acos(cos(AfterFutureStarDis)*cos(AfterNowStarDis)+sin(AfterFutureStarDis)*sin(AfterNowStarDis)*cos(N))

AfterTheta=acos((cos(AfterFutureStarDis)-cos(AfterNowStarDis)*cos(O))/(sin(AfterNowStarDis)*sin(O)))

AfterNowStarDelta=(AfterNowStarDelta-90)*(-1)     // 北極からの角距離なので赤道からの角距離にする

AfterNowStarDis=AfterNowStarDis*100,000,000      // 1億光年は1度なので1億を掛ける

目次