% Calcolo della traiettoria di un
satellite passante per due punti.
% Si esegue il calcolo su una orbita
di trasferimento tra Terra e Marte.
%
% Per quanto riguarda la posizione
iniziale del satellite non bisogna
% preoccupasi. Quello che conta per
adesso è la posizione relativa dei
% due pianeti.
% Si suppone che all'epoca del lancio
la Terra sia nel suo pericentro
% (scelta motivata da considerazioni
energetiche), l'orbita della Terra
% sia circolare e l'orbita di Marte
sia circolare. Si suppone che il pericentro
% dell'orbita sia situato sull'asse X
del sistema di riferimento eliocentrico,
% (per cui th1 = 0) mentre come
parametro libero si lascia il punto di arrivo
% sull'orbita di Marte (th2
variabile)
% Numero di posizioni reciproche che
si intende provare
nVal = 40;
% Definizione della posizione
iniziale del satellite
r1 = 149.5979e9;
%
(definizione di AU)
th1 = 0;
% Definizione della posizione finale
del satellite
r2 = 1.52369*r1;
th2 =
0:2*pi/nVal:2*pi;
% Inizializzazione dei dati p ed e
e =
zeros(size(th2));
p =
zeros(size(th2));
% Si esegue il prossimo calcolo per
tutti i valori previsti di th2
% Si osservi che viene appositamente
evitato di eseguire il calcolo
% per th2 = 0, che non ha soluzione
in p ed e.
for n
= 2:length(th2)-1,
% Applicazione della formula per la determinazione dei parametri
% dell'orbita di
trasferimento
e(n) = (r2 - r1)/(r1*cos(th1) - r2*cos(th2(n)));
p(n) = r1*(1 +
e(n));
end
% Adesso si calcolano le orbite dei
pianeti
th = 0:2*pi/100:2*pi;
for m
= 1:length(th) % Cicla su cento
valori dell'anomalia eccentrica
x1(m)
= r1*cos(th(m));
y1(m) =
r1*sin(th(m));
x2(m) =
r2*cos(th(m));
y2(m) =
r2*sin(th(m));
end
% Calcolo dell'orbita del satellite
for n
= 2:length(th2)-1 % Cicla per
tutte le posizioni destinazione
for
m = 1:length(th) %
Cicla su cento valori dell'anomalia eccentrica
rs
= p(n)/(1+e(n)*cos(th(m)));
xs(m) =
rs*cos(th(m));
ys(m) =
rs*sin(th(m));
end
%
Calcolo coordinate partenza e destinazione
xst =
r1*cos(th1);
yst = r1*sin(th1);
xd = r2*cos(th2(n));
yd = r2*sin(th2(n));
figure(1)
%
Il disegno viene eseguito sulla figura 1
hold off
plot(xst,yst,'*',xd,yd,'+');
% Disegno partenza e arrivo
hold
on; % Sovrappone al presente i
futuri disegni
plot(x1,y1,'r');
% Disegno dell'orbita della
Terra
plot(x2,y2,'r');
% Disegno dell'orbita di Marte
plot(xs,ys,'g');
% Disegno dell'orbita del
satellite
s =
sprintf('p
= %e, e = %e',p(n),e(n)); %
Stringa con il titolo della figura
title(s);
% Disegno della stringa
axis([-3,3,-3,3]*1e11)
% Impostazione degli assi
drawnow
%
Si richiede il disegno in questo punto
pause(.5)
end