%% funzione di integrazione problema n corpi
function [t,Y,ie] = int_eqmoto(state_0,t_i,t_f,marker,n_body)              % state_0 = x y z vx vy vz in km/s, tempi in s
                                                                           % marker = 1 for nbody, = 2 for CR3BP
                                                                           % n_body da 2 a 4
% tempo di riferimento
t_ref = t_i;
t_end = t_f-t_i;

% opzioni di integrazione
ie = [];                                                                   % flag collisione
opt = odeset('RelTol',1e-10,'AbsTol',1e-12,'Events',@(t,y) collision(t,y,t_ref));           % tolleranze e funzione di collisione

% fisso impostazioni di default
if nargin < 5
    n_body = 3;
end

% integrazioni
if marker == 1                                                             % integrazione n corpi
    [t,Y,te,Ye,ie] = ode113(@(t,s) eqmoto_nbody(t,s,n_body,t_ref),[0 t_end],state_0,opt);
    t = t+t_ref;
elseif marker == 2                                                         % integrazione CR3BP
    [t,Y] = ode113(@eqmoto_crtbp,[t_i t_f],state_0,opt);
else
    error('Invalid marker. Please use 1 for n body problem or 2 for CR3BP.');
end
end
