%% funzione per passare da riferimento sinodico nel baricentro al sistema ECI
function state = sin2eci(state_syn,t)                                      % stato adim. tempo in s

% costanti gravitazionali
mu_e = cspice_bodvrd('399','GM',1);                                        % terra
mu_m = cspice_bodvrd('301','GM',1);                                        % luna
mu = mu_m/(mu_e+mu_m);                                                     % sistema binario

% stato luna 
state_moon = cspice_spkezr('moon', t, 'J2000', 'NONE', 'earth');           % state luna in ECI
r_moon_eci = state_moon(1:3);    
v_moon_eci = state_moon(4:6);

% valori adimensionanti
Rad = norm(state_moon(1:3));                                               % posizione adimensionale
Tad = sqrt(Rad^3/(mu_e+mu_m));                                             % tempo adimensionale
Vad = Rad/Tad;                                                             % velocità adimensionale

% rotazione del sistema sinodico
omega_eci = cross(r_moon_eci,v_moon_eci)/dot(r_moon_eci,r_moon_eci);       % velocità angolare in eci

% versori del sistema
x_sin = r_moon_eci/norm(r_moon_eci);
z_sin = cross(r_moon_eci,v_moon_eci)/norm(cross(r_moon_eci,v_moon_eci));
y_sin = cross(z_sin, x_sin);

% matrice di rotazione da ECI a sistema sinodico (earth centered)
M_sin = [x_sin'; y_sin'; z_sin'];  
C = M_sin';                                                                % da sinodico a ECI

% coordinate dimensionali
rho = state_syn(1:3)*Rad;  
vu = state_syn(4:6)*Vad;

% barycenter centered
r_bar_sin = [mu 0 0]'*Rad;                                                 % distanza terra baricentro del baricentro
r_sin = rho+r_bar_sin;   
v_sin = vu;

% rotazione stato
r_eci = C*r_sin;
v_eci = C*v_sin + cross(omega_eci,r_eci);
state =[r_eci;v_eci];                                                      % stato finale
