questo è il nuovo codice: le parti colorate sono quelle modificate...
(scusate ma non so come si mette uno spoiler

)
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
AR=[AR0 AR1];
dec=[dec0 dec1];
r=[r0 r1];
[X,Y,Z]=sph2cart(AR,dec,r);
Star0=[X(1),Y(1),Z(1)];
Star1=[X(2),Y(2),Z(2)];%calcolo vettore posizione relativa
P=Star0-Star1;
disp( 'la posizione in cartesiane di P rispetto alla terra e')
disp(P)
%riconvrsione in sferiche
[AR,DEC,r]=cart2sph(P(1),P(2),P(3));
%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/15-floor(AR/15))*60);
ARs=(((AR/15-floor(AR/15))*60)-floor((AR/15-floor(AR/15))*60))*60;
DECg=sign(DEC)*floor(sign(DEC)*(DEC));
DECm=floor(sign(DEC)*(((DEC-sign(DEC)*floor(sign(DEC)*(DEC))))*60));
DECs=((sign(DEC)*(((DEC-sign(DEC)*floor(sign(DEC)*(DEC))))*60))-floor(sign(DEC)*(((DEC -sign(DEC)*floor(sign(DEC)*(DEC))))*60)))*60;disp('posizione della stella da inserire in AR|dec|r(pc)')
S=[ARh ARm ARs; DECg DECm DECs; 0 0 r ]
Ho inserito 2 funzioni matlab che calcolano la conversione sferiche cartesiane ma per questo penso non cambi nulla
l'errore 1 era nelle ultime due conversioni da gradi a ore
l'errore 2 stava nell'uso della funzione floor che si restituisce l'intero a sinistra (ES 8.9->8) ma se è negativo diventa ovviamente (ES -8.9->-9) e cosi ho raggirato il problema con quelle lunghe formule
Cita:
Questo algoritmo funziona se le coordinate che leggi da C e dalla Terra sono solo traslate
si lo sono
Cita:
"Se punto la terra mi da long e lat".. Vuoi dire che non ti da la distanza?
mi da le coordinate in long e lat anche la distanza ma sono variabili nel tempo...
Per fare una prova ho calcolato le coord di vega usanto altair come riferimento
terra-altair
19h50m46.7s
8°52'2.59''
16.77al
vega -altair
3h6m9.83s
-63°32'42.99s
14.81al
Risultato
18.0000 36.0000 55.4392
38.0000 47.0000 11.8961
0 0 25.2933
quello dei dati del programma
18h36m56.19s
38°46'58.78s
25.3al
c'è un errore di qualche decina di secondo sulla declinazione ma penso he sia dovuto ad approssimazioni...
_________________
Sito web per notifiche astronomiche_____________________________
|
https://sky-decay.web.app/|
‐----------------------------------------------