Matrice de rotation
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é.
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.
Définition et propriétés générales
Une propriété caractéristique des rotations du plan ou de l'espace est de conserver le caractère orthonormé direct des repères. Traduisant cela dans le langage des matrices, on démontre que la matrice d'une application linéaire qui conserve les angles et les distances (une isométrie vectorielle) doit être orthogonale, c'est-à-dire que son inverse est égale à sa transposée : . De plus, la conservation de l'orientation se traduit par la formule . Les matrices vérifiant ces propriétés sont appelées matrices de rotation.
Le produit de deux matrices de rotation est une matrice de rotation :
Pour n plus grand que 2, la multiplication de matrices de rotation n×n n'est pas commutative.
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), ce groupe 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.
Rotations en deux et trois dimensions
Dans toute cette section, on considère que les matrices agissent sur des vecteurs colonne.
En dimension deux
En deux dimensions, les matrices de rotation ont la forme suivante :
- (rotation d'angle θ)
Cette matrice fait tourner le plan d'un angle θ. Si 0 < θ < π/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 car elle est compatible avec la disposition des pixels de l'image dans la mémoire d'un ordinateur pour les langages dérivés du C : de gauche à droite et de haut en bas. Progresser dans ce sens dans l'image permet un accès aux pixels de façon contigüe dans la mémoire, ce qui permet d'optimiser les entrées-sorties en saturant le cache, de traiter les pixels par paquets de 4, 8 ou 16, etc. et donc de réduire le temps de calcul. 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 des axes dans le sens contraire aux aiguilles d'une montre, on remplace simplement θ par –θ :
- (rotation des axes, horaire d'angle θ (rotation du vecteur dans le sens anti-horaire d'angle θ))
- (rotation des axes, anti-horaire d'angle θ (rotation du vecteur dans le sens horaire d'angle θ))
- Rotations usuelles
Les matrices correspondant à des rotations de 90° et de 180° sont particulièrement utiles :
- (rotation anti-horaire de 90° du vecteur)Calcul de la rotation d'angle du vecteur à l'aide de la matrice de rotation :
- (rotation de 180° du vecteur)
- (rotation horaire de 90° du vecteur)
Les matrices de base
Dans un espace euclidien à 3 dimensions, les matrices de rotations suivantes correspondent à des rotations autour des axes x, y et z (respectivement) :
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é
Si l'on oriente l'espace en trois dimensions avec les conventions habituelles (x vers l'observateur, 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
Les autres matrices de rotation s'obtiennent à partir des rotations de base à l'aide de la multiplication de matrices. Par exemple, le produit
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
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
Les rotations en trois dimensions ont un axe, c'est-à-dire une direction laissée inchangée par la rotation.
Axe à partir d'une matrice de rotation
Étant donné une matrice de rotation R, on peut trouver une matrice colonne u représentant le vecteur dirigeant l'axe en résolvant l'équation :
- (correspondant à la recherche d’un vecteur propre de la matrice)
Matrice de rotation à partir d'un axe et d'un angle
On peut calculer la matrice R de rotation autour d'un axe dirigé par un vecteur unitaire (donc avec ux2 + uy2 + uz2 = 1) et d'un angle θ. La formule est[1] :
où
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 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
où
I est la matrice identité 3 × 3. La matrice Q est la représentation antisymétrique de , correspondant à l'application linéaire (où est le produit vectoriel). La matrice est la projection sur l'axe de rotation et est la projection sur le plan orthogonal à l'axe dirigé par .
En dimension supérieure
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
- La matrice de rotation 2×2
correspond à une rotation de 90° dans le plan.
- La matrice symétrique 2×2
est sa propre inverse mais comme son déterminant vaut −1, ce n'est pas une matrice de rotation ; il s'agit de la symétrie orthogonale par rapport à la droite d'équation 11y = 2x.
- La matrice de rotation 3×3
correspond à une rotation dans l'espace à 3 dimensions de −30° autour de l'axe des x.
- La matrice de rotation 3×3
correspond à une rotation dans l'espace à 3 dimensions d'environ −74° autour de l'axe dirigé par .
- La matrice de permutation 3×3
est également une matrice de rotation, comme toute matrice de permutation paire (mais jamais d'une permutation impaire).
- La matrice 3×3
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
n'est pas carrée et ne peut donc pas être une matrice de rotation, bien que soit la matrice identité 3×3 (les colonnes sont orthonormales).
- La matrice de rotation 4×4
n'a pas d'axe de rotation : elle transforme tout vecteur en son opposé.
- La matrice de rotation 5×5
fait tourner les vecteurs 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é.
Ambiguïtés de la représentation matricielle
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
Plans indépendants
Considérons la matrice de rotation 3×3
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
donc
Ainsi λ est une racine du polynôme caractéristique de Q,
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 n⁄2 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, on peut déterminer un axe et un angle, et ceux-ci déterminent complètement la rotation (à l'orientation près).
Suites d'angles
Une matrice de rotation 2×2 a nécessairement la forme suivante :
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,
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
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.
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
c'est-à-dire la matrice identité. Ainsi, nous avons décomposé Q en
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
Une matrice de rotation 3×3 telle que
donne l'impression qu'une matrice de rotation 2×2,
est inscrite dans le coin supérieur gauche :
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
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
où 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,
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
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 (Q−I)(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, I−A est inversible si A est antisymétrique ; ainsi nous pouvons retrouver la matrice initiale Q à l'aide de la transformation de Cayley :
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
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
Groupes de Lie
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 ), 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
Associée à 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 et est formée de toutes les matrices antisymétriques n×n (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] = A1A2−A2A1, 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
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
Le crochet étant
On peut naturellement identifier chaque matrice de cette algèbre de Lie avec un vecteur de R3,
Avec cette identification, le crochet de SO(3) s'identifie au produit vectoriel,
De même, la correspondance entre une matrice et le vecteur v qui la représente correspond à
- ,
ce qui implique que v est dans le noyau de l'endomorphisme associé à la matrice avec laquelle on l'a identifié, puisque vv est toujours le vecteur nul.
L'application exponentielle
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:
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
où 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
Soient 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
Quand exp(A) et 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 (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
- , dont les premiers termes peuvent aussi s'écrire
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ésence 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, . Si A et B sont linéairement indépendantes, alors A, B, et AB 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" αA+βB+γAB.
Le groupe Spin
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
correspond à la matrice de rotation
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
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
où dθ est infiniment petit[2]. Ces matrices n'ont pas toutes les propriétés des matrices de rotation (finies) usuelles. Pour le comprendre, considérons
La condition d'orthogonalité, QtQ = I n'est pas vérifiée, puisque le produit
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
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,
Comparons les produits dAxdAy et dAydAx.
Comme est du second ordre, nous le négligeons; ainsi, au premier ordre, la multiplication des matrices de rotation infinitésimales est commutative. En fait,
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
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
Réécrivons à nouveau la matrice générale de rotation 3×3 sous la forme
À 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
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, ||Q−M||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( (Q−M)t(Q−M) ), 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( (Q−M)t(Q−M) + (QtQ−I)Y ) par rapport aux termes de Q, et chercher où ces dérivées partielles s'annulent.
Axe et angle de rotation
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
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
alors que les aérodynamiciens utiliseront
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
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 matrices selon ce critère[3].
On peut également engendrer une distribution uniforme en toute dimension à l'aide de l'algorithme du sous-groupe de Diaconis et Shashani[4], 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[5] part d'une transformation de Householder 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[6].
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
- (en) Glenn Murray, « Rotation About an Arbitrary Axis in 3 Dimensions »
- 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
- Karim Oualkacha, Étude d'un modèle statistique pour les rotations, mémoire de maîtrise, université Laval, 2004.
- (en) Persi Diaconis et Mehrdad Shahshahani, The subgroup algorithm for generating uniform random variables, Probability in the Engineering and Informational Sciences, 1987
- (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
- (en) Francis Dominic Murnaghan, The Unitary and Rotation Groups, Lectures on applied mathematics, 1962, Washington: Spartan Books
Voir aussi
Articles connexes
Liens externes
- (en) Eric W. Weisstein, « Rotation Matrix », sur MathWorld
- (en) Math Awareness Month 2000 interactive demo (requires Java)
- (en) Rotation Matrices at MathPages
- (fr) Application interactive illustrant la rotation matricielle 3D appliquée à une image SVG