Bonjour,
j'ai remarqué pour le code suivant après affichage de la matrice de transformation:
glloadidentity();
glrotated(teta, 0, 1, 0); // Ry(teta)
glrotated(phi, 0, 0 , 1); // Rz(phi)
que la matrice de transformation résultante M vaut:
M= Ry(teta) * Rz(phi)
pourtant mathématiquement ça devrait être
M= Rz(phi) * Ry(teta)
mais en effet, il est précisé dans la doc https://www.opengl.org/sdk/docs/man2...MultMatrix.xml
qu'utiliser un glrotated revient à utiliser glMultMatrix() avec la matrice de rotation en paramètre
ce qui revient à multiplier la matrice de transformation courante par la matrice de rotation soit :
C = C * R
ce qui au final dans notre exemple donne:
C = I * Ry(teta) * Rz(phi)
Puisque ensuite pour effectuer notre transformation sur un vecteur quelconque V on a:
V' = C * V soit
V' = I * Ry(teta) * Rz(phi) * V
D'un point vue calcul, cela revient donc à appliquer Rz(phi) puis Ry(teta).
Pourtant visuellement on a bien le résultat de l'application de Ry(teta) puis Rz(phi).
Voilà, il y a quelque chose qui cloche dans ma compréhension sur le sujet au vue du résultat mais je ne vois pas où,
merci de m'apporter vos lumières.
Partager