Je suis physicien, j'ai appris la programmation et j'ai rencontré beaucoup de gens utilisant des quaternions pour les rotations au lieu d'écrire des choses sous forme de matrice / vecteur.
En physique, il y a de très bonnes raisons pour lesquelles nous n'utilisons pas les quaternions (malgré l'histoire bizarre qui est parfois racontée à propos de Hamilton / Gibbs / etc.). La physique exige que nos descriptions aient un bon comportement analytique (cela a une signification précisément définie, mais de certaines manières plutôt techniques qui vont bien au-delà de ce qui est enseigné dans les classes d'introduction normales, donc je n'entrerai pas dans les détails). Il s'avère que les quaternions n'ont pas ce comportement agréable, et donc ils ne sont pas utiles, et les vecteurs / matrices en ont, donc nous les utilisons.
Cependant, restreintes aux rotations rigides et aux descriptions qui n'utilisent aucune structure analytique, les rotations 3D peuvent être décrites de manière équivalente dans les deux sens (ou de quelques autres manières).
Généralement, nous voulons juste une application d'un point X = (x, y, z) à un nouveau point X '= (x', y ', z') soumis à la contrainte que X 2 = X ' 2 . Et il y a beaucoup de choses qui font cela.
La manière naïve est de simplement dessiner les triangles que cela définit et d'utiliser la trigonométrie, ou d'utiliser l'isomorphisme entre un point (x, y, z) et un vecteur (x, y, z) et la fonction f (X) = X 'et une matrice MX = X ', ou en utilisant des quaternions, ou en projetant des composants de l'ancien vecteur le long du nouveau en utilisant une autre méthode (x, y, z) T. (a, b, c) (x', y ', z '), etc.
D'un point de vue mathématique, ces descriptions sont toutes équivalentes dans ce cadre (en tant que théorème). Ils ont tous le même nombre de degrés de liberté, le même nombre de contraintes, etc.
Alors pourquoi les quaternions semblent-ils préférés aux vecteurs?
Les raisons habituelles que je vois sont l'absence de verrouillage de la nacelle ou des problèmes numériques.
L'argument sans gimbal lock semble étrange, car il ne s'agit que d'un problème d'angles d'euler. Ce n'est également qu'un problème de coordonnées (tout comme la singularité à r = 0 en coordonnées polaires (le jacobien perd son rang)), ce qui signifie que ce n'est qu'un problème local, et peut être résolu en changeant de coordonnées, en tournant hors de la dégénérescence, ou en utilisant deux systèmes de coordonnées qui se chevauchent.
Je suis moins sûr des problèmes numériques, car je ne sais pas en détail comment ces deux (et toutes les alternatives) seraient implémentés. J'ai lu que la normalisation d'un quaternion est plus facile que de le faire pour une matrice de rotation, mais ce n'est vrai que pour une matrice générale; une rotation a des contraintes supplémentaires qui banalisent cela (qui sont intégrées dans la définition des quaternions) (en fait, cela doit être vrai puisqu'ils ont le même nombre de degrés de liberté).
Alors, quelle est la raison de l'utilisation de quaternions sur des vecteurs ou d'autres alternatives?