Pourquoi les gens utilisent-ils des quaternions?

15

Je les utilise comme boîte noire depuis un certain temps, j'apprends juste des maths mais j'aimerais juste des réponses définitives à cette question.

Jusqu'à présent, le seul avantage que j'ai rencontré personnellement est la possibilité de SLERP entre deux angles - pour obtenir le même effet avec un vecteur dont vous avez besoin d'un travail assez laid (reliant intrinsèquement 0 et 2PI ensemble).

SirYakalot
la source
SLERP n'est pas seulement une interpolation entre deux angles: cela peut aussi être fait facilement avec une matrice. Il peut interpoler entre deux orientations arbitraires, ce qui est beaucoup plus complexe avec les matrices.
Calmarius

Réponses:

23

Les quaternions résolvent élégamment quelques problèmes:

  • Ils sont aussi compacts que les représentations axe-angle (4 valeurs scalaires)
  • Ils sont facilement convertis vers et depuis les représentations matricielles
  • L'interpolation fonctionne de n'importe quel angle de début à fin sans boîtier spécial
  • Ils ne présentent jamais de verrouillage de cardan

Vous pouvez contourner ces problèmes avec d'autres représentations, mais les quaternions conviennent parfaitement à leur simplicité algorithmique et à leurs performances.

Kai
la source
1
Ceci est exactement ce que je cherchais!
SirYakalot
@Kai Interpolation works from any start to end angle without special casing, il y a en fait un cas spécial, quand ils ne sont pas sur le même hémisphère de l'hypersphère, c'est en fait un cas spécial que vous devez considérer, car il y a toujours 2 directions pour interpoler vers la cible et vous voulez choisir la bonne
Maik Semder
2
@Kai They never exhibit gimbal lock- ce n'est pas tout à fait vrai. Ils peuvent simplement se multiplier q(Xaxis, 0) * q(YAxis, 90) * q(Zaxis, 20). Il est vrai qu'ils peuvent être utilisés pour éviter le verrouillage du cardan, mais il en va de même pour les matrices, les angles d'axe et autres. Ce n'est donc pas une propriété unique des quaternions. En fait, vous pouvez le faire avec la plupart des représentations de rotation, mais avec des angles d'euler. Le seul vrai message ici peut être "Euler engles souffre du verrouillage du cardan", mais il peut être évité par de nombreuses autres représentations de rotation, pas seulement les quaternions.
Maik Semder
Les performances d'un quaternion ne sont pas non plus généralement meilleures dans tous les cas, par exemple, il est plus rapide de faire tourner un vecteur en utilisant une matrice 3x3 que d'utiliser un quaternion. Voici un article intéressant à ce sujet.
Maik Semder
3

L'utilisation SLERP que vous mentionnez est un cas spécifique d'un attribut plus général de quaternions: vous pouvez interpoler en douceur entre différentes valeurs de rotation.

Lorsque vous interpolez les valeurs de rotation des angles d'Euler, vous obtenez des mouvements étranges, et il n'y a tout simplement pas de moyen logique d'interpoler les valeurs des rotations d'angle à angle (enfin, à part deux angles différents autour du même axe).

jhocking
la source
+1. On peut interpoler entre (w1, alpha1) et (w2, alpha2) en convertissant ces représentations angle-axe en quats puis en utilisant SLERP. Bien sûr, on peut faire une telle chose via un schéma de Bézier / de Casteljau / schéma de spline et utiliser un "polygone / ensemble" de quaternions clés de cette manière et arriver à une rotation compliquée. C'est peut-être la seule et unique chose que les quaternions font plus naturellement que les autres représentations puisque SLERP et multiSLERP ou leurs variations (NLERP, SQUAD) proposent des paires d'axes / angles de rotation intermédiaires qui se trouvent sur un chemin de rotation géodésique / le plus court. Gloire.
teodron