Loading [MathJax]/jax/output/CommonHTML/jax.js
반응형

 상태 벡터 RV는 태양 중심 황도 좌표계 (Heliocentric ecliptic frame)에 상대적으로 정의된다. 이는 지구중심 적도 좌표계 (Geo-centric equatorial frame)과 매우 유사하다. 인력 중심(The center of attraction)으로써 지구를 태양으로 대체하고, 황도 평면이 지구 적도 평면을 대체하면 된다. 춘분선은 관성 X 축으로 동일하게 정의된다.

 실제적인 항성간 임무를 설계하기 위해서는, 어떤 주어진 시간에서 행성의 상태 벡터를 결정할수 있어야만 한다. 그래서 테이블 [1]과 같은 궤도 성분이 제공된다.

 

 

주어지는 일자와 시간에서 행성의 상태 벡터를 결정하는 알고리즘은 다음과 같다.

 

1) 율리우스일 JD 계산하기

JD=J0+UT24

J0=367yINT[74[y+INT(m+912)]]+INT(275m9)+d+1,721,013.5

 

2) J2000 시대로부터의 율리우스 일 T0 계산하기

T0=J02,451,54536,525

 

3) 성분 변화량 계산하기

x=x0+˙xT0

여기서 다음과 같은 어떤 시간에서의 행성의 궤도 성분 (Planetary orbital element)을 구하게 된다.

  • a 장축단, semi-major axis
  • e 이심률, eccentricity
  • i 궤도 기울기, the inclination to the ecliptic plane
  • Ω 승교점의 적경, the right ascension of the ascending node
  • ˜ω 근일점의 경도, the longitude of perihelion
  • L 평균 경도, the mean longitude

 

4) 장축 반지름 semi-major axis a와 이심률 e으로부터 비 각 운동량 specific angular momentum h 구하기

h=μa(1e2)

 

5) 근일점의 매개변수 argument of perihelion ω와 평균 이각 M 구하기

ω=˜ωΩ

M=L˜ω

 

6) 편심 이각 E와 전근점 이각 θ 구하기

평균 근점 이각 Me와 편심 이각 E의 관계는 다음과 같다. 이를 케플러 방정식이라 부른다.

Me=EesinE

편심 이각 E와 진 근점 이각 θ간의 관계는 다음과 같다.

E2=1e1+etanθ2

θ=2tan1(1+e1etanE2)

 

7) 다른 상태량을 통해서 태양 중심의 위치 벡터와 속도 벡터를 얻는다.

초점으로부터의 거리 r
r=h2μ11+ecosθ
시선 속도 Radial velocity vr
vr=μhesinθ
횡속도 Transverse velocity v
vr=μh(1+ecosθ)

 

8) 태양좌표계 혹은 지구 좌표계에 고정하기

rx=h2μ11+ecosθ[cosθsinθ0]

vx=μh[sinθe+cosθ0]

 

위에서 계산한 위치 벡터 rx와 속도 벡터 vx는 궤도 평면 상에서의 위치이다.

기준이 되는 고정 좌표계로 변환은 다음과 같다.

QXx=[cosΩcosωsinΩsinωcosicosΩsinωsinΩcosicosωsinΩsinisinΩcosω+cosΩsinωcosisinΩsinω+cosΩcosicosωcosΩsinisinωsinisinicosωcosi]

 

태양중심, 혹은 지구 중심 좌표계로의 변환은 다음과 같다.

rX=QXxrx

vX=QXxvx

 

전체 코드는 다음과 같다,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
a           =          planet.x(1);
e           =          planet.x(2);
i           = warp_360(planet.x(3));
Omega       = warp_360(planet.x(4));
tilde_omega = warp_360(planet.x(5));
L           = warp_360(planet.x(6));
mu          = planet.mu + sun_mu;
h           = sqrt(mu*a*(1-e.*e));
 
Sec2Day = 1/(24*60*60);
Day2Year= 1/(365.256);
D2R     = pi/180;
R2D     = 180/pi;
 
omega   = warp_360(tilde_omega - Omega);
M       = warp_360(L - tilde_omega);
E       = warp_360(R2D*double(vpasolve((Eval - e * sin(Eval)) - M * D2R, Eval)));
theta   = warp_360(2 * atan(sqrt((1-e)/(1+e))*tand(E/2)) * R2D);
 
rx  = (h.*h/mu)/(1+e*cosd(theta))*[cosd(theta), sind(theta), 0];
vx  = (h/mu) * [-sind(theta), e + cosd(theta), 0];
QxX = [ cosd(Omega)*cosd(omega)-sind(Omega)*sind(omega)*cosd(i), -cosd(Omega)*sind(omega)-sind(Omega)*cosd(i)*cosd(omega),  sind(Omega)*sind(i);
        sind(Omega)*cosd(omega)+cosd(Omega)*sind(omega)*cosd(i), -sind(Omega)*sind(omega)+cosd(Omega)*cosd(i)*cosd(omega), -cosd(Omega)*sind(i);
                                            sind(omega)*sind(i),                                      sind(i)*cosd(omega),              cosd(i)];
cs

 

예제 1) 2003년 8월 27일의 12hr UT의 지구와 화성의 거리를 계산해보자.

 

예제 2) 오늘 밤 자정, 경기 평택 어딘가에서의 달의 모습을 나타내어 보자.

오늘 밤 자정은 2023년 03월 13일 0hr KST

경기 평택 어딘가는 N 37.00000, E 127.000000 이라 하자.

 

[1]  "Planetary Orbital Elements - Planetary Mean Orbits (J2000)" http://www.met.rdg.ac.uk/~ross/Astronomy/Planets.html

728x90

+ Recent posts