Matrici di rotazione e atan2
Ciao a tutti.
Ho tre matrici di rotazione per il calcolo della posizione di un aereo
nello spazio 3D:
R_phi=[1 0 0; 0 cos(phi) sin(phi); 0 -sin(phi) cos(phi)]; con phi che
rappresenta il rollio
R_teta=[cos(teta) 0 -sin(teta); 0 1 0; sin(teta) 0 cos(teta)]; con
teta che rappresenta l'elevazione
R_psi=[cos(psi) sin(psi) 0; -sin(psi) cos(psi) 0; 0 0 1]; con psi che
rappresenta l'azimuth
e le inverse di R_phi ed R_teta
R_phi_inv=[1 0 0; 0 cos(phi) -sin(phi); 0 sin(phi) cos(phi)];
R_teta_inv=[cos(teta) 0 sin(teta); 0 1 0; -sin(teta) 0 cos(teta)];
Prendo un vettore colonna G=[0; 0; 1] che � il vettore campo di
gravit� normalizzato e faccio:
A=R_phi*(R_teta*R_psi), ossia ruoto prima di psi, poi di teta e poi di
phi ottenendo il vettore della gravit� nella posizione finale.
Esistono in rete delle formule per cui, partendo da A=[ax; ay; az], si
possono riottenere i valori di phi e teta, facendo:
phi= atan2(ay, sqrt(ax^2+az^2));
teta=-atan2(ax, sqrt(ay^2+az^2));
Come mai se scelgo un qualunque angolo -20<teta<+20 deg e -20<phi<+20
deg, le formule mi restituiscono correttamente teta ma non phi?
La cosa strana � che se per ottenere A moltiplico prima per R_phi e
poi per R_teta, alla fine mi ribecca in pieno phi ma non teta?
Provate!
C'� qualche propriet� nell'ordine delle matrici o nella formula della
atan2?
Grazie.
Luca.
Received on Tue Jan 18 2011 - 00:06:33 CET
This archive was generated by hypermail 2.3.0
: Thu Nov 21 2024 - 05:10:32 CET