ROTATIONS DE L´ESPACE ET QUATERNIONS
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
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
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
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.