%% funzione per passare da riferimento ECI a riferimento sinodico fisso al baricentro
function [state_syn,t_syn] = eci2sin(state_eci,t)                          % [km] e [s]

% costanti gravitazionali
mu_e = cspice_bodvrd('399','GM',1);                                        % terra
mu_m = cspice_bodvrd('301','GM',1);                                        % luna

% stati luna e baricentro
state_moon = cspice_spkezr('moon', t, 'J2000', 'NONE', 'earth');           % stato luna in eci
state_bar = cspice_spkezr('EARTH_BARYCENTER',t,'J2000','NONE','EARTH');    % stato baricentro in eci
r_moon = state_moon(1:3);
v_moon = state_moon(4:6);

% valori adimensionanti
Rad = norm(r_moon);                                                        % posizione adimensionale
Tau = sqrt(Rad^3/(mu_m+mu_e));                                             % tempo adimensionale
Vad = Rad/Tau;                                                             % velocità adimensionale

% rotazione del sistema sinodico
omega_eci = cross(r_moon,v_moon)/(norm(r_moon)^2);                         % velocità angolare in eci
tet = norm(omega_eci);                                                     % modulo

% versori del sistema
x_sin = (r_moon)/norm(r_moon);
z_sin = cross(r_moon,v_moon)/norm(cross(r_moon,v_moon));
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

% costruzione matrice rotazione dello stato
Cv = [tet*C(1,2), -tet*C(1,1), 0;
      tet*C(2,2), -tet*C(2,1), 0;
      tet*C(3,2), -tet*C(3,1), 0];
CC = [C, zeros(3,3); Cv, C];                                               % rotazione dello stato da sinodico a ECI
CCinv = CC^-1;                                                             % inversa

% conversione stato (earth centered)
state_sin = CCinv*(state_eci);                                             % stato nel sistema sinodico fisso sulla terra
state_bar_sin = CCinv*(state_bar);                                         % stato baricentro nel sistema sinodico
state_bar_sin = [state_bar_sin(1:3)/Rad;state_bar_sin(4:6)/Vad];           % adim. stato baricentro
r_bar_sin = state_bar_sin(1:3);
v_bar_sin = state_bar_sin(4:6);

% coordinate adimensionali
r_adim = state_sin(1:3)/Rad;
v_adim = state_sin(4:6)/Vad;
t_syn = t /Tau;
state_syn = [r_adim-r_bar_sin; v_adim-v_bar_sin];                          % stato nel sistema sinodico nel baricentro

