Bonjour à tous.

Voici le problème. J'ai un programme qui effectue des alignements entre 2 molécules. Il en prends une comme référence (elle ne bouge pas) et il fait translater/tourner la seconde molécule. J'aimerais trouver les angles de rotations autour des axes x y z ainsi que la translation qu'il a effectué. Les seules données que je possède sont les coordonnées initiales et finales des atomes, respectivement (xi,yi,zi) et (xf,yf,zf).

J'ai essayé pas mal de truc. En partant de la matrice de rotation 3D,
M= | CE -CF -D |
|-BDE+AD BDF+AE -BD |
|ADE+BF -ADF+BE AC |
Où A, B sont le cosinus et le sinus de la rotation autour de l'axe X,
C, D sont le cosinus et le sinus de la rotation autour de l'axe Y,
E, F sont le cosinus et le sinus de la rotation autour de l'axe Z.
(j'ai repris ca du faq sur les matrices et quaternions du site)

je scanne toutes les possibilités d'angles r (rot d'axe x) t (rot d'axe y) p (rot d'axe z) entre -PI et +PI en essayant de minimiser la distance entre toutes les coordonnées initiales et finales, mais je n'arrive pas à descendre en dessous de 0.03 de distance moyenne et ca ne suffit pas. En plus c'est très long.

J'ai essayé d'inverser la matrice, de faire un systeme d'équation entre plusieurs coordonnées mais rien ne fonctionne mieux que ca. Vous auriez une petite idée plus rapide pour régler le problème ??

Merci d'avance.