우주비행체의 위치벡터 및 속도벡터를 궤도요소(COE, classical orbital elements)로 변환할 수 있었다 (https://pasus.tistory.com/287). 이번에는 이와 반대로 궤도요소를 위치벡터와 속도벡터로 변환하는 방법에 대해서 알아보기로 하자.
시간
먼저 궤도중심좌표계에서 위치벡터와 속도벡터를 구하는 단계이다.
다음 그림과 같이

극좌표계
여기서 거리
속도벡터는 식 (1)을 ECI좌표계에서 미분하면 된다. 궤도중심좌표계
여기서
한편 각운동량 벡터는
가 된다.
가 된다. 식 (2)를 미분하면
가 되므로 식 (6)을 위 식에 대입하면
가 된다. 식 (6)과 (8)을 식 (4)에 대입하면 속도벡터는
가 된다. 한편 좌표계
이므로 식 (1)과 (9)를 궤도중심좌표계로 표현하면 다음과 같다 (https://pasus.tistory.com/83).
식 (11)은 우주비행체의 위치벡터와 속도벡터를 궤도중심좌표계로 표현한 식이다.
이제 식 (11)을 ECI좌표계로 변환하면 된다. ECI좌표계

따라서
가 된다. 여기서
여기서 벡터
예를 들어서, 우주비행체의 궤도요소
위치벡터와 속도벡터는 각각 다음과 같이 계산된다.
다음은 궤도요소를 위치벡터와 속도벡터로 변환해 주는 매트랩 코드다.
function [r,v] = coe2rv(a,e,i,W,w,theta)
% [r,v]=coe2rv(a,e,i,W,w,theta)
% Converting orbital elements to vectors R and V in inertial frame,
% where V=dR/dt in inertial frame.
% Input (a, e, i, W, w, theta) in (km, sec) and degrees (p=a(1-e^2))
% put undefined values as 0.
% Output (R, V) in km, km/s
%
% coded by st.watermelon
mu = 398600; % gravitational parameter km^3/s^2
p = a*(1-e^2);
theta = theta*pi/180;
sthe = sin(theta);
cthe = cos(theta);
mup = sqrt(mu/p);
s_r = p/(1+e*cthe);
r_o = [s_r*cthe s_r*sthe 0]'; % in orbital frame
v_o = [-(mup*sthe) (mup*(e+cthe)) 0]';
C = eci2perifocal(i,W,w);
r = C*r_o;
v = C*v_o;
end
% DCM ECI to Perifocal
function C = eci2perifocal(i,W,w)
i = i*pi/180;
W = W*pi/180;
w = w*pi/180;
ci = cos(i); si = sin(i);
cW = cos(W); sW = sin(W);
cw = cos(w); sw = sin(w);
C1 = [cW -sW 0; sW cW 0; 0 0 1];
C2 = [1 0 0; 0 ci -si; 0 si ci];
C3 = [cw -sw 0; sw cw 0; 0 0 1];
C = C1*C2*C3;
end
'항공우주 > 우주역학' 카테고리의 다른 글
정적 자세결정 (Static attitude determination): TRIAD (0) | 2023.10.19 |
---|---|
[CR3BP] 주기궤도의 매니폴드 계산 (0) | 2023.08.01 |
궤도요소 (COE) 계산 (0) | 2023.07.26 |
고전 궤도요소 (Classical Orbital Elements) (0) | 2023.07.24 |
[CR3BP] 주기궤도의 안정성 (0) | 2023.07.22 |
댓글