Angle de deux vecteurs de l'espace

Pour un couple de deux vecteurs de l'espace on peut seulement définir leur angle géométrique (non orienté), puisqu'il n'existe aucune orientation naturelle sur le plan vectoriel qu'ils engendrent.

Angle de deux plans

Soient P1 et P2 deux plans de l'espace.
S'ils sont parallèles on convient que leur angle est nul.
S'ils ne sont pas parallèles soit D leur intersection (qui est donc une droite, et soit H un plan orthogonal à D.
Soient enfin D1 et D2 les intersections de P1 et P2 avec H.
On appelle 'angle de P1 et P2' l'angle (non orienté) des droites D1 et D2.

Image générée avec GeoGebra3D
L'angle de deux plans est également l'angle (non orienté) d'un vecteur normal au premier avec un vecteur normal au second.

Angle d'une droite et d'un plan

Soient P un plan et D une droite dans l'espace.
S'ils sont orthogonaux, on convient que leur angle est π/2.
Sinon on appelle 'angle de P et D' l'angle (non orienté) de D avec sa projection orthogonale sur P.

Image générée avec GeoGebra3D
L'angle d'une droite et d'un plan est complémentaire à l'angle non orienté de cette droite avec une normale au plan, c'est à dire que la somme de ces deux angles vaut π/2 (à kπ près et au signe près).

Angles d'Euler

Ce paragraphe est important pour de nombreux domaines, comme : Cependant, chaque discipline a ses propres définitions, ses conventions, ses notations, son vocabulaire, de sorte qu'il n'y a aucune uniformisation.
Ces différences sont en partie justifiées par le but recherché. En particulier les mécaniciens font un usage important d'un repère local (lié au solide en mouvement) c'est le point de vue qui est parfois qualifié "d'intrinsèque", alors que les informaticiens ont le plus souvent recours à un repère fixe, c'est le point de vue qualifié "d'extrinsèque".
La base théorique est relativement simple.
Soit (O, i, j, k) un repère orthonormé de l'espace.
Suivant la coutume, on désigne par :
Le vectoriel et l'affine sont identifiés par le choix de l'origine du repère, O.
Nous nous concentrons sur les rotations affines conservant le point O, lesquelles s'identifient aux rotations vectorielles de ℝ3, lesquelles s'identifient à leur tour aux matrices orthogonales directes. Nous qualifions de rotation 'élémentaire' toute rotation autour d'un des trois axes du repère.
Ainsi par exemple :
La rotation d'angle ψ autour de l'axe Ox qui a pour matrice
R x ( ψ ) = 1 0 0 0 cos ( ψ ) sin ( ψ ) 0 sin ( ψ ) cos ( ψ )
La rotation d'angle θ autour de l'axe Oy qui a pour matrice
R y ( θ ) = cos ( θ ) 0 sin ( θ ) 0 1 0 sin ( θ ) 0 cos ( θ )
La rotation d'angle φ autour de l'axe Oz qui a pour matrice
R z ( φ ) = cos ( φ ) sin ( φ ) 0 sin ( φ ) cos ( φ ) 0 0 0 1
Ces rotations élémentaires portent des noms liés à la navigation maritime ou aérienne: Imaginez vous un avion ou un bateau. L'axe Oy passe par la queue et l'avant de l'appareil (la proue et la poupe du bateau), c'est un axe longitudinal. L'axe Ox part de l'aile gauche à l'aile droite (de babord à tribord), c'est un axe transverse. L'axe Oz pointe vers le haut de l'appareil, c'est l'axe vertical.
Ainsi le 'tangage' (anglais: pitch) devient la rotation autour de l'axe Ox, le 'lacet' (anglais yaw) devient la rotation autour de l'axe Oz, et le 'roulis' (anglais: roll) la rotation autour de l'axe Oy.

Image: http://www.737ngproject.be/Yoke.htm
Dans la pratique ces 3 mouvements sont combinés. On peut donc imaginer toutes sortes de compositions comme :
RxoRyoRz
RzoRyoRx
etc ... soit 6 au total.
Toutes ces composées sont distinctes !!!
Nous choisirons pour notre étude la seconde convention et nous considérerons, les produits du type Rz(φ)oRy(θ)oRx(ψ)
.
Avec ces notations nous pouvons affirmer :
Toute rotation R peut s'écrire (de manière non unique) comme composée d'au plus trois rotations élémentaires.
Autrement dit si R est une rotation quelconque de l'espace conservant l'origine, on peut toujours trouver au moins un triplet (φ θ,ψ) tel que R=Rz(φ)oRy(θ)oRx(ψ) avec la convention que les angles peuvent éventuellement être nuls.

Effectuons d'abord le produit des 3 matrices :
Rz(φ)oRy(θ)oRx(ψ)= cos ( θ ) cos ( φ ) sin ( ψ ) sin ( θ ) cos ( φ ) cos ( ψ ) sin ( φ ) cos ( ψ ) sin ( θ ) cos ( φ ) + sin ( ψ ) sin ( φ ) cos ( θ ) sin ( φ ) sin ( ψ ) sin ( θ ) sin ( φ ) + cos ( ψ ) cos ( φ ) cos ( ψ ) sin ( θ ) sin ( φ ) sin ( ψ ) cos ( φ ) sin ( θ ) sin ( ψ ) cos ( θ ) cos ( ψ ) cos ( θ )
La matrice d'une rotation générale est une matrice orthogonale positive :
R = R 11 R 12 R 13 R 21 R 22 R 23 R 31 R 32 R 33
De sorte que notre problème revient à la résolution d'un système de 9 équations en les 3 inconnues ψ, θ et φ.

Résolution en θ.

Il vient immédiatement R31=-sin(θ).
Si nous laissons pour le moment de côté les cas R31=+1 et R31=-1, nous tirons deux valeurs possibles pour θ :
θ1=-arcsin(R31) θ2=π-θ1=π+arcsin(R31)
Nous traiterons plus tard les cas particuliers évoqués.

Résolution en ψ

En trigonométrie, la fonction atan2 à deux arguments est une variation de la fonction arctangente.
Pour tous arguments réels x et y non nuls, atan2(y,x) est l'angle en radians entre la partie positive de l'axe des x d'un plan, et le point de ce plan aux coordonnées (x,y).
Cet angle est positif pour les angles dans le sens anti-horaire dit sens trigonométrique (moitié haute du plan, y > 0) et négatif dans l'autre (moitié basse du plan, y < 0).
Nous laissons toujours de côté le cas cos(θ)=0.
Nous avons donc les deux possibilités.
{ ψ 1 = a tan 2 ( R 32 cos ( θ 1 ) , R 33 cos ( θ 1 ) ) ψ 2 = a tan 2 ( R 32 cos ( θ 2 ) , R 33 cos ( θ 2 ) )

Résolution en φ

Le même raisonnement que précédemment nous conduit à :
{ φ 1 = a tan 2 ( R 21 cos ( θ 1 ) , R 11 cos ( θ 1 ) ) φ 2 = a tan 2 ( R 21 cos ( θ 2 ) , R 11 cos ( θ 2 ) )
Toujours dans le cas où cos(θ)≠0 Nous traitons maintenant le :

Cas spécial où cos(θ)=0

Ce cas se partage lui-même en deux sous-cas :
Cas spécial θ=π/2
On a alors :
R12=sin(ψ-φ)
R13=cos(ψ-φ)
Qui nous donne :
ψ=φ+atan2(R12,R13)
Cas spécial θ=-π/2
De la même façon il vient :
ψ=-φ+atan2(-R12,-R13)

Résumé

Dans les cas θ=π/2 et θ=-π/2 (cas connu sous le nom de 'gimbal lock'), nous voyons qu'il y a une infinité de solutions, ψ et φ étant liés par une relation et φ étant quelconque.
Pour une solution particulière nous pouvons toujours prendre φ=0.
On obtient donc :
θ=π/2
φ=0
ψ=atan2(R12,R13)
Mais aussi :
θ=-π/2
φ=0
ψ=atan2(-R12,-R13)
Dans tous les autres cas , on a deux solutions :
111)
222)
La démonstration ci-dessus constitue un algorithme de détermination des angles d'Euler.
Cet exercice vous propose une implémentation en langage Python de cet algorithme.
Voici une appliquette javascript qui vous permet de voir les rotations élémentaires d'un solide par rapport à trois axes fixes :
Avec l'un des 3 boutons choisissez un axe de rotation.
Avec le curseur déterminer un angle de rotation en degrés autour de l'axe choisi précédemment.
Le solide (cube) tourne alors de la valeur de l'angle choisi autour de l'axe choisi par rapport à sa position actuelle.

Mesure de l'angle en degrés entre -180 et +180 :

Une autre convention

La convention suivante est largement utilisée en mécanique du solide :
On passe du référentiel fixe Oxyz au référentiel lié au solide Ox'y'z' par trois rotations successives.
  1. La 'précession' ψ, autour de l'axe Oz, fait passer de Oxyz au référentiel Ouvz
  2. La 'nutation' θ, autour de l'axe Ou, fait passer de Ouvz à Ouwz'
  3. La 'rotation propre' φ, autour de l'axe Oz', fait passer de Ouwz’ au référentiel lié au solide Ox'y'z’
NB. L'axe Ou est porté par l'intersection des plans Oxy et Ox'y' dite 'droite des noeuds' .

Image : http://fr.wikipedia.org/wiki/Angles_d%27Euler
Une très belle animation se trouve sur cette page.