Bonjour et joyeux noël...
Je programme une petite classe de matrice de rotation dans R3 (matrice orthogonale directe). Une méthode doit retourner l'axe et l'angle de rotation à partir d'un matrice de rotation.
J'utilise la formule d'Olingue Rodrigues telle que présentée ici:http://fr.wikipedia.org/wiki/Rotation_vectorielle
Tout va bien, sauf lorsque phi=PI.
La matrice (Ai,j) ressemble alors à cela:
2.x.x-1 __ 2.x.y_____2.x.z
2.x.y____ 2.y.y-1 ___2.y.z
2.x.z____ 2.y.z____2.z.z-1
Où N(x,y,z) est le vecteur directeur unitaire de l'axe de rotation : les coordonnées que l'on recherche
J'ai essayé plein de choses qui ne marchent pas ou sont lourdes:
1- Les diagonales contiennent des carrés. Donc on ne trouve les x,y,z qu'au signe prêt.
2- Je n'arrive pas à résoudre le système d'équation:
2.x.y=a12
2.x.z=a13
2.y.z=a23
(je tourne en rond)
3- En posant A.N=N, je démontre brillamment que 1=1 (ou 0=0)
4- J'ai une solution mais qui me paraît très lourde:
je prend deux vecteurs u1,v1 quelconques de l'espace.
u2=A.u1 (u2 est l'image de u1, tourné de PI)
alors U=u1^u2 appartient au plan normal à l'axe de rotation
de même
v2=A.v1, et V=v1^v2
et finalement U^V=N (le produit vectoriel de deux vecteurs distincts appartenant au plan normal à l'axe de rotation donne un vecteur directeur de l'axe de rotation)
Je suis sûr qu'il y a plus élégant
5- J'ai une solution purement informatique:
faite d'une combinatoire de if then else sur les signes de x,y,z
Ma question:
Existe une belle solution mathématique qui en une demi-formule donne le vecteur de rotation... ??
Merci d'avance
Laurent