Les quaternions

Le stricte minimum de la théorie de quaternions pour application à la modélisation 3D dans cette page

Présentation générales

Les quaternions, ont été inventés diront certains, ou découverts pour d’autres, par Sir Hamilton.

La théorie des quaternions repose sur des notions d’analyse complexe, qui n’a de complexe que le nom. On passera sur ces notions, en ne rappelant que l'essentiel de ce vaste domaine.

Pourquoi les quaternions? Deux approches permettent de représenter les rotations en 3D. Les angles d’Euler et les quaternions.

Les angles d’Euler permettent de représenter les rotations tri dimensionnelles, avec une limitation: le Gimbal Lock. Pour comprendre visuellement, c'est un peu l'idée avec les rotations, voici une vidéo Youtube d'une qualité assez exceptionnelle qui traite des angles d'Euler.

Pour palier cette difficulté des angles d’Euler, les quaternions sont là pour modéliser des rotation fluides et continues dans l’espace. Les quaternions sont l’outil qui permet de représenter les rotations en 3D. La contrepartie est le nombre de calcul plus grand. Et maintenant par le même Youtuber, une vidéo qui traite des quaternions.

Premières définitions - UP

Généralité

Soient a , b, c et d quatre valeurs de $\mathbb{R}$. Soit q un quaternion. Alors q s’écrit comme suit: $$ q = (a; b; c; d) $$ Une autre manière d'écrire: $$ q = a +bi+cj+dk $$ Un quaternion est un objet mathématiques constitué de quatre éléments. On dit plus exactement que l'espace des quaternion est un espace à quatre dimensions. Pour l'instant la seule chose à comprendre est qu'un quaternion est la données d'au plus quatre paramètres. On va voir que ces paramètres ont des caractéristiques particulières: un quaternion permet de définir un objet qui associe ensemble un scalaire et un vecteur. En gros, les quaternions, permettent de mélanger les torchons et les serviettes. On a toujours fait la part des choses entre les scalaires et les élément d'un espace vectoriel. Avec les quaternions, on peut associer ensemble des éléments a priori incompatibles.

Quaternion d’un scalaire

Soit a un scalaire. a peut être représenté comme un quaternion: $$ q = (a; 0; 0; 0) $$ Ce qui revient aussi à: $$ q = a ; \, b=c=d=0 $$

Quaternion d’un vecteur

Soit $\vec{U} = (U_{x}, U_{y}, U_{z})$ un vecteur de $\mathbb{R^{3}}$ et $q_{U}$ son quaternion $$ q_{U}= (0; U_{x}, U_{y}, U_{z}) = U_{x}.i + U_{y}.j + U_{z}.k $$ Avec ici: $$ a = 0 ; \,\, b = U_{x} ; \,\, c = U_{y} ; \,\, d = U_{z} $$

Quaternion, description générale

Un quaternion est défini par quatre éléments, où l'un, en général le premier (ou le dernier dans certaines notations) correspond au scalaire. Les trois autres composantes à celles d'un vecteur de l'espace. Par exemple, le quaternion $q = 12 + 3i -j + 17k$ est un quaternion qui possède comme informations la quantité $12$ (le scalaire) et le vecteur de coordonnées $(3;-1;17)$. Nous allons appliquer par la suite des opérations sur ces objets mathématiques qui vont permettre de représenter les rotations dans l'espace. En considérant que toute rotation de l'espace est déterminée par un axe et un angle. L'axe peut être représenté par un vecteur. On s'aperçoit alors que les quaternions vont pouvoir contenir l'information nécessaire pour modéliser ces rotations.

Quaternion d’une rotation

Sans plus attendre, le quaternions d'une rotation s'écrit de la manière suivante. Soit R une rotation d’angle $\theta$ et d’axe déterminé par un vecteur $\vec{V} = (V_{x}; V_{y}; V_{z})$. Alors, le quaternion q de la rotation d’angle $\theta$ et d’axe $V$ est: $$ q = (cos\theta/2; V_{x}.sin\theta/2; V_{y}.sin\theta/2; V_{z}.sin\theta/2) $$ Avec pour condition que $\vec{V}$ soit unitaire.

Norme d’un quaternion

Par norme on entend toujours la taille. Mesure la norme d'un objet c'est donner sa taille, quelque soit le nombre de dimensions qui le constituent. Un peut donc donner la norme d'un quaternion, de la même manière que si c'était un vecteur. Ici il a quatre coordonnées. Soit $q = (a; b; c; d)$ un quaternion. Alors on appelle $||q||$ lz norme du quaternion q, elle vaut: $$ ||q|| = \sqrt{a^{2} + b^{2} + c^{2} + d^{2}} $$ Ce qui s'écrit de manière équivalente: $$ ||q||^{2} = a^{2} + b^{2} + c^{2} + d^{2} $$ On peut trouver cette notation, avec la partie scalaire distinguée de la partie vectorielle: $$ ||q||^{2} = a^{2} +V^{2} $$ Où $$ V^{2} = b^{2} + c^{2} + d^{2} $$ En français, la norme d'eun quaternion au carré vaut le scalaire au carré plus la norme de la partie vectorielle au carré. (Remarque: en général on préfère écrire les formules sans racine carrée).

Notation et nomenclature

Une autre notation des quaternions plus simple dans sa représentation: $$ q = (a; U ) $$ Avec $a$ la partie scalaire et U, la partie vectorielle.

Quelques exercices

Pour chaque quaternion, donner la partie scalaire et la partie vectorielle. Par exemple, soit $q = 2 +i -2j+3k$, alors la partie scalaire est $a=2$ et le vecteur a pour coordonnées $\vec{U}(1;-2;3)$ \begin{align*} q= 2+2i+2j+2k, \,\,\text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, ) \\ q= 1+2i+2j+2k, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= -3/2+2j+2k, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= -12+i-2k, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= -2i+2j+2k, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= 3+j, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= 3i, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= -i+j-k, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= -1, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= 6+2i-2j-2k, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= 2-i+5j+3k, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= \sqrt{2}+j-2k, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= -3\sqrt{2}+2i+2j+2k, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= -\sqrt{3}2+2i+2j+2k, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= 6+j+k, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, )\\ q= 3-k, \,\, \text{ donc } \, a = \,\, \text{ et } \vec{U}( \,\,\, ; \,\,\, ; \,\,\, ) \end{align*}

En résumé les quaternions sont composés de quatre éléments, une correspond à la partie scalaires et les trois autres au vecteur. Ceci permettant plusieurs écritures: $$ q = (a; U) \, \, \\ \text{ou}\\ q = (a; Ux; Uy; Uz) $$ Pour les calculs la première notation, à l’aide du scalaire et du vecteur permettent des calculs plus simples. Leurs déclinaisons via les coordonnées ont des écritures un peu plus lourdes.

Opérations sur les quaternions - UP

Addition et soustraction

La somme de deux quaternions donne un quaternions dont chaque composante est la somme des composantes respectives, soit: Si, $q_{1} = (a_{1}; b_{1}; c_{1}; d_{1})$ et $q_{2} = (a_{2}; b_{2}; c_{2}; d_{2})$ Alors: $$ q_{1} + q_{2} = (a_{1} + a_{2}; b_{1} + b_{2}; c_{1} + c_{2}; d_{1} + d_{2}) $$ Le fonctionnement est identique avec la soustraction, remplacer le + par −.

Multiplication par un scalaire

Soient $\lambda$ et un quaternion $q = (a; b; c; d)$: $$ \lambda . q = (\lambda.a; \lambda.b; \lambda.c; \lambda.d) $$

Combinaison linéaire

Plus généralement, cette formulation résume les deux précédentes: Si, $q_{1} = (a_{1}; b_{1}; c_{1}; d_{1})$ et $q_{2} = (a_{2}; b_{2}; c_{2}; d_{2})$ Alors pour $\alpha$ et $\beta$ deux nombres réels quelconques: $$ \alpha q_{1} + \beta q_{2} = (\alpha a_{1} + \beta a_{2}; \alpha b_{1} + \beta b_{2}; \alpha c_{1} +\beta c_{2}; \alpha d_{1} + \beta d_{2}) $$

Conjugué

Tout quaternion possède ce qu'on appelle un conjugué. Soit $q = (a; b; c; d)$ un quaternion quelconque. On appelle $q^{\star}$ son conjugué. Il vaut: $$ q = (a; -b; -c; -d) $$ Si maintenant $q$ est exprimé comme ceci: $$ q = a +bi+cj+dk $$ alors son conjugué est alors: $$ q^{\star} = a -bi-cj-dk $$ On peut donc voir que le conjugué d’un quaternion est défini en changeant de signe pour les coordonnées vectorielles du quaternion à conjuguer.

Donner le conjugué des quaternions suivants: \begin{align*} q_{1} = 2+2i+2j+2k, \,\,\text{ donc } \, q^{\star} = \\ q_{2} = 1+2i+2j+2k, \,\, \text{ donc } \, q^{\star} = \\ q_{3} = -3/2+2j+2k, \,\, \text{ donc } \, q^{\star} = \\ q_{4} = -12+i-2k, \,\, \text{ donc } \, q^{\star} = \\ q_{5} = -2i+2j+2k, \,\, \text{ donc } \, q^{\star} = \\ q_{6} = 3+j, \,\, \text{ donc } \, q^{\star} = \\ q_{7} = 3i, \,\, \text{ donc } \, q^{\star} = \\ q_{8} = -i+j-k, \,\, \text{ donc } \, q^{\star} = \\ q_{9} = -1, \,\, \text{ donc } \, q^{\star} = \\ q_{10} = 6+2i-2j-2k, \,\, \text{ donc } \, q^{\star} = \\ q_{11} = 2-i+5j+3k, \,\, \text{ donc } \, q^{\star} = \\\ q_{12} = \sqrt{2}+j-2k, \,\, \text{ donc } \, q^{\star} = \\ q_{13} = -3\sqrt{2}+2i+2j+2k, \,\, \text{ donc } \, q^{\star} = \\ q_{14} = -\sqrt{3}2+2i+2j+2k, \,\, \text{ donc } \, q^{\star} = \\ q_{15} = 6+j+k, \,\, \text{ donc } \, q^{\star} = \\ q_{16} = -2j, \,\, \text{ donc } \, q^{\star} = \\ \end{align*}

Multiplication

La multiplication des quaternions dépend de leur structure, composés d’un scalaire et d’un vecteur, la formule de la multiplication entre quaternion n’est pas intuitive au premier abord. Donc soient deux quaternions: $q_{1} = (a_{1}; b_{1}; c_{1}; d_{1})$ et $q_{2} = (a_{2}; b_{2}; c_{2}; d_{2})$. On peut aussi noter ces deux quaternions comme ceci: $$ q_{1} = (a_{1}; U_{1}) \\ q_{2} = (a_{2}; U_{2}) $$ Cette notation plus dense est la première utilisée pour expliciter le résultat du produit entre deux quaternions. On obtient donc: $$ q1.q2 = (a1.a2 − U_{1}.U_{2}; a1.U_{2} + a2.U_{1} + U_{1} ∧ U_{2}) $$ Où,$a1.a2 − U_{1}.U_{2}$ est la composante résultante scalaire et $a1.U_{2} + a2.U_{1} + U_{1} ∧ U_{2}$ la composante vectorielle.

On peut aussi donner une autre formule à partir des coordonnées complètes des deux quaternions. Avec $q_{1} $ et $q_{2}$ définit précédemment, posons: $$ q = q1.q2 $$ avec $$ q = (a; b; c; d) $$ et $$ q_{i} = (a_{i}; b_{i}; c_{i}; d_{i}) \, \, \text{pour} \, \,i = 1, 2 $$ Alors: $$ a = a_{1}.a_{2} − b_{1}.b_{2} − c_{1}.c_{2} − d_{1}.d_{2}, \\ b = a_{1}.b_{2} + b_{1}.a_{2} + c_{1}.d_{2} − d_{1}.c_{2}, \\ c = a_{1}.c_{2} + c_{1}.a_{2} − b_{1}.d_{2} + d_{1}.b_{2}, \\ d = a_{1}.d_{2} + d_{1}.a_{2} + b_{1}.c_{2} − c_{1}.b_{2} $$ Ce qui s'écrit en détail: \begin{align} q = & a_{1}.a_{2} − b_{1}.b_{2} − c_{1}.c_{2} − d_{1}.d_{2} \\ & +( a_{1}.b_{2} + b_{1}.a_{2} + c_{1}.d_{2} − d_{1}.c_{2})i \\ & +(a_{1}.c_{2} + c_{1}.a_{2} − b_{1}.d_{2} + d_{1}.b_{2})j \\ & +(a_{1}.d_{2} + d_{1}.a_{2} + b_{1}.c_{2} − c_{1}.b_{2})k \end{align} La multiplication entre quaternion est l'opération qui permet de les combiner entre eux. Par combiner, on entend "appliquer" un quaternion à un autre. Très rapidement pour appréhender ces manipulations de quaternions, on peut voir les quaternions (certains) comme des transformations. Ils permettent de représenter notamment les rotations. On reviendra plus loin à la relation entre rotation et quaternions. Mais pour l'instant il faut se familiariser avec d'autres notions qui bien que naturelles sont à décliner pour les quaternions.

Ce résultat provient de postulats propres aux quaternions, issus de l'analyse complexe. Par définition, ici, on a les résultats des produits des composantes complexes des quaternions entre elles. Premièrement: $$ i^{2} = j^{2} = k^{2} = -1 $$ Puis, on a: $$ ij = k ; jk = i; ki = j $$ Et comme le on a pour tout quaternions $p$ et $q$: $pq = -qp$ alors: $$ ij = -ji ; jk = -kj ; ki = -ik. $$

Pour s'entraîner sans avoir de trop longs calculs, donnez le résultat de: $q_{4} \times q_{6}$, $q_{4} $, $q_{8} \times q_{6} $, $q_{8} \times q_{4} $ , $q_{7} \times q_{6} $. Et $q_{6} \times q_{7} $ pour comparer avec le dernier résultat.

Norme d'un quaternion

Comme tout objet mathématique vivant dans un espace de dimension finie, ici $4$, on peut en mesurer sa taille, quie l'on appelle norme. La norme d'un quaternion est donnée par la relation suivante: $$ \parallel q \parallel = \sqrt{a^{2}+b^{2}+c^{2}+d^{2}} $$ La norme d'un quaternion est la racine carrée de la somme de ses composant tous élevé au carré. Elle est strictement positive pour tout quaternion non nul.

Donner la norme des quaternions suivants: \begin{align*} q= 2+2i+2j+2k, \,\, \text{ donc } \, \parallel q \parallel = \\ q= 1+2i+2j+2k, \,\, \text{ donc } \, \parallel q \parallel = \\ q= -3/2+2j+2k, \,\, \text{ donc } \, \parallel q \parallel = \\ q= -12+i-2k, \,\, \text{ donc } \, \parallel q \parallel = \\ q= -2i+2j+2k, \,\, \text{ donc } \, \parallel q \parallel = \\ q= 3+j, \,\, \text{ donc } \, \parallel q \parallel = \\ q= 3i, \,\, \text{ donc } \, \parallel q \parallel = \\ q= -i+j-k, \,\, \text{ donc } \, \parallel q \parallel = \\ q= -1, \,\, \text{ donc } \, \parallel q \parallel = \\ q= 6+2i-2j-2k, \,\, \text{ donc } \, \parallel q \parallel = \\ q= 2-i+5j+3k, \,\, \text{ donc } \, \parallel q \parallel = \\\ q= \sqrt{2}+j-2k, \,\, \text{ donc } \, \parallel q \parallel = \\ q= -3\sqrt{2}+2i+2j+2k, \,\, \text{ donc } \, \parallel q \parallel = \\ q= -\sqrt{3}+2i+2j+2k, \,\, \text{ donc } \, \parallel q \parallel = \\ q= 6+j+k, \,\, \text{ donc } \, \parallel q \parallel = \\ q= -2j, \,\, \text{ donc } \, \parallel q \parallel = \\ \end{align*}

Normalisation d’un quaternion

Normaliser dans l'absolu c'est rendre conforme aux règles habituelles. En mathématiques, normaliser un élément c'est le transformer pour lui donner une taille valant $1$. Pour prendre un exemple représentatif, prenons le vecteur $\vec{u}$ dans la plan, de coordonnées $(3;4)$. La norme de ce vecteur vaut $\sqrt{3^{2}+4^{2}} = \sqrt{9+16}= \sqrt{25} =5 \geq 1$. On construit le vecteur $\vec{v}$ à partir du vecteur $\vec{u}$ en posant $\vec{v} = \dfrac{1}{5} \vec{u}$. $\vec{v}$ est de norme $1$. C'est le vecteur qui normalise le vecteur $\vec{u}$. On appelle vecteur de norme $1$ un vecteur unitaire. Normaliser un vecteur c'est le rendre unitaire. Pour dire encore autrement les choses, le vecteur $\vec{v}$ est le vecteur de norme $1$ obtenu à partir du vecteur $\vec{u}$. $\vec{v}$ a pour coordonnées $(3/5;4/5)$.

Pour qu'un quaternion puisse être une rotation, il doit être unitaire. Autrement dit la norme d'un quaternion représentant une rotation on doit contrôler qu'il est unitaire.

Soit $q=(a;b;c;d)$ un quaternion quelconque. Soit $q_{n}$ son quaternion normalisé. Alors: $$ q_{n} = \dfrac{1}{\parallel q \parallel}.q = \dfrac{1}{\parallel q \parallel}.(a;b;c;d) = ( \dfrac{a}{\parallel q \parallel}; \dfrac{b}{\parallel q \parallel}; \dfrac{c}{\parallel q \parallel}; \dfrac{d}{\parallel q \parallel}) $$ Un écriture plus détaillée en prenant en compte les composantes du quaternion: $$ q_{n} = ( \dfrac{a}{\sqrt{a^{2}+b^{2}+c^{2}+d^{2}}}; \dfrac{b}{\sqrt{a^{2}+b^{2}+c^{2}+d^{2}}}; \dfrac{c}{\sqrt{a^{2}+b^{2}+c^{2}+d^{2}}}; \dfrac{d}{\sqrt{a^{2}+b^{2}+c^{2}+d^{2}}}) $$

Inverse

L'ensemble des quaternions est suffisamment bien construit pour chaque quaternion ait un inverse. Autrement dit, quelque soit $q \neq 0$ dans l'ensemble des quaternions il existe un quaternion $q'$ tel que $$ qq' = q'q = 1 $$ Dans le cas des quaternions, cet inverse est égal au conjugué multiplié par l'inverse de la norme. On a, $\forall q$ quaternion non nul: $$ q^{-1} = \dfrac{q^{\star}}{ \parallel q \parallel }= \dfrac{q^{\star}}{ \sqrt{a^{2}+b^{2}+c^{2}+d^{2}} } $$ $$ q^{-1} = ( \dfrac{a}{\sqrt{a^{2}+b^{2}+c^{2}+d^{2}}}; \dfrac{-b}{\sqrt{a^{2}+b^{2}+c^{2}+d^{2}}}; \dfrac{-c}{\sqrt{a^{2}+b^{2}+c^{2}+d^{2}}}; \dfrac{-d}{\sqrt{a^{2}+b^{2}+c^{2}+d^{2}}}) $$ Si un quaternion définit une rotation, son inverse définit la rotation inverse. La formule précédente permet de la trouver facilement. Du moment que l'on a le quaternion de la rotation initiale.

Par ailleurs, on remarque que l'inverse d'un quaternion unitaire est son conjugué.

Application des quaternions aux rotations - UP

Contexte et hypothèses

Avant de définir les rotations à l'aide des quaternions, on doit définir ce qu'est une rotation. Pour pouvoir l'implémenter en tant que quaternion.

Une rotation est entièrement et uniquement définie à l'aide d'un axe et d'un angle. L'axe est donné par un vecteur et l'angle par un scalaire, en général en radians. Une hypothèse supplémentaire nécessaire pour la simplicité des calculs est de choisir le vecteur de l'axe de rotation comme unitaire. Autrement, dit, lorsque vous définissez un axe de rotation, il faut que sa norme soit égale à $1$.

Rotation d'un élément de l'espace

Si on fait tourner une figure de l'espace, que fait on tourner? Les points caractéristiques de la figure. Si c'est un cube, alors on fait tourner chaque point de celui-ci. De la même manière pour une surface, même s'il existe des moyens plus rapides, que l'on évoquera par la suite. Si c'est une sphère, il suffit de faire tourner son centre et en connaissant son rayon, on trouve facilement l'image d'une sphère par une rotation dont l'axe ne passe pas par le centre de la sphère. Sinon, c'est trivial, l'image est elle-même.

Enoncé du problème

Donc, soit une rotation $\mathcal{R}_{\vec{u},\theta}$ d'axe donné par le vecteur $\vec{u}$ et d'angle $\theta$. L'objet à faire tourner est un point de l'espace. Si vous savez faire tourner un point, vous saurez faire tourner toute figure de l'espace, qu'elle soit définie par un, deux ou trois mille points. Donc le point $M$ de coordonnées $(x_{M};y_{M};z_{M})$. A ce point on associe naturellement le vecteur $\overrightarrow{OM}$, dont les coordonnées sont les mêmes que que le point $M$.

On va donc faire tourner le vecteur $\overrightarrow{OM}$ d'un angle $\theta$ par rapport à l'axe donné par le vecteur $\vec{u}$.

Point vu comme un quaternion

Première étape: transformer le vecteur à faire tourner en quaternion. Si on a $\overrightarrow{OM} = (x_{M};y_{M};z_{M})$ alors on peut définir le quaternion associé $q_{M}$: $$ q_{M} = (0 ; x_{M};y_{M};z_{M}) = x_{M}.i + y_{M}.j + z_{M}.k $$

Quaternion de la rotation

Deuxième étape, on traduit la rotation sous forme de quaternion. La rotation $\mathcal{R}_{\vec{u},\theta}$ est définie par son axe, lui même défini par le vecteur $\vec{u}$ et son d'angle $\theta$. Alors le quaternion d'une rotation est donné par la formule suivante: $$ q_\mathcal{R} = (cos\theta/2; u_{x}.sin\theta/2; u_{y}.sin\theta/2; u_{z}.sin\theta/2) $$ Avec pour condition que $\vec{u}$ soit unitaire. $ u_{x}$, $ u_{y}$ et $ u_{z}$ sont ses composantes.

Si le vecteur de l'axe de rotation n'est pas unitaire, alors multiplier le quaternion par l'inverse de la norme du vecteur de l'axe et le quaternion sera unitaire. Et permettra de représenter une rotation.

Pour finir la construction de la rotation sous forme de quaternion, il faut maintenant prendre le conjugué du précédent quaternion, soit: $$ q^{\star}_\mathcal{R} = (cos\theta/2; - u_{x}.sin\theta/2; - u_{y}.sin\theta/2; - u_{z}.sin\theta/2) $$ On peut maintenant présenter la formule qui permet de calculer l'image d'un point par une rotation dans l'espace, à l'aide des quaternions. On pose: $\overrightarrow{OM^{'}} = (x_{M^{'}};y_{M^{'}};z_{M^{'}})$ l'image du point $M$ par la rotation, et son quaternion associé: $q_{M^{'}}$. Alors: $$ q_{M^{'}} = q_\mathcal{R} . q_{M} . q^{\star}_\mathcal{R} $$

Exemples d’application - UP

Voici un tableau contenant quelques quaternions correspondant à certaines rotations. Quelques exemples peuvent permettre d’implémenter plus facilement ces éléments. Considérons q un quaternion et ses composantes: q = (a; b; c; d) $$ \begin{align*} \begin{array}{|c|c|c|c|c|} \hline a & b & c & d & \text{Rotations résultantes} \\ \hline 1 & 0 & 0 & 0 & \text{Identité = rotation d'angle nul } \\ \hline 0 & 1 & 0 & 0 & \text{Rotation autour de l’axe des }x \\ \hline 0 & 0 & 1 & 0 & \text{Rotation autour de l’axe des $y$}, \\ \hline 0 & 0 & 0 & 1 & \text{Rotation autour de l’axe des $z$}, \\ \hline \dfrac{\sqrt{2}}{2} & \dfrac{\sqrt{2}}{2} & 0 & 0 & \text{Rotations de $\pi/2$ par rapport $\vec{i}$} \\ \hline \dfrac{\sqrt{2}}{2} & 0 & \dfrac{\sqrt{2}}{2} & 0 & \text{Rotations de $\pi/2$ par rapport $\vec{j}$ } \\ \hline \dfrac{\sqrt{2}}{2} & 0 & 0 & \dfrac{\sqrt{2}}{2} & \text{Rotations de $\pi/2$ par rapport $\vec{k}$ } \\ \hline \dfrac{\sqrt{2}}{2} & -\dfrac{\sqrt{2}}{2} & 0 & 0 & \text{Rotations de $-\pi/2$ par rapport $\vec{i}$ } \\ \hline \dfrac{\sqrt{2}}{2} & 0 & -\dfrac{\sqrt{2}}{2} & 0 & \text{Rotations de $-\pi/2$ par rapport $\vec{j}$ } \\ \hline \dfrac{\sqrt{2}}{2} & 0 & 0 & -\dfrac{\sqrt{2}}{2} & \text{Rotations de $-\pi/2$ par rapport $\vec{k}$ } \\ \hline \end{array} \end{align*} $$

Soit $M$ le point de coordonnées $(1;0;1)$. On veut le faire tourner d'un quart de tour ($\pi/2$) par rapport à l'axe des $z$, dans le sens positif. L'axe de rotation est donné par le vecteur unitaire $\vec{u} = (0;0;1)$On a donc: $$ q_{M} = i + k $$ et $$ q_\mathcal{R} = (cos\pi/4; 0 ; 0 ; sin\pi/4) = \dfrac{\sqrt{2}}{2}+ \dfrac{\sqrt{2}}{2}.k $$ $$ q^{\star}_\mathcal{R} = (cos\pi/4; 0 ; 0 ; sin\pi/4) = \dfrac{\sqrt{2}}{2} - \dfrac{\sqrt{2}}{2}.k $$

Donc: $$ q_{M^{'}} = (\dfrac{\sqrt{2}}{2}+ \dfrac{\sqrt{2}}{2}.k) . (i + k) . (\dfrac{\sqrt{2}}{2} - \dfrac{\sqrt{2}}{2}.k)\\ = \dfrac{1}{2} (1+k).(i+k).(1-k)\\ = \dfrac{1}{2} (i+k+ki+k^{2}).(1-k)\\ = \dfrac{1}{2} (i+k+j-1).(1-k)\\ = \dfrac{1}{2} (i+k+j-1-ik-k^{2}-jk+k)\\ = \dfrac{1}{2} (i+k+j-1+j+1-i+k)\\ = \dfrac{1}{2} (2j+2k)\\ = j+k\\ $$ Par une rotation d'un quart de tour par rapport à l'axe des $z$, la rotation du point $M = (1 ; 0 ; 1)$ est bien le point $M' = (0 ; 1 ; 1)$: [!h]

Limites de ces pages - UP

Cette page web ne se veut pas comme être la référence théorique sur les quaternions. Son objectif est uniquement de permettre de les appréhender d'un point de vue appliqué pour permettre leur utilisation en programmation 3D. La théorie des quaternions est vaste et touche diverses domaines des mathématiques, de l'algèbre linéaire, bilinéaire, sesquilinéaire, algèbre pur, Analyse complexe.



Retour à l'accueil →