Salve a tutti
Ho un problemino matematico
Ho un simulatore del cosmo... (stelle galassie pianeti ecc) in questo simulatore è possibile creare nuove stelle e piazzarle dove ci pare inserendo le coordinate della posizione relativa rispetto alla terra; le coordinate sono in forma sferica quindi:
ascensione retta = ore minuti secondi
declinazione = gradi minuti secondi
distanza = anni luce
dato che non so a priori queste coordinate ho provato a calcolarle in questo modo:
mi metto nella posizione in cui vorrei piazzare l'oggetto (punto C) punto un altro oggetto di riferimento( punto B)e leggo le sue coord
vado sulla terra (punto A)punto lo stesso oggetto di rif e leggo le coord
la posizione del punto C rispetto al punto A sarà data da : AC=AB-CB ovviamente il tutto trasformato in coordinate cartesiane
infine ritrasformo il risultato nella forma delle coordinate originali.
Ho implemenato il procedimento in matlab
ma il risultato non è corretto c'è un errore di migliaia di anni luce ...
penso che i calcoli siano giusti... non capisco dove sia
qui il codice matlab
Codice:
disp('inserire le coordinate AR DEC r della stella di riferimento viste dalla terra')
h0=input('h=')
m0=input('m=')
s0=input('s=')
dg0=input('dec °=')
dm0=input('dec m=')
ds0=input('dec s=')
r0=input('r0=')
%AR0=[ h0 m0 s0 ];
%DEC0=[dg0 dm0 ds0];
%conversione ore minuti in gradi
AR0=((((s0/60)+m0)/60)+h0)*15;
%conversione gradi sessages a gradi
dec0=sign(dg0)*(((ds0/60)+dm0)/60)+dg0
STAR0=[ AR0 dec0 r0]
disp('inserire le coordinate della stella di rif da dove si vuole mettere la stella ')
h1=input('h=')
m1=input('m=')
s1=input('s=')
dg1=input('dec °=')
dm1=input('dec m=')
ds1=input('dec s=')
r1=input('r1=')
%conversione ore minuti in gradi
AR1=((((s1/60)+m1)/60)+h1)*15;
%conversione gradi sessages a gradi
dec1=sign(dg1)*(((ds1/60)+dm1)/60)+dg1;
STAR1=[AR1 dec1 r1]
%gradi-->radianti
AR0=degtorad(AR0);
dec0=degtorad(dec0);
AR1=degtorad(AR1);
dec1=degtorad(dec1);
%calcolo vettori xyz
x1=r1*cos(dec1)*cos(AR1);
y1=r1*cos(dec1)*sin(AR1);
z1=r1*sin(dec1);
Star1=[x1 y1 z1];
x0=r0*cos(dec0)*cos(AR0);
y0=r0*cos(dec0)*sin(AR0);
z0=r0*sin(dec0);
Star0=[x0 y0 z0];
%calcolo vettore posizione relativa
P=Star0-Star1;
disp( 'la posizione in cartesiane di P rispetto alla terra e')
disp(P)
%riconvrsione in sferiche
r=sqrt(P(1)^2+P(2)^2+P(3)^2);
AR=atan2(P(2),P(1));
DEC=asin(P(3)/r);
%da radianti a gradi
AR=radtodeg(AR)
DEC=radtodeg(DEC)
%gradi a ore
if AR<0;
AR=360+AR;
else
end
ARh=floor((AR)/15);
ARm=floor((AR-floor(AR))*60);
ARs=(((AR-floor(AR))*60)-floor((AR-floor(AR))*60))*60;
DECg=floor(DEC);
DECm=floor((DEC-floor(DEC))*60);
DECs=(((DEC-floor(DEC))*60)-floor((DEC-floor(DEC))*60))*60;
disp('posizione della stella da inserire in AR|dec|r(pc)')
S=[ARh ARm ARs; DECg DECm DECs; 0 0 r ]
atan2 è l'arcotangente senza il problema di sommare 180
e floor prende la parte intera di un numero
_________________
Sito web per notifiche astronomiche_____________________________
|
https://sky-decay.web.app/|
‐----------------------------------------------