The following is my code in MATLAB to transform kepler elements to cartesian coordinates. Can you give me the code of a function that will transform cartesian coordinates back to kepler elements that will match the inital kepler elements? mu = 3.986004415e5; a = 2.1656e03; ecc = 0.7404; inc = 123.8490; raan = 127.5686; argp = 180.0180; f = 180; R = orbitDCM(inc,raan,f+argp); %Create the direction cosine matrix p = a*(1-ecc^2); %Semi latus rectum h = sqrt(mu*p); %Orbital angular momentum rOrb = [p/(1+ecc*cosd(f));0;0]; %Position in orbital frame velOrb = [mu*ecc/h*sind(f);h/rOrb(1);0]; %Velocity in orbital frame rxyz = R*rOrb velxyz = R*velOrb function R = orbitDCM(inc,omeg,th) %Creates the direction cosine matrix for an orbit. The matrix can then %be used to convert between orbit frame coordinates (rhat,theta_hat,h_hat) %and inertial coordinates (x,y,z). R = eye(3); R(1,1) = cosd(omeg)*cosd(th)-sind(omeg)*cosd(inc)*sind(th); R(2,1) = sind(omeg)*cosd(th)+cosd(omeg)*cosd(inc)*sind(th); R(3,1) = sind(inc)*sind(th); R(3,2) = sind(inc)*cosd(th); R(3,3) = cosd(inc); R(1,2) = -cosd(omeg)*sind(th)-sind(omeg)*cosd(inc)*cosd(th); R(2,2) = -sind(omeg)*sind(th)+cosd(omeg)*cosd(inc)*cosd(th); R(1,3) = sind(omeg)*sind(inc); R(2,3) = -cosd(omeg)*sind(inc); end
The following is my code in MATLAB to transform kepler elements to cartesian coordinates. Can you give me the code of a function that will transform cartesian coordinates back to kepler elements that will match the inital kepler elements?
mu = 3.986004415e5;
a = 2.1656e03;
ecc = 0.7404;
inc = 123.8490;
raan = 127.5686;
argp = 180.0180;
f = 180;
R = orbitDCM(inc,raan,f+argp); %Create the direction cosine matrix
p = a*(1-ecc^2); %Semi latus rectum
h = sqrt(mu*p); %Orbital angular momentum
rOrb = [p/(1+ecc*cosd(f));0;0]; %Position in orbital frame
velOrb = [mu*ecc/h*sind(f);h/rOrb(1);0]; %Velocity in orbital frame
rxyz = R*rOrb
velxyz = R*velOrb
function R = orbitDCM(inc,omeg,th)
%Creates the direction cosine matrix for an orbit. The matrix can then
%be used to convert between orbit frame coordinates (rhat,theta_hat,h_hat)
%and inertial coordinates (x,y,z).
R = eye(3);
R(1,1) = cosd(omeg)*cosd(th)-sind(omeg)*cosd(inc)*sind(th);
R(2,1) = sind(omeg)*cosd(th)+cosd(omeg)*cosd(inc)*sind(th);
R(3,1) = sind(inc)*sind(th);
R(3,2) = sind(inc)*cosd(th);
R(3,3) = cosd(inc);
R(1,2) = -cosd(omeg)*sind(th)-sind(omeg)*cosd(inc)*cosd(th);
R(2,2) = -sind(omeg)*sind(th)+cosd(omeg)*cosd(inc)*cosd(th);
R(1,3) = sind(omeg)*sind(inc);
R(2,3) = -cosd(omeg)*sind(inc);
end
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 3 images