Quels sont les avantages et les inconvénients de l’utilisation de masortingces, d’angles d’Euler et de quaternions pour la représentation en rotation?

Les masortingces et les angles d’Euler peuvent souffrir du blocage de Gimbal, mais quels sont les autres arguments pour utiliser l’un sur l’autre?

Que pensez-vous que DirectX favorise?

Qu’est-ce que vous utilisez dans la programmation quotidienne C ++ / C / DirectX?

Les angles d’Euler ne nécessitent que trois parameters, par opposition à l’enregistrement d’une masortingce (ou trois, mais cela semble excessif). Cependant, lorsque vous appliquez la rotation d’Euler, vous obtiendrez peut-être quelque chose d’équivalent à trois multiplications de masortingce pour créer la transformation. Si vous utilisiez uniquement une masortingce, vous pourriez ne pas encourir un coût aussi élevé (selon la manière dont la masortingce a été construite). Outre Gimbal Lock, il existe également un problème d’effets d’annulation lors de l’interpolation de représentations masortingcielles de rotations sur lesquelles vous devez faire attention.

Vous voudrez peut-être envisager les quaternions. Ils nécessitent quatre parameters de stockage, ils ne sont donc pas très lourds. Ils évitent le blocage du cardan et peuvent être interpolés pour obtenir des rotations douces. Une chose qui peut être interprétée comme un inconvénient pour le quaternion est qu’ils ne sont peut-être pas très intuitifs pour certains. Les transformations de masortingce et les angles d’Euler ont un type de nut-roll-yaw ou spin-precession-nutation plutôt intuitif. Les quaternions s’apparentent davantage à une seule rotation autour d’un axe de résultat final qui se démarque telle ou telle.

Il y a probablement des cas où quelqu’un préférerait une méthode aux autres, alors ce ne sont que quelques éléments à prendre en compte lors de la prise de décision.

Les angles d’Euler souffrent de singularités et sont difficiles à travailler. Les représentations masortingcielles N’ONT PAS ce problème contrairement à un certain nombre de réponses ici. Une représentation masortingcielle de l’orientation peut souffrir des erreurs accumulées car vous utilisez 9 nombres pour quelque chose qui n’a que 3 degrés de liberté. Les quaternions sont très intéressants du sharepoint vue mathématique, mais en fin de compte, ils multiplient réellement une masortingce 4×4.

Un quaternion peut aussi être vu comme une 3vec qui représente un axe de rotation et sa longueur est liée à l’angle de rotation autour de cet axe (sin carré?). Le 4ème paramètre est calculé pour que la longueur du 4vec soit égale à 1. Cette interprétation peut être convertie en une masortingce d’orientation équivalente.

La représentation masortingcielle peut inclure des informations de mise à l’échelle et peut être étendue au 4×4 pour inclure des informations de position ainsi que l’orientation. Vous pouvez transformer à la fois les vecteurs de position et de direction à l’aide de la transformation de masortingce, ce qui n’est pas possible avec les deux autres.

Vous pouvez faire une quantité incroyable de choses très simplement avec une masortingce 4×4. Les quaternions et les angles d’Euler ne font que l’orientation. Oui, rien que ça. Je suppose que ma préférence / mon parti pris sur cette question est plutôt clair 🙂

Ce n’est pas vraiment lié à DirectX. Vous pouvez utiliser l’une ou l’autre méthode, mais les quaternions sont plus faciles à traiter pour les données d’animation. Sinon, vous n’avez pas une seule méthode standard pour gérer le problème et il est donc difficile d’interpréter les données d’un programme à l’autre.

Les quaternions sont de loin les plus difficiles à maîsortingser, mais une fois que vous comprenez de quoi ils parlent, vous les trouverez étonnamment faciles à utiliser. Je les considère comme une meilleure solution que les transformations Euler Angles / Masortingx car elles traitent un problème que les 2 autres solutions ne résolvent pas. Le “cadenas Gimball”.