ROTATIONS DE L´ESPACE ET QUATERNIONS


Rotations de l´espace
L´ensemble des quaternions
Quaternions et rotations de l´espace
Interpolation de quaternions
Application

















































Rotations de l´espace


       Rotations planes et rotations de l´espace

       Angles d´Euler

       Mouvement d´un solide

Rotations planes et rotations de l´espace

       Un angle plan de mesure an peut être défini par la position d´un point M du cercle (O,1), c´est a dire par deux coordonnées x=cos(an) et y=sin(an), ou encore par le nombre complexe z=[1,an]. On peut aussi voir un angle plan comme la rotation de centre O amenant le complexe 1 sur le complexe z (voir figure RQ_1).
        Dans l´espace, on définit l´angle an de deux vecteurs unitaires u1 et u2 par la rotation amenant u1 sur u2 autour de l´axe perpendiculaire au plan (u1,u2). Rappelons que le produit vectoriel v de u1 et u2 est un vecteur perpendiculaire a leur plan et de module sin(an), il caractérise une telle rotation. Les rotations de l´espace sont donc axiales, et non pas centrales comme dans le plan.


Angles d´Euler

        On a montré que toute rotation de l´espace (D,an) autour d´un axe D et d´angle an peut se décomposer en le produit de trois rotations autour des axes Ox, Oy et Oz. Les angles anx, any et anz de ces rotations sont appelés angles d´Euler de la rotation (D,an). Si M, Mx, My et Mz sont les matrices respectivement des rotations (D,an), (Ox,anx), (Oy,any) et (Oz,anz), on a:
        M = Mz * My * Mx
        Rappelons que le produit matriciel n´est pas commutatif, donc, en général:
        M # Mx * My * Mz
        On pourrait penser que le vecteur(anx,any,anz) se comporte comme un vecteur de translation (dx,dy,dz) et que l´on pourrait interpoler les rotations comme on interpole les déplacements (par "dessisn clés"). Mais il n´en est rien pour plusieurs raisons:
        1) D´abord le produit de matrices n´est pas commutatif et donc l´ordre d´exécution des rotations est important, alors que la translation (dx,dy,dz) est indépendante de l´ordre dans lequel on effectue les translations (dx,0,0), (0,dy,0) et (0,0,dz) (car la somme vectorielle est commutative).
        2) Ensuite parce qu´il existe plusieurs triplets de rotations autour des axes dont le produit est une rotation donnée. Par exemple, sur la figure RQ-2, on voit que la transformation de (A) en (B) peut se faire:
                Par interpolation de (Ox,0) à (Ox,PI)
                Par interpolation de (Oz,0) * (Oy,0) à (Oz,PI) * (Oy,PI)
        Ce qui ne donne pas du tout le même résultat.


Figure RQ-2: Plusieurs décompositions d´une même rotation

                3) Ensuite parce que les rotations autour des axes ne sont pas indépendantes, de plus elles sont fonction du repère choisi.
        En résume l´interpolation par les angles d´Euler, bien que fréquemment utilisée en synthèse, n´est pas une bonne méthode d´animation. L´erreur souvent commise est d´étendre aux rotations les propriétés d´espace vectoriel des translations, ce qui n´est pas légale. Pratiquement, cela donne lieu à des mouvements de "cardan" (c´est à dire des rotations intermédiaires parasites).

Mouvement d´un solide

       On peut montrer, qu´à chaque instant, le mouvement le plus général d´un solide est tangent à un mouvement hélicoîdal, c´est à dire au produit d´une rotation autour d´un axe et d´une translation. Au lieu de vouloir à toute force employer les notations cartésiennes (x,y,z) pour définir une rotation, pourquoi ne pas s´inspirer de la nature qui fait tourner un solide autour d´un axe unique ? La notion de rotation de l´espace nécessite donc un axe (x,y,z) et un angle an, donc quatre nombres. On imagine bien alors que l´outil mathématique adéquate sera un espace vectoriel a 4 dimensions. Plus précisement l´espace des quaternions est l´équivallent, pour les rotations de l´espace, des nombres complexes pour les rotations planes.

L´ensemble des quaternions


       L´espace vectoriel des quaternions

       Addition de quaternions

       Produit de quaternions

       Conjugué d´un quaternion

       Inverse d´un quaternion

       Produit scalaire de quaternion

L´espace vectoriel des quaternions

        L´ensemble T des quaternions, developpé par HAMILTON en 1843, est simplement défini comme l´ensemble des quadruplets de nombres rééls muni d´une addition et d´un produit par un scalaire qui en font un espace vectoriel de dimension 4.
        Si on note 1, i, j et k la base canonique de T, tout quaternion q peut s´écrire:
        q = a*1 + i*b + j*c + k*d


Figure RQ-3: L´espace vectoriel à 4 dimensions des quaternions.

Autre notation:
        L´ensemble des quaternions dont les 3 dernières composantes sont nulles est isomorphe a l´ensemble R des rééls. On appelle donc la premiere composante partie réélle et le vecteur v formé par les 3 dernières composantes partie imaginaire de q: v = b * i + c * j + d * k sa partie imaginaire.


Addition de quaternions

L´addition de 2 quaternions prolonge l´addition de 2 colplexes:
        q1 = a1 + b1 * i+ c1 * j + d1 * k        q2 = a2 + b2 * i + c2 * j + d2 * k        q1 + q2 = (a1 + a2) + (b1 + b2) * i + (c1 + c2) * j + (c1 + d2) * k       
Cette opération est associative, commutative et possè un élément neutre: (0, 0, 0, 0).
Tout quaternion q = a + i * b + j * c + d * k possè un symétrique: -q = -a - b * i - c * j - d * k

Produit de quaternions

        On définit le produit de deux quaternions par:


        Cette opération a les propriétés suivantes:
        Associativité: q1 * (q2 * q3) = (q1 * q2) * q3
        Mais elle n´est pas commutative: q1 * q2 # q2 * q1
        Existence d´un élément neutre:



        Remarquons que les éléments i, j et k vérifient:
                i2 = j2 = k2 = -1
                i*j = k j*i = -k
                j*k = i k*j = -i
                k*i = j i*k = -j

Conjugué d´un quaternion

        Par définition le conjugué du quaternion q est le quaternion:


        Le produit d´un quaternion par son conjugué est un réél positif ou nul dont la racine carrée est appelée son module:


Inverse d´un quaternion

       Si le module d´un quaternion q n´est pas nul, q admet un inverse:


Produit scalaire de quaternion

        En étendant la définition du produit scalaire des vecteurs de l´espace, on pose:
        q1 . q2 = a1*a2 + b1*b2 + c1*c2 + d1*d2

Quaternions et rotations de l´espace


       Quaternion et matrice de rotation

       Matrice de rotation et quaternion

Quaternion et matrice de rotation

        Soit la rotation de l´espace définie par un axe D(x,y,z) et un angle an, et soient un vecteur v1 et son transformé v2 par cette rotation:
        v2 = Rot(v1)
On montre qu´il existe un quaternion q tel que:
        v2 = q-1 * v1 * q
La matrice M de cette rotation est donnée, en coordonnées homogès, par:


La partie rééle du quaternion q est w=cos(an/2) et (x,y,z) est porté par l´axe de la rotation et a pour module sin(an/2).
        Remarquons que la diagonale de la matrice vaut 4*w2 - 1

Matrice de rotation et quaternion

        Si la matrice M de la rotation est donnée:


L´algorithme suivant permer de calculer les composantes (w,x,y,z) du quaternion q:         On a (d´après RQ-3-1):
        M1,1 + M2,2 + M3,3 = 4 * w2 - 1
D´où
        w2 = (1 + M1,1 + M2,2 + M3,3) / 4
Si w != 0:
        w = sqrt(w2) au signe près et donc:
        x = (M2,3 - M3,2) / (4 * w)
        y = (M3,1 - M1,3) / (4 * w)
        z = (M1,2 - M2,1) / (4 * w)
Sinon w = 0:
        x2 = -0.5 * (M2,2 + M3,3)
        Si x2 != 0:
                x = sqrt(x2) au signe près
                y = M1,2 / (2 * x)
                z = M1,3 / (2 * x)
        Sinon x = 0:
                y2 = 0.5 * (1 - M3,3)
                Si y2 != 0:
                        y = sqrt(y2) au signe près
                        z = M2,3 / (2 * y)
                Sinon y = 0:
                       z = 1

        Remarquons que le quaternion q et son opposé -q correspondent à la même rotation.

Interpolation de quaternions


       Interpolation entre 2 quaternions

       Interpolation entre plusieurs quaternions

Interpolation entre 2 quaternions

        L´ensemble des quaternions q de module 1 constituent la "sphère" S de centre (0,0,0,0) et de rayon 1 à 4 dimensions. On démontre que S est un sous groupe du groupe T des quaternions dont la métrique est la même que celle du groupe des rotations. S est la généralisation du cercle trigonométrique servant à définir les rotations planes. De même que l´on peut interpoler les angles sur ce cercle, on pourra interpoler 2 quaternions q1 et q2 sur cette sphère. La courbe d´interpolation sur S est le plus petit arc de grand cercle passant par q1 et q2.



        La formule d´interpolation est sphérique:



        Remarquons que cette formule n´est pas valable si q1=q2 car alors q1.q2 = 1 et donc a=0 et par suite sin(a)=0
        Elle n´est pas valable non plus si q1 et q2 sont diamétralement opposés sur S car alors q1.q2 = -1 et donc a=PI et par suite sin(a)=0

Interpolation entre plusieurs quaternions

        Soient 3 quaternions unitaires q1,q2 et q3 correspondant à 3 rotations de l´espace. Nous savons interpoler entre q1 et q2, puis entre q2 et q3, mais, au passage par q2, une discontinuité apparait si q1,q2 et q3 n´appartiennent pas à un même grand cercle de S:



        Une solution de ce probleme consiste à faire passer l´équivallent d´une courbe de BEZIER de dimension 4 par les 3 points q1, q2 et q3 de façon à ce qu´elle appartienne à la sphere S.

Application

        Interpoler des rotations de l´espace ne donne pas un résultat correct, par contre, interpoler des quaternions est légal. On définit les images clées I1 et I2 dans un logiciel de synthèse traditionnel en employant les angles d´Euler pour les orienter, puis on calcule les matrices M1 et M2 de ces orientations, et enfin les quaternions q1 et q2 correspondant. On peut alors interpoler un quaternion q entre q1 et q2 (avec les formules d´interpolation sphérique données plus haut), et, pour chaque quaternion q, on calcule la matrice M correspondante que l´on applique à l´image de base pour l´orienter correctement.