Matrice de rotation

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

En mathématiques, et plus précisément en algèbre linéaire, une matrice de rotation Q est une matrice orthogonale de déterminant 1, ce qui peut s'exprimer par les équations suivantes : QtQ = I = QQt et det Q = 1, où Qt est la matrice transposée de Q, et I est la matrice identité.


\begin{pmatrix}
\cos \theta & -\sin \theta \\[3pt]
\sin \theta & \cos \theta \\
\end{pmatrix}
Expression de la matrice de rotation d'angle \theta
dans le plan muni d'un repère orthonormé direct.

Ces matrices sont exactement celles qui, dans un espace euclidien, représentent les isométries (vectorielles) directes. Ces dernières sont aussi appelées rotations vectorielles (d'où le nom de « matrice de rotation »), parce qu'en dimension 2 et 3, elles correspondent respectivement aux rotations affines planes autour de l'origine et aux rotations affines dans l'espace autour d'un axe passant par l'origine.

En dimension 3, ces matrices sont utilisées intensivement pour les calculs de géométrie, de physique et en infographie.

L'ensemble de toutes les matrices de rotation de taille fixée forme un groupe appelé groupe des rotations ou groupe spécial orthogonal. C'est un sous-groupe du groupe orthogonal.

Rotations en deux et trois dimensions[modifier | modifier le code]

Dans toute cette section, on considère que les matrices agissent sur des vecteurs colonne.

En dimension deux[modifier | modifier le code]

L'effet de la matrice de rotation dans un plan orienté de façon conventionnelle
L'effet de la même matrice de rotation dans un plan orienté différemment

En deux dimensions, les matrices de rotation ont la forme suivante :


R(\theta) = \begin{pmatrix}
\cos \theta & -\sin \theta \\[3pt]
\sin \theta & \cos \theta \\
\end{pmatrix}
(rotation d'angle θ)

Cette matrice fait tourner le plan d'un angle θ. Si 0<\theta<\pi/2, elle fait tourner l'axe x en direction de l'axe y.

Dans un plan orienté

Si l'on a choisi la convention habituelle pour l'orientation du plan (x vers la droite et y vers le haut), cette rotation se fait dans le sens contraire aux aiguilles d'une montre. Si au contraire on a choisi l'orientation inverse (par exemple avec x vers la droite et y vers le bas), cette rotation se fait dans le sens des aiguilles d'une montre. Pour se convaincre qu'il s'agit bien de la même rotation, on n'a qu'à imaginer le plan comme une feuille de papier que l'on regarderait alternativement par au-dessus et par en dessous, par transparence.

En mathématiques et en physique, on se conforme pratiquement toujours à l'orientation usuelle. En revanche, en imagerie numérique, il est fréquent de prendre la convention opposée[1], qui présente l'avantage d'être compatible avec le sens d'écriture des scripts occidentaux : de gauche à droite et de haut en bas. C'est pour cela que dans de nombreux logiciels, les rotations se font dans le sens des aiguilles d'une montre.

Supposons que l'on adopte l'orientation usuelle du plan. Pour obtenir une rotation dans le sens des aiguilles d'une montre, on remplace simplement θ par –θ :


R(\theta) = \begin{pmatrix}
\cos \theta & -\sin \theta \\
\sin \theta & \cos \theta \\
\end{pmatrix}
(rotation anti-horaire d'angle θ)

R(-\theta) = \begin{pmatrix}
\cos \theta & \sin \theta \\
-\sin \theta & \cos \theta \\
\end{pmatrix}
(rotation horaire d'angle θ)
Rotations usuelles

Les matrices correspondant à des rotations de 90° et de 180° sont particulièrement utiles :


R(90^\circ)= \begin{pmatrix}
0 & -1 \\
1 & 0 \\
\end{pmatrix}
(rotation anti-horaire de 90°)
Calcul de la rotation d'angle \theta du vecteur \overrightarrow {OA} à l'aide de la matrice de rotation :

\begin{pmatrix}A'_x\\A'_y\end{pmatrix}=\begin{pmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\\\end{pmatrix}\begin{pmatrix}A_x\\A_y\end{pmatrix}
R(180^\circ)=\begin{pmatrix}
-1 & 0 \\
0 & -1 \\
\end{pmatrix}
(rotation de 180°)

R(270^\circ)=\begin{pmatrix}
0 & 1 \\
-1 & 0 \\
\end{pmatrix}
(rotation horaire de 90°)

Exemple d'application à un vecteur

Nous avons un vecteur A = (1,1), et nous désirons lui appliquer une rotation de 35° autour de l'origine O = (0,0) en utilisant la convention usuelle, ce qui nous donnera le vecteur A'.

Simplifions la formule de la rotation :

A'.x = A.x * cos(θ) - A.y * sin(θ)

A'.y = A.x * sin(θ) + A.y * cos(θ)

Ce qui nous donne (Arrondi à 2 décimales) :

A'.x = cos(35) - sin(35) = 0.25

A'.y = sin(35) + cos(35) = 1.39

En dimension trois[modifier | modifier le code]

Les matrices de base[modifier | modifier le code]

Dans un espace euclidien à 3 dimensions, les matrices de rotations suivantes correspondent à des rotations autour des axes x, y et z (respectivement) :

R_{\bold{x}}(\theta) = \begin{pmatrix}1 & 0 & 0 \\ 0 & \cos \theta & -\sin \theta \\ 0 & \sin \theta & \cos \theta\end{pmatrix},\qquad R_{\bold{y}}(\theta) = \begin{pmatrix}\cos \theta & 0 & \sin \theta \\ 0 & 1 & 0 \\ -\sin \theta & 0 & \cos \theta\end{pmatrix},\qquad R_{\bold{z}}(\theta) = \begin{pmatrix}\cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0  \\ 0 & 0 & 1\end{pmatrix}.

Les rotations opèrent ainsi : Rx tourne l'axe y vers l'axe z, Ry tourne l'axe z vers l'axe x et Rz tourne l'axe x vers l'axe y. Voir aussi la section #Dimensions emboîtées.

Dans un espace orienté[modifier | modifier le code]

Si l'on oriente l'espace en trois dimensions avec les conventions habituelles (x vers l'avant, y vers la droite et z vers le haut), ces rotations se font dans le sens contraire aux aiguilles d'une montre lorsque le troisième axe (celui qui ne subit pas la rotation) est dirigé vers l'observateur. En pratique, pour déterminer le sens de rotation, on peut utiliser la règle de la main droite.

Matrices de rotation dans le cas général[modifier | modifier le code]

Les autres matrices de rotation s'obtiennent à partir des rotations de base à l'aide de la multiplication de matrices. Par exemple, le produit

R_z(\alpha) \, R_y(\beta) \, R_x(\gamma)\,\!

représente une rotation dont le lacet, le tangage et le roulis (également appelé angles de Cardan) sont respectivement α, β et γ. De la même façon, le produit

R_z(\gamma) \, R_x(\beta) \, R_z(\alpha)\,\!

représente une rotation dont les angles d'Euler sont α, β et γ (en utilisant la convention z-x-z pour les angles d'Euler).

Axe de rotation[modifier | modifier le code]

Les rotations en trois dimensions ont un axe, c'est-à-dire une direction laissée inchangée par la rotation.

Une rotation R autour d'un axe dirigé par \overrightarrow u peut être décomposée à l'aide de 3 endomorphismes P, (I - P) et Q (cliquer sur l'image pour l'agrandir).

Axe à partir d'une matrice de rotation

Étant donnée une matrice de rotation R, on peut trouver une matrice colonne u représentant le vecteur dirigeant l'axe en résolvant l'équation :

R\textbf{u} = \textbf{u}

Matrice de rotation à partir d'un axe et d'un angle

On peut calculer[2] la matrice R de rotation autour d'un axe dirigé par un vecteur unitaire \overrightarrow u\begin{pmatrix}{u_x}\\u_y\\u_z\end{pmatrix} (donc avec u_x^{2} + u_y^{2} + u_z^{2} = 1) et d'un angle θ. La formule est :

R = \begin{pmatrix}
u_x^2+(1-u_x^2)c   & u_x u_y(1-c)-u_zs & u_x u_z(1-c)+u_ys \\[3pt]
u_x u_y(1-c)+u_zs & u_y^2+(1-u_y^2)c & u_y u_z(1-c)-u_xs \\[3pt]
u_x u_z(1-c)-u_ys & u_y u_z(1-c)+u_xs & u_z^2+(1-u_z^2)c
\end{pmatrix}

c = \cos\theta, \qquad s = \sin\theta

Si l'espace en 3 dimensions est orienté de façon conventionnelle, cette rotation se fera dans le sens inverse aux aiguilles d'une montre pour un observateur placé de telle sorte que le vecteur directeur \overrightarrow u pointe dans sa direction (règle de la main droite).

Forme simplifiée de la formule axe-angle

Cette formule peut être simplifiée en

R = P +\cos(\theta).(I-P) + \sin(\theta).Q = I + \sin(\theta).Q + (1-\cos(\theta)).Q^2

P = \begin{pmatrix}
u_x^2   & u_x u_y & u_x u_z \\
u_x u_y & u_y^2 & u_y u_z \\
u_x u_z & u_y u_z & u_z^2
\end{pmatrix} = \textbf{u} \, \textbf{u}^t,\qquad I = \begin{pmatrix}
1 & 0 & 0 \\
0 & 1 & 0 \\
0 & 0 & 1
\end{pmatrix},\qquad Q = \begin{pmatrix}
0  & -u_z & u_y \\
u_z & 0 & -u_x \\
-u_y & u_x & 0
\end{pmatrix}

I est la matrice identité 3 × 3. La matrice Q est la représentation antisymétrique de \overrightarrow u, correspondant à l'application linéaire \overrightarrow v\mapsto\overrightarrow u\wedge\overrightarrow v (où \wedge est le produit vectoriel). La matrice P=I+Q^2 est la projection sur l'axe de rotation et I-P=-Q^2 est la projection sur le plan orthogonal à l'axe dirigé par \overrightarrow u.

Embûche en dimension supérieure[modifier | modifier le code]

Ce qui précède peut être généralisé à une dimension n quelconque. L' « axe » de la rotation sera un sous-espace vectoriel de dimension n-2 dont tous les vecteurs sont fixes par la rotation, et pour un tel sous-espace A, les rotations d' « axe » commun A correspondent aux rotations du plan orthogonal à cet axe (et se composent de la même manière).

Mais en dimension supérieure à 3, le fait nouveau est qu'une rotation n'est pas nécessairement de cette forme (i.e. le sous-espace de ses vecteurs fixes peut très bien être de dimension strictement inférieure à n-2) : c'est seulement un produit de rotations de cette forme (cf exemples ci-dessous).

Exemples[modifier | modifier le code]

  • La matrice de rotation 2×2
 Q = \begin{pmatrix} 0 & -1 \\ 1 & 0 \end{pmatrix}

correspond à une rotation de 90° dans le plan.

  • La transposée de la matrice 2×2
 M = \begin{pmatrix} 0,936 & 0,352 \\ 0,352 & -0,936 \end{pmatrix}

est son inverse, mais comme son déterminant vaut −1, ce n'est pas une matrice de rotation ; il s'agit de la symétrie par rapport à la diagonale d'équation y = 2x.

  • La matrice de rotation 3×3
 Q = \begin{pmatrix} 1 & 0 & 0 \\ 0 & \frac{\sqrt{3}}{2} & \frac12 \\ 0 & -\frac12 & \frac{\sqrt{3}}{2} \end{pmatrix}

correspond à une rotation dans l'espace à 3 dimensions de −30° autour de l'axe des x.

  • La matrice de rotation 3×3
 Q = \begin{pmatrix} 0,36 & 0,48 & -0,8 \\ -0,8 & 0,6 & 0 \\ 0,48 & 0,64 & 0,60 \end{pmatrix}

correspond à une rotation dans l'espace à 3 dimensions d'environ 74° autour de l'axe dirigé par \overrightarrow  u\begin{pmatrix} -\frac13\\\frac23\\\frac23\end{pmatrix}.

 P = \begin{pmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix}

est également une matrice de rotation, comme toute matrice de permutation paire (mais jamais d'une permutation impaire).

  • La matrice 3×3
 M = \begin{pmatrix} 3 & -4 & 1 \\ 5 & 3 & -7 \\ -9 & 2 & 6 \end{pmatrix}

a un déterminant égal à +1, mais sa transposée n'est pas son inverse, donc ce n'est pas une matrice de rotation.

  • La matrice 4×3
 M = \begin{pmatrix} 0,5 & -0,1 & 0,7 \\ 0,1 & 0,5 & -0,5 \\ -0,7 & 0,5 & 0,5 \\ -0,5 & -0,7 & -0,1 \end{pmatrix}

n'est pas carrée et ne peut donc pas être une matrice de rotation, bien que M^t \cdot M soit la matrice identité 3×3 (les colonnes sont orthonormales).

  • La matrice de rotation 4×4
 Q = \begin{pmatrix} -1 & 0 & 0 & 0 \\ 0 & -1 & 0 & 0 \\ 0 & 0 & -1 & 0 \\ 0 & 0 & 0 & -1 \end{pmatrix}

n'a pas d'axe de rotation : elle transforme tout vecteur en son opposé.

  • La matrice de rotation 5×5
 Q = \begin{pmatrix} 0 & -1 & 0 & 0 & 0 \\ 1 & 0 & 0 & 0 & 0 \\ 0 & 0 & -1 & 0 & 0 \\ 0 & 0 & 0 & -1 & 0 \\ 0 & 0 & 0 & 0 & 1 \end{pmatrix}

fait tourner les vecteur du plan des deux premières coordonnées de 90°, fait tourner les vecteurs du plan des deux coordonnées suivantes de 180°, et laisse l'axe de la dernière coordonnée inchangé.

Multiplication[modifier | modifier le code]

L'inverse d'une matrice de rotation est sa transposée, qui est aussi une matrice de rotation :

\begin{align} (Q^t)^t (Q^t) &{}= Q Q^t = I\\ \det Q^t &{}= \det Q = +1 \end{align}

Le produit de deux matrices de rotation est une matrice de rotation :

\begin{align}
 (Q_1 Q_2)^t (Q_1 Q_2) &{}= Q_2^t (Q_1^t Q_1) Q_2 = I \\
 \det (Q_1 Q_2) &{}= (\det Q_1) (\det Q_2) = +1
\end{align}

Pour n plus grand que 2, la multiplication de matrices de rotation n×n n'est pas commutative.

\begin{align}
Q_1 &{}= \begin{pmatrix}0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1\end{pmatrix} &
Q_2 &{}= \begin{pmatrix}0 & 0 & 1 \\ 0 & 1 & 0 \\ -1 & 0 & 0\end{pmatrix} \\
Q_1 Q_2 &{}= \begin{pmatrix}0 & -1 & 0 \\ 0 & 0 & 1 \\ -1 & 0 & 0\end{pmatrix} &
Q_2 Q_1 &{}= \begin{pmatrix}0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0\end{pmatrix}
\end{align}

Remarquant que toute matrice identité est une matrice de rotation, et que la multiplication des matrices est associative, on peut résumer ces propriétés en disant que les matrices de rotation n×n forment un groupe, qui pour n > 2 est non abélien. Appelé le groupe spécial orthogonal, et noté SO(n), SO(n, R), SOn, ou SOn(R), le groupe des matrices de rotation n×n est isomorphe au groupe des rotations d'un espace à n dimensions, ce qui veut dire. que la multiplication des matrices de rotation correspond à la composition des rotations, appliquée dans le même ordre (de la gauche vers la droite) que celui des matrices correspondantes.

Ambiguïtés de la représentation matricielle[modifier | modifier le code]

Alias et alibi pour les rotations

L'interprétation d'une matrice de rotation peut donner naissance à plusieurs ambiguïtés :

Changement de repère ou déplacement
La modification des coordonnées d'un vecteur peut correspondre à une rotation de ce vecteur (alibi), ou à une rotation du repère (alias).
Repère direct ou inverse
La matrice peut représenter la rotation dans un repère orienté positivement ou négativement.
Référentiel fixe ou mobile
Les axes de coordonnées peuvent être fixés ou tourner avec un solide.
Vecteurs ou formes linéaires
L' espace vectoriel admet un espace dual constitué des formes linéaires sur cet espace, et la matrice peut agir sur les vecteurs ou sur les formes

Dans la plupart des cas, l'autre interprétation correspondrait à la matrice transposée (donc inverse).

Décompositions[modifier | modifier le code]

Plans indépendants[modifier | modifier le code]

Considérons la matrice de rotation 3×3

 Q = \begin{pmatrix} 0.36 & 0.48 & -0.8 \\ -0.8 & 0.60 & 0 \\ 0.48 & 0.64 & 0.60 \end{pmatrix} .

Si, dans une certaine direction v, Q agit comme une multiplication par un facteur λ (autrement dit si v est un vecteur propre, de valeur propre associée λ), nous aurons

 Q \bold{v} = \lambda \bold{v}, \,\!

donc

 \bold{0} = (\lambda I - Q) \bold{v} . \,\!

Ainsi λ est une racine du polynôme caractéristique de Q,

\begin{align}
 0 &{}= \det (\lambda I - Q) \\
   &{}= \lambda^3 - \tfrac{39}{25} \lambda^2  + \tfrac{39}{25} \lambda - 1 \\
   &{}= (\lambda-1) (\lambda^2 - \tfrac{14}{25} \lambda + 1)
\end{align}

On remarquera deux propriétés importantes. D'une part, l'une des racines est 1, ce qui nous dit qu'une certaine direction est laissée fixe par la matrice. Pour les rotations en trois dimensions, c'est l'axe de la rotation (un concept qui se généralise uniquement aux dimensions impaires). D'autre part, les deux autres racines sont complexes conjuguées, de produit 1 (le terme constant du polynôme du second degré), et dont la somme est 2 cos θ (l'opposé du terme de degré 1). Le même phénomène se produit pour toutes les matrices de rotation 3×3 (avec deux cas particuliers : pour une rotation nulle les "valeurs complexes conjuguées " valent en fait toutes deux 1, et pour une rotation de 180°, toutes deux valent −1). En fait, une factorisation analogue existe pour n'importe quelle matrice de rotation n×n. Si la dimension, n, est impaire, il y aura une valeur propre supplémentaire valant 1, et en toute dimension le reste du polynôme se factorisera en termes du second degré comme celui que nous avons vu (avec les deux cas particuliers déjà mentionnés). Le polynôme caractéristique sera toujours de degré n ; il y aura donc n valeurs propres ; et comme une matrice de rotation commute toujours avec sa transposée, c'est une matrice normale, et elle peut donc être diagonalisée. En conclusion, toute matrice de rotation, exprimée dans une base convenable, se décompose en rotations indépendantes de sous-espaces de dimension 2 (des plans vectoriels); au plus n2 d'entre eux.

La somme des termes de la diagonale principale d'une matrice est appelée sa trace; elle ne dépend pas de la base, et vaut toujours la somme des valeurs propres. Cela a l'intéressante conséquence pratique de donner directement l'angle de rotation θ (dans un (sous)-espace de dimension 2) pour les matrices de rotation 2×2 et 3×3 : pour une matrice 2×2 la trace est 2 cos(θ) (ce qui est en fait évident, comme on va le voir), et pour une matrice 3×3, elle vaut 1+2 cos(θ). En dimension 3, le sous-espace est formé des vecteurs orthogonaux à l'axe de rotation (la direction propre de valeur propre 1). Ainsi, à partir de n'importe quelle matrice de rotation 3×3, nous pouvons déterminer un axe et un angle, et ceux-ci déterminent complètement la rotation (à l'orientation près).

Suites d'angles[modifier | modifier le code]

Une matrice de rotation 2×2 a nécessairement la forme suivante :

Q = \begin{pmatrix} a & -b \\ b & a \end{pmatrix}

avec a2+b2 = 1. Nous pouvons donc poser a = cos θ et b = sin θ, pour un certain angle θ. Pour déterminer θ, il ne suffit pas de connaître a ou b seulement ; nous devons utiliser les deux nombres pour obtenir le quadrant correct, à l'aide d'une fonction arctangente à deux variables (notée atan2 dans beaucoup de langages de programmation).

Considérons à présent la première colonne d'une matrice de rotation 3×3,

\begin{pmatrix}a\\b\\c\end{pmatrix} .

Bien que a2+b2 ne soit pas en général égal à 1, mais à une certaine valeur r2 ≤ 1, nous pouvons utiliser une variante du calcul précédent pour obtenir ce qu'on appelle une « rotation de Givens », transformant la colonne en

\begin{pmatrix}r\\0\\c\end{pmatrix} ,

annulant le coefficient b. Cette rotation agit sur le plan des axes x et y. Nous pouvons ensuite recommencer dans le plan xz, pour annuler c. Opérant sur la matrice entière, ces deux rotations la mettent sous la forme.

Q_{xz}Q_{xy}Q = \begin{pmatrix}1&0&0\\0&\ast&\ast\\0&\ast&\ast\end{pmatrix} .

Nous intéressant à présent à la deuxième colonne, une rotation de Givens dans le plan yz permet d'annuler la valeur z. La matrice complète devient alors

Q_{yz}Q_{xz}Q_{xy}Q = \begin{pmatrix}1&0&0\\0&1&0\\0&0&1\end{pmatrix} ,

c'est-à-dire la matrice identité. Ainsi, nous avons décomposé Q en

Q = Q_{xy}^{-1}Q_{xz}^{-1}Q_{yz}^{-1} .

Une matrice de rotation n×n aura (n−1)+(n−2)+⋯+2+1 = n(n-1)/2 termes en dessous de la diagonale qui devront être annulés. Cela peut se faire en généralisant la même idée, parcourant les colonnes avec une série de rotations dans une succession de plans. On en déduit que l'ensemble des matrices de rotation n×n, qui ont chacune n2 termes, peut être paramétré par n(n−1)/2 angles.

xzxw xzyw xyxw xyzw
yxyw yxzw yzyw yzxw
zyzw zyxw zxzw zxyw
xzxb yzxb xyxb zyxb
yxyb zxyb yzyb xzyb
zyzb xyzb zxzb yxzb

En trois dimensions, cela reformule dans le langage des matrices une observation faite par Euler, aussi les mathématiciens appellent-ils les trois angles obtenus des angles d'Euler. Cependant, la situation est un peu plus compliquée que ce que nous avons vu jusqu'ici : en dépit du petit nombre de dimensions, nous avons un choix considérable de séquences de paires d'axes, et aussi une certaine liberté dans le choix des angles. Ainsi, de nombreuses conventions différentes sont employées pour paramétrer les rotations tridimensionnelles en physique, en médecine, en chimie, ou dans d'autres disciplines. En tenant compte de la possibilité de prendre des repères fixes ou mobiles, 24 séquences différentes sont possibles. Et alors que certaines disciplines appellent toutes ces séquences des angles d'Euler, d'autres donnent des noms différents (Euler, Cardan, Tait-Byan, lacet-roulis-tangage) à des séquences différentes.

Une des raisons de ce grand nombre d'options est que, comme remarqué précédemment, les rotations en trois dimensions (et plus) ne commutent pas. Si nous permutons une suite donnée de rotations, nous n'obtenons pas (en général) le même résultat. Cela a également pour conséquence que nous ne pouvons pas composer des rotations (d'axes distincts) en additionnant leurs angles. Ainsi, les angles d'Euler ne sont pas des vecteurs, en dépit d'une ressemblance superficielle en tant que triplets de nombres.

Dimensions emboîtées[modifier | modifier le code]

Une matrice de rotation 3×3 telle que

Q_{3 \times 3} = \begin{pmatrix}\cos \theta & -\sin \theta & {\color{CadetBlue}0} \\ \sin \theta & \cos \theta & 

{\color{CadetBlue}0} \\ {\color{CadetBlue}0} & {\color{CadetBlue}0} & {\color{CadetBlue}1}\end{pmatrix}

donne l'impression qu'une matrice de rotation 2×2,

Q_{2 \times 2} = \begin{pmatrix}\cos \theta & -\sin \theta \\ \sin \theta & \cos \theta\end{pmatrix} ,

est inscrite dans le coin supérieur gauche :

Q_{3 \times 3} = \begin{pmatrix} Q_{2 \times 2} & \bold{0} \\ \bold{0}^t & 1 \end{pmatrix}.

Ce n'est pas une illusion ; on trouve de nombreuses copies de rotations n-dimensionnelles au sein des rotations (n+1)-dimensionnelles, en tant que sous-groupes. Chaque plongement laisse une direction fixe, qui dans le cas des matrices 3×3 est l'axe de rotation. Par exemple, nous avons

Q_{\bold{x}}(\theta) = \begin{pmatrix}1 & 0 & 0 \\ 0 & \cos \theta & -\sin \theta \\ 0 & \sin \theta & \cos \theta\end{pmatrix},\qquad Q_{\bold{y}}(\theta) = \begin{pmatrix}\cos \theta & 0 & \sin \theta \\ 0 & 1 & 0 \\ -\sin \theta & 0 & \cos \theta\end{pmatrix},\qquad Q_{\bold{z}}(\theta) = \begin{pmatrix}\cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0  \\ 0 & 0 & 1\end{pmatrix} ,

fixant respectivement l'axe des x, l'axe des y et l'axe des z. L'axe de rotation n'a pas besoin d'être un axe de coordonnées ; si u = (x, y, z) est un vecteur unité de la direction souhaitée, alors

\begin{align}
 Q_{\bold{u}}(\theta)
 &{}= 
  \begin{pmatrix}
    0&-z&y\\
    z&0&-x\\
    -y&x&0
  \end{pmatrix} \sin \theta + (I - \bold{u}\bold{u}^t) \cos \theta + \bold{u}\bold{u}^t \\
 &{}=
  \begin{pmatrix}
    (1-x^2) c_{\theta} + x^2 & - z s_{\theta} - x y c_{\theta} + x y & y s_{\theta} - x z c_{\theta} + x z \\
    z s_{\theta} - x y c_{\theta} + x y & (1-y^2) c_{\theta} + y^2 & -x s_{\theta} - y z c_{\theta} + y z \\
    -y s_{\theta} - x z c_{\theta} + x z & x s_{\theta} - y z c_{\theta} + y z & (1-z^2) c_{\theta} + z^2
  \end{pmatrix} \\
 &{}=
  \begin{pmatrix}
    x^2 (1-c_{\theta}) + c_{\theta} & x y (1-c_{\theta}) - z s_{\theta} & x z (1-c_{\theta}) + y s_{\theta} \\
    x y (1-c_{\theta}) + z s_{\theta} & y^2 (1-c_{\theta}) + c_{\theta} & y z (1-c_{\theta}) - x s_{\theta} \\
    x z (1-c_{\theta}) - y s_{\theta} & y z (1-c_{\theta}) + x s_{\theta} & z^2 (1-c_{\theta}) + c_{\theta}
  \end{pmatrix} , 
\end{align}

cθ = cos θ, sθ = sin θ, est une rotation d'angle θ laissant l'axe u fixé.

Une direction dans l'espace à (n+1) dimensions sera un vecteur unité, que l'on peut considérer comme un point sur une sphère généralisée, Sn. Il est ainsi naturel de décrire le groupe des rotations SO(n+1) comme composé de SO(n) et de Sn. Un formalisme adapté est celui des espaces fibrés,

 SO(n) \hookrightarrow SO(n+1) \to S^n , \,\!

où pour chaque direction dans l'« espace de base », Sn, la « fibre » au-dessus d'elle dans l'« espace total », SO(n+1), est une copie de SO(n), représentant les rotations qui gardent cette direction fixée.

Nous pouvons ainsi construire une matrice de rotation n×n en partant d'une matrice 2×2, plaçant un axe de rotation sur S2 (la sphère ordinaire de l'espace à trois dimensions), orientant la rotation résultante en ajoutant un axe de rotation sur S3, et ainsi de suite jusqu'à Sn−1. Un point sur Sn possède n « coordonnées sphériques » (en d'autres termes, Sn est une variété de dimension n), ainsi nous avons à nouveau besoin de n(n−1)/2 nombres pour décrire toutes les matrices de rotation n×n.

En fait, la décomposition angulaire séquentielle discutée précédemment peut être vue comme le même processus dans l'autre sens. La composition des n−1 rotations de Givens amène la première colonne (et la première ligne) à (1,0,…, 0), et le reste de la matrice est une matrice de rotation ayant une dimension de moins, plongée de telle sorte que (1,0,…, 0) reste fixé.

Paramétrages antisymétriques[modifier | modifier le code]

Quand Q, une matrice de rotation n×n, n'admet pas −1 comme valeur propre, et donc qu'aucune des rotations planes qui la composent n'est une rotation de 180°, Q+I est une matrice inversible. C'est le cas de presque toutes les matrices de rotation, et on peut alors montrer que (QI)(Q+I)−1 est une matrice antisymétrique, A. Ainsi, AT = −A; comme la diagonale de A est nécessairement nulle, et que les termes du triangle supérieur déterminent les autres , A contient n(n−1)/2 coefficients indépendants. Heureusement, IA est inversible si A est antisymétrique ; ainsi nous pouvons retrouver la matrice initiale Q à l'aide de la transformation de Cayley :

 A \mapsto Q=(I+A)(I-A)^{-1} , \,\!

qui envoie n'importe quelle matrice antisymétrique A vers une matrice de rotation. En fait, en dehors des exceptions déjà mentionnées, on peut produire n'importe quelle matrice de rotation de cette manière. Bien que pour des applications pratiques, on puisse rarement se permettre de négliger le cas des rotations de 180°, la transformation de Cayley reste un outil utile, donnant une paramétrisation n'utilisant pas les fonctions trigonométriques de la plupart des matrices de rotation.

En trois dimensions, par exemple, nous avons

\begin{align}
 &\begin{pmatrix}0&-z&y\\z&0&-x\\-y&x&0\end{pmatrix} \mapsto {} 
 \quad \frac{1}{1+x^2+y^2+z^2}
 \begin{pmatrix}
 1+x^2-y^2-z^2 & 2 x y-2 z & 2 y+2 x z \\
 2 x y+2 z & 1-x^2+y^2-z^2 & 2 y z-2 x \\
 2 x z-2 y & 2 x+2 y z & 1-x^2-y^2+z^2
 \end{pmatrix} .
\end{align}

Si nous notons les termes antisymétriques comme un vecteur, v= (x, y, z), ceci construit une rotation de 90° autour de l'axe des x pour v=(1,0,0), autour de l'axe des y pour v=(0,1,0), et autour de l'axe des z pour v=(0,0,1). Les rotations de 180° sont tout juste inatteignables, car, à la limite quand x tend vers l'infini, la matrice correspondant à v=(x, 0,0) tend vers une rotation de 180° autour de l'axe des x, et il en va de même dans les autres directions.

Topologie du groupe des rotations : théorie de Lie[modifier | modifier le code]

Groupes de Lie[modifier | modifier le code]

On a vu que les matrices de rotation n×n forment un groupe, le groupe spécial orthogonal, SO(n). Cette structure algébrique se double d'une structure topologique, car les opérations de multiplication et d'inversion (qui ici est simplement la transposition) sont des fonctions continues des coefficients des matrices. Ainsi SO(n) est un exemple classique de groupe topologique (d'un point de vue purement topologique, c'est une variété compacte). De plus, les opérations sont non seulement continues, mais lisses (de classe \mathcal{C}^{\infty}), ainsi SO(n) est une variété différentiable et un groupe de Lie.

La plupart des propriétés des matrices de rotation dépendent fort peu de la dimension n; mais envisagé comme un groupe de Lie, on rencontre une différence systématique entre les dimensions paires et impaires. De plus, pour les petites valeurs de n, certaines irrégularités se produisent ; par exemple, contrairement au cas général, SO(4) n'est pas un groupe de Lie simple, mais est isomorphe au produit direct de S3 et de SO(3).

Algèbres de Lie[modifier | modifier le code]

Associé à chaque groupe de Lie, on définit une algèbre de Lie, un espace vectoriel muni d'une forme bilinéaire alternée appelée un crochet (de Lie). L'algèbre correspondant à SO(n) est notée  \mathfrak{so}(n) , \,\!, et est formée de toutes les matrices antisymétriques n×n matrices (comme on le voit en dérivant la condition d'orthogonalité, I = QTQ). Le crochet de deux matrices antisymétriques est défini par [A1, A2] = A1A2A2A1, ce qui est encore une matrice antisymétrique. Ce crochet représente l'essence de la structure du groupe de Lie par l'intermédiaire d'infinitésimaux.

Pour les matrices de rotation 2×2, l'algèbre de Lie est une droite vectorielle, formée des multiples de

J = \begin{pmatrix}0&-1\\1&0\end{pmatrix} .

Dans ce cas, le crochet est toujours nul, ce qui nous dit qu'en dimension 2, les rotations commutent. Ce n'est pas le cas en dimensions supérieures. Ainsi, pour les matrices de rotation 3×3, nous obtenons un espace de dimension 3 pour lequel une base commode (de générateurs) est


 A_{\bold{x}} = \begin{pmatrix}0&0&0\\0&0&-1\\0&1&0\end{pmatrix} , \quad
 A_{\bold{y}} = \begin{pmatrix}0&0&1\\0&0&0\\-1&0&0\end{pmatrix} , \quad
 A_{\bold{z}} = \begin{pmatrix}0&-1&0\\1&0&0\\0&0&0\end{pmatrix} .

Le crochet étant


 A_{\bold{x}} A_{\bold{y}} = A_{\bold{z}}, \quad
 A_{\bold{z}} A_{\bold{x}} = A_{\bold{y}}, \quad
 A_{\bold{y}} A_{\bold{z}} = A_{\bold{x}}.

On peut naturellement identifier chaque matrice de cette algèbre de Lie avec un vecteur de R3,

\begin{align}
 \boldsymbol{\omega} &{}= (x,y,z) \\
 \tilde{\boldsymbol{\omega}} &{}= x A_{\bold{x}} + y A_{\bold{y}} + z A_{\bold{z}} \\
                             &{}= \begin{pmatrix}0&-z&y\\z&0&-x\\-y&x&0\end{pmatrix} .
\end{align}

Avec cette identification, le crochet de SO(3) s'identifie au produit vectoriel,

 [\tilde{\bold{u}},\tilde{\bold{v}}] = (\bold{u} \wedge \bold{v})^{\sim} . \,\!

De même, la correspondance entre une matrice et le vecteur v qui la représente correspond à

 \tilde{\bold{v}} \bold{u} = \bold{v} \wedge \bold{u} . \,\!,

ce qui implique que v est dans le noyau de l'endomorphisme associé à la matrice avec laquelle on l'a identifié, puisque v\wedgev est toujours le vecteur nul.

L'application exponentielle[modifier | modifier le code]

L'application exponentielle relie l'algèbre de Lie au groupe de Lie ; on la définit à l'aide de la série entière bien connue pour ex:

\begin{align}
 \exp \colon \mathfrak{so}(n) &{}\to SO(n) \\
 A &{}\mapsto I + A + \tfrac{1}{2} A^2 + \tfrac{1}{6} A^3 + \cdots + \tfrac{1}{k!} A^k + \cdots = \sum_{k=0}^{\infty} \frac{1}{k!} A^k
\end{align}

Pour toute matrice antisymétrique A, exp(A) est toujours une matrice de rotation.

Un important exemple pratique est le cas 3×3, où nous venons de voir qu'on peut identifier chaque matrice antisymétrique avec un vecteur ω = uθ, où u = (x, y, z) est un vecteur unitaire. Rappelons que u est dans le noyau de la matrice associée à ω, et donc que si l'on utilise une base dont u est l'axe des z, la dernière ligne et la dernière colonne seront nulles. Nous savons ainsi déjà que la matrice exponentielle laisse u fixé. Il n'est pas réellement possible de donner une formule pour une telle base en fonction de u (l'existence d'une formule continue contredirait le théorème de la boule chevelue), mais on peut exponentier directement dans la base initiale, obtenant

\begin{align}
 \exp( \tilde{\boldsymbol{\omega}} )
 &{}= \exp \left( \begin{pmatrix} 0 & -z \theta & y \theta \\ z \theta & 0&-x \theta \\ -y \theta & x \theta & 0 \end{pmatrix} \right) \\
 &{}= \begin{pmatrix}
    2 (x^2 - 1) s^2 + 1 & 2 x y s^2 - 2 z c s & 2 x z s^2 + 2 y c s \\
    2 x y s^2 + 2 z c s & 2 (y^2 - 1) s^2 + 1 & 2 y z s^2 - 2 x c s \\
    2 x z s^2 - 2 y c s & 2 y z s^2 + 2 x c s & 2 (z^2 - 1) s^2 + 1
  \end{pmatrix} ,
\end{align}

c = cos θ2, s = sin θ2. On reconnait la matrice d'une rotation d'angle θ autour de l'axe u. Il faut remarquer également que cette transformation de matrices antisymétriques est tout à fait distincte de la transformation de Cayley discutée plus haut.

Quelle que soit la dimension, si nous choisissons une matrice non nulle A et considérons ses multiples (tA, où t est un scalaire), l'exponentiation donne une famille de matrices de rotation etA situées le long d'une géodésique du groupe de Lie (en tant que variété), formant un sous-groupe à un paramètre. Plus généralement, l'exponentielle est un homéomorphisme entre un voisinage de 0 dans l'algèbre de Lie et un voisinage de l'identité du groupe de Lie. En fait, on peut construire n'importe quelle matrice de rotation comme exponentielle d'une matrice antisymétrique, donc pour ces groupes l'application exponentielle est une surjection.

La formule de Baker–Campbell–Hausdorff[modifier | modifier le code]

Soit deux matrices A et B de l'algèbre de Lie. Leurs exponentielles, exp(A) et exp(B), sont des matrices de rotation, que nous pouvons multiplier. Comme l'application exponentielle est surjective, nous savons qu'il existe C dans l'algèbre de Lie telle que exp(A)exp(B) = exp(C), ce que nous noterons

 A \ast B = C . \,\!

Quand exp(A) and exp(B) commutent (ce qui est toujours le cas pour les matrices 2×2, mais pas en général en dimension supérieure), on a C =A+B, comme pour l'exponentiation complexe. Le cas général est donné par la formule de Baker-Campbell-Hausdorff (en) (dite formule BCH), un développement en série en termes de crochets, qui pour des matrices sont les commutateurs, détectant le défaut de commutativité de la multiplication. La formule générale est assez complexe, mais dans le cas des matrices, elle se simplifie en

 A\ast B =

\sum_{n>0} \frac{(-1)^{n-1}}{n}  \sum_{\begin{smallmatrix} r_i+s_i>0\,                      \\ 1\le i\le n\end{smallmatrix}} \frac{A^{r_1}B^{s_1}\cdots A^{r_n}B^{s_n}}{r_1!s_1!\cdots r_n!s_n!}, dont les premiers termes peuvent aussi s'écrire
 A \ast B = A + B + \tfrac12 [A,B] + \tfrac{1}{12} [A,[A,B]] - \tfrac{1}{12} [B,[A,B]] - \cdots \,\!

La représentation d'une matrice de rotation par sa décomposition angulaire, comme dans le cas des angles d'Euler, peut amener à la tentation de considérer les rotations comme formant un espace vectoriel, mais la présencec des termes d'ordre supérieur dans la formule BCH montre que cela serait une erreur.

Revenons au cas 3×3, où [A, B] est égal au produit vectoriel, A\wedge B. Si A et B sont linéairement indépendantes, alors A, B, et A\wedgeB forment une base ; sinon, A et B commutent. Et il s'avère que, en dimension 3, la série de la formule BCH peut se mettre sous la forme "exacte" αABA\wedgeB.

Le groupe Spin[modifier | modifier le code]

Le groupe de Lie des matrices de rotation n×n, SO(n), est une variété compacte et connexe par arcs. Mais il n'est pas simplement connexe, aussi la théorie de Lie nous dit que c'est l'« ombre » (l'image par une application continue) d'un groupe de revêtement universel. Le groupe de revêtement, qui dans ce cas est le groupe Spin (ou groupe de spins, ou groupe des spineurs), noté Spin(n), est en général plus simple et il est plus naturel de s'y placer.

Dans le cas des rotations planes, SO(2) est topologiquement un cercle, la sphère S1. Son groupe de revêtement universel, Spin(2), est isomorphe à la droite réelle, R, munie de l'addition. En d'autres termes, chaque fois que nous utilisons des angles de valeur arbitraire, ce que nous faisons souvent, nous profitons de la simplicité des nombres réels, dont les angles sont les « ombres ». Toute matrice de rotation 2×2 correspond à une infinité dénombrable d'angles, séparés par des multiples entiers de 2π ; cela correspond à ce que le groupe fondamental de SO(2) est isomorphe aux entiers relatifs, Z.

Dans le cas des rotations de l'espace, SO(3) est topologiquement équivalent à l'espace projectif réel de dimension 3, P3(R). Son revêtement universel, Spin(3), est isomorphe à la 3-sphère, S3 ; et chaque matrice de rotation 3×3 correspond à deux points opposés de la sphère. Par conséquent, le groupe fondamental de SO(3) est isomorphe au groupe à deux éléments, Z2. Nous pouvons aussi décrire Spin(3) comme isomorphe au groupe multiplicatif des quaternions de norme 1, ou à un certain ensemble de matrices réelles 4×4, ou de matrices complexes 2×2.

Concrètement, un quaternion unité, q, avec

\begin{align}
 q &{}= w + \bold{i}x + \bold{j}y + \bold{k}z , \\
 1 &{}= w^2 + x^2 + y^2 + z^2 ,
\end{align}

correspond à la matrice de rotation

 Q = \begin{pmatrix}
    2 x^2 + 2 w^2 - 1 & 2 x y - 2 z w & 2 x z + 2 y w \\
    2 x y + 2 z w & 2 y^2 + 2 w^2 - 1 & 2 y z - 2 x w \\
    2 x z - 2 y w & 2 y z + 2 x w & 2 z^2 + 2 w^2 - 1
\end{pmatrix} .

C'est notre troisième version de cette matrice, ici représentant une rotation d'angle 2θ autour du vecteur non-unitaire (x, y, z), où cos θ = w et |sin θ| = ||(x, y, z)|| (le signe de sin θ dépend des signes des composantes de l'axe).

En dimension supérieure, beaucoup des propriétés de ce cas se généralisent. Les recouvrements ont tous une fibre de deux éléments, et SO(n), n > 2, a toujours pour groupe fondamental Z2. Le cadre naturel pour étudier ces groupes est celui des algèbres de Clifford. Et l'action des rotations est donnée par une sorte de "sandwich", noté qvq.

Rotations infinitésimales[modifier | modifier le code]

Les matrices de l'algèbre de Lie ne sont pas elles-mêmes des rotations ; ces matrices antisymétriques sont des dérivées, proportionnelles à des différences de rotations. Une véritable "rotation différentielle", ou encore une matrice de rotation infinitésimale a la forme

 I + A \, d\theta , \,\!

dθ est infiniment petit[3]. Ces matrices n'ont pas toutes les propriétés des matrices de rotation (finies) usuelles. Pour le comprendre, considérons

 dA_{\bold{x}} = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & -d\theta \\ 0 & d\theta & 1 \end{pmatrix} .

La condition d'orthogonalité, QtQ = I n'est pas vérifiée, puisque le produit

 dA_{\bold{x}}^t \, dA_{\bold{x}} = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1+d\theta^2 & 0 \\ 0 & 0 & 1+d\theta^2 \end{pmatrix} ,

diffère de la matrice identité par des infiniment petits du second ordre ; nous les négligeons donc, et nous dirons qu'au premier ordre, une matrice infinitésimale de rotation est orthogonale. Regardons à présent le carré de la matrice

 dA_{\bold{x}}^2 = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1-d\theta^2 & -2d\theta \\ 0 & 2d\theta & 1-d\theta^2 \end{pmatrix}

Négligeant à nouveau les termes du second ordre, nous voyons que l'angle a simplement doublé. La différence principale de comportement, nous demandera une seconde rotation infinitésimale,

 dA_{\bold{y}} = \begin{pmatrix} 1 & 0 & d\phi \\ 0 & 1 & 0 \\ -d\phi & 0 & 1 \end{pmatrix} .

Comparons les produits dAxdAy et dAydAx.

\begin{align}
 dA_{\bold{x}}\,dA_{\bold{y}} &{}= \begin{pmatrix} 1 & 0 & d\phi \\ d\theta\,d\phi & 1 & -d\theta \\ -d\phi & d\theta & 1 \end{pmatrix} \\
 dA_{\bold{y}}\,dA_{\bold{x}} &{}= \begin{pmatrix} 1 & d\theta\,d\phi & d\phi \\ 0 & 1 & -d\theta \\ -d\phi & d\theta & 1 \end{pmatrix} \\
\end{align}

Comme dθ dφ est du second ordre, nous le négligeons; ainsi, au premier ordre, la multiplication des matrices de rotation infinitésimales est commutative. En fait,

 dA_{\bold{x}}\,dA_{\bold{y}} = dA_{\bold{y}}\,dA_{\bold{x}} , \,\!

toujours au premier ordre.

Il faut donc toujours soigneusement distinguer (le traitement au premier ordre de) ces matrices infinitésimales à la fois des matrices de rotation finies, et des dérivées de ces matrices (qui sont antisymétriques). Ainsi, le comportement des matrices finies dans la formule BCH contraste avec celui des matrices infinitésimales, car tous les termes des commutateurs seront des infiniment petits du second ordre, et donc ces matrices formeront bien un espace vectoriel dans ce cas.

Conversions[modifier | modifier le code]

Nous avons vu l'existence de plusieurs décompositions et constructions progressives s'appliquant en toutes dimensions. Nous allons à présent nous intéresser de plus près au cas des rotations en dimension 3.

Quaternions[modifier | modifier le code]

Réécrivons à nouveau la matrice générale de rotation 3×3 sous la forme

 Q = \begin{pmatrix}
    1 - 2 y^2 - 2 z^2 & 2 x y - 2 z w & 2 x z + 2 y w \\
    2 x y + 2 z w & 1 - 2 x^2 - 2 z^2 & 2 y z - 2 x w \\
    2 x z - 2 y w & 2 y z + 2 x w & 1 - 2 x^2 - 2 y^2
\end{pmatrix} .

À présent, chaque composante d'un quaternion apparaît (doublée) dans un terme de degré 2, et si tous ces termes sont nuls, nous obtenons une matrice identité. Ceci permet une conversion efficace et robuste d'un quaternion quelconque (unitaire ou non, et même nul) vers une matrice de rotation 3×3.

Puisqu'il n'est plus nécessaire que les quaternions utilisés soient unitaires, nous pouvons utiliser les quaternions non nuls comme des coordonnées homogènes pour les matrices de rotation 3×3. La transformation de Cayley discutée plus haut est obtenue en divisant le quaternion par sa composante en w. Pour une rotation de 180° autour d'un axe, w sera nul, ce qui explique la limitation de Cayley.

La somme des termes de la diagonale principale (la trace), vaut 3−4(x2+y2+z2), c'est-à-dire 2w2+2w2-1. On voit que les termes de la diagonale ont tous la même forme : 2x2+2w2−1, 2y2+2w2−1, et 2z2+2w2−1.

La diagonale de la matrice permet ainsi de comparer les valeurs absolues des quatre composantes du quaternion ; nous pouvons en fait les obtenir en n'utilisant que des sommes et des racines carrées, et déterminer les signes à l'aide des coefficients (antisymétriques) hors de la diagonale.

Décomposition polaire[modifier | modifier le code]

Article détaillé : décomposition polaire.

Si M, une matrice n×n, est régulière, ses colonnes forment une base, que le procédé d'orthogonalisation de Schmidt permet de transformer en une base orthonormale. En termes d'algèbre linéaire numérique (en), nous transformons M en une matrice orthogonale Q, à l'aide de la décomposition QR. Cependant, on préfèrerait souvent obtenir la matrice Q « la plus proche » de M, ce que cette méthode échoue à faire ; l'outil approprié pour cela est la décomposition polaire.

Pour mesurer la proximité des matrices, nous pouvons utiliser n'importe quelle norme invariante par transformations orthogonales. Un choix approprié est celui de la norme de Frobenius, ||QM||F, la racine carrée de la somme des carrés des différences des termes de Q et de M. Exprimé en termes de la trace, Tr, notre but est de

  • Trouver Q minimisant Tr( (QM)t(QM) ),sous la contrainte QtQ = I.

Bien qu'écrite en termes matriciels, la fonction d'optimisation est simplement un polynôme quadratique. Nous pouvons le minimiser simplement en cherchant où sa dérivée s'annule. Pour une matrice 3×3, la condition d'orthogonalité entraîne six égalités (scalaires) que doivent satisfaire les coefficients de Q. Pour y ajouter les contraintes, on peut employer la méthode standard des multiplicateurs de Lagrange, formant ici une matrice symétrique Y. Ainsi, notre méthode consiste à :

  • Dériver Tr( (QM)t(QM) + (QtQI)Y ) par rapport aux termes de Q, et chercher où ces dérivées partielles s'annulent.

Axe et angle de rotation[modifier | modifier le code]

Pour construire efficacement une matrice de rotation à partir d'un angle θ et d'un vecteur axial unitaire u, nous pouvons utiliser les symétries (et antisymétries) entre les termes :

c = cos(θ); s = sin(θ); C = 1-c
xs = x*s;   ys = y*s;   zs = z*s
xC = x*C;   yC = y*C;   zC = z*C
xyC = x*yC; yzC = y*zC; zxC = z*xC
[ x*xC+c   xyC-zs   zxC+ys ]
[ xyC+zs   y*yC+c   yzC-xs ]
[ zxC-ys   yzC+xs   z*zC+c ]

Déterminer un axe et un angle, comme déterminer un quaternion, n'est possible qu'au signe près ; en effet, (u,θ) et (−u,−θ) correspondent à la même matrice de rotation, tout comme q et −q. Mais cette détermination présente des difficultés supplémentaires : l'angle peut être restreint à l'intervalle entre 0° et 180°, mais les angles ne sont définis qu'à 360° près. De plus, quand l'angle est nul, l'axe n'est pas défini; quand l'angle est 180°, la matrice devient symétrique, ce qui rend difficile la détermination de l'axe. Ainsi, près des multiples de 180°, il faut prêter beaucoup d'attention aux incertitudes numériques : en déterminant l'angle, une fonction arctangente à deux variables (avec atan2(sin θ,cos θ) égal à θ) est nécessaire pour éviter l'insensibilité de arccos ; de même, en calculant la norme d'un vecteur de l'axe (pour construire un vecteur unitaire) une approche en force brute peut perdre trop de précision. On peut souvent utiliser

x = Qzy-Qyz
y = Qxz-Qzx
z = Qyx-Qxy
r = hypot(x,hypot(y,z))
t = Qxx+Qyy+Qzz
θ = atan2(r,t−1)

Les composants x, y, et z de l'axe doivent ensuite être divisés par r. Comme pour la représentation par quaternions, des formules différentes doivent être utilisées quand t est négatif ; enfin, quand r est nul (parce que l'angle est nul), un axe doit être fourni arbitrairement.

Angles d'Euler[modifier | modifier le code]

La complexité de la conversion est plus grande dans le cas des angles d'Euler (ici envisagés dans le sens le plus général). La première difficulté est de déterminer quel ordre d'axes cartésiens utiliser (parmi les 24 possibles). Supposons que les trois angles soient θ1, θ2, θ3 ; les physiciens et les chimistes peuvent les interpréter comme

 Q(\theta_1,\theta_2,\theta_3)=  Q_{\bold{z}}(\theta_1) Q_{\bold{y}}(\theta_2) Q_{\bold{z}}(\theta_3) , \,\!

alors que les aérodynamiciens utiliseront

 Q(\theta_1,\theta_2,\theta_3)=  Q_{\bold{z}}(\theta_3) Q_{\bold{y}}(\theta_2) Q_{\bold{x}}(\theta_1) . \,\!

Une approche systématique commence par choisir l'axe le plus à droite. Parmi toutes les permutations de (x,y,z), deux seulement placent cet axe en premier ; l'une est paire et l'autre impaire. Le choix de la parité permet ainsi de déterminer l'axe du milieu, laissant deux choix pour l'axe le plus à gauche, répétant ou non le premier choix. Ceci donne 3×2×2 = 12 variations ; choisissant des axes fixes ou mobiles, on aboutit à 24 possibilités.

Cela suffit à construire une matrice à partir des angles, mais de nombreux triplets différents peuvent donner la même matrice. Ainsi, si nous utilisons la convention zyz choisie plus haut, nous avons les paires équivalentes suivantes :

(90°, 45°, −105°) (−270°, −315°, 255°) multiples de 360°
(72°, 0°, 0°) (40°, 0°, 32°) alignement singulier
(45°, 60°, −30°) (−135°, −60°, 150°) bascule bistable

Le problème de l'alignement singulier, l'analogue mathématique du phénomène physique de blocage de cardan (gimbal lock) se produit lorsque la rotation intermédiaire aligne les axes des deux autres rotations. Ces singularités ne sont pas caractéristiques de la matrice de rotation elle-même, et ne se produisent que lors de l'utilisation des angles d'Euler.

Pour les éviter, il faut manipuler la matrice en tant que famille de vecteurs-colonnes (ou lignes) orthonormale (appelés souvent, dans les applications 3D, vecteurs "droit", "haut" et "extérieur"); elles ne se produisent également pas lorsqu'on utilise les quaternions.

Matrices de rotation aléatoires[modifier | modifier le code]

Il est parfois nécessaire de construire une matrice de rotation aléatoire (avec une distribution uniforme). Intuitivement, il semble clair en dimension 2 que cela implique que l'angle de rotation soit uniformément distribué entre 0 et 2π. Cette intuition est correcte, mais ne s'étend pas aux dimensions supérieures. Ainsi, si nous considérons les matrices de rotation 3×3 sous la forme axe-angle, l'angle ne doit pas être uniformément distribué ; la probabilité que la mesure de l'angle soit au plus θ devrait être1π(θ − sin θ), pour 0 ≤ θ ≤ π.

Comme SO(n) est un groupe de Lie connexe et localement compact, nous avons un critère simple de distribution uniforme, à savoir que la distribution soit invariante par rotation (les "translations" du groupe) ; cette définition correspond à la mesure de Haar. Il est possible d'utiliser la transformation de Cayley pour engendrer et tester des matrice selon ce critère[4].

On peut également engendrer une distribution uniforme en toute dimension à l'aide de l'algorithme du sous-groupe de Diaconis et Shashani[5], lequel exploite récursivement la structure des groupes emboîtés de SO(n), de la manière suivante : engendrer un angle au hasard entre 0 et 2π et construire la matrice de rotation 2×2 correspondante. Pour passer de n à n+1, engendrer un vecteur v uniformément distribué sur la n-sphère, Sn, prolonger la n×n matrice en ajoutant comme dernière colonne et dernière ligne (0,…,0,1), et composer par une rotation cette nouvelle matrice pour que la dernière colonne devienne v.

Comme d'habitude, des méthodes plus spécialisées existent pour le cas 3×3. Dans chaque cas, on commence par choisir trois nombres indépendants uniformément distribués entre 0 et 1. Arvo[6] part d'une transformation de Householder (en) et exploite la dimension impaire pour en tirer une rotation en la multipliant par -1, puis pour déterminer l'axe d'une rotation uniformément distribuée.

Une autre méthode part de quaternions de norme 1. La multiplication des matrices est homéomorphe à celle des quaternions, et multiplier par un quaternion unitaire revient à faire tourner la sphère unité. Comme cet homéomorphisme est localement une isométrie, on en conclut qu'on obtiendra une distribution uniforme sur SO(3) en partant d'une distribution uniforme sur S3.

Il est également possible d'utiliser les angles d'Euler, mais avec une distribution non uniforme[7].

Enfin, sous la forme axe-angle, l'axe doit être uniformément distribué, mais l'angle de rotation a la distribution non-uniforme notée précédemment.

Notes et références[modifier | modifier le code]

(en) Cet article est partiellement ou en totalité issu de l’article de Wikipédia en anglais intitulé « Rotation matrix » (voir la liste des auteurs)

  1. Recommandation du W3C, « Scalable Vector Graphics -- le système de coordonnées initial »,‎ 2002
  2. (en) Glenn Murray, « Rotation About an Arbitrary Axis in 3 Dimensions »
  3. Si on ne veut pas se placer dans le cadre de l'analyse non standard, il s'agit là d'un langage imagé qui devrait être remplacé par l'utilisation des outils de la géométrie différentielle, par exemple le fibré tangent
  4. Karim Oualkacha, « Étude d'un modèle statistique pour les rotations » (ArchiveWikiwixArchive.isGoogleQue faire ?). Consulté le 2013-04-12[PDF], mémoire de maîtrise
  5. (en) Persi Diaconis et Mehrdad Shahshahani, The subgroup algorithm for generating uniform random variables, Probability in the Engineering and Informational Sciences, 1987
  6. (en) James Arvo, Fast random rotation matrices dans David Kirk, Graphics Gems III, 1992, San Diego: Academic Press Professional (ISBN 978-0-12-409671-4), p. 117–120
  7. (en) Francis Dominic Murnaghan, The Unitary and Rotation Groups, Lectures on applied mathematics, 1962, Washington: Spartan Books

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]