Les matrices et les angles d'Euler peuvent souffrir de verrou à cardan, mais quels sont quelques autres arguments d'utilisation d'un sur l'autre? P>
Que pensez-vous DirectX faveurs? P>
Que utilisez-vous dans la programmation quotidienne C ++ / C / DirectX? P>
4 Réponses :
Ce n'est pas vraiment lié à DirectX. Vous pouvez utiliser une méthode, mais des quaternions sans doute sont plus faciles à traiter pour les données d'animation. Sinon, vous n'avez pas de moyen standard de traiter avec cela et que cela rend donc plus difficile d'interpréter des données sur des programmes. P>
Les angles d'Euler nécessitent seulement trois paramètres, par opposition à la conservation d'une matrice (ou trois, mais cela semble excessive). Lorsque vous appliquez la rotation d'Euler, cependant, vous vous retrouverez éventuellement avec quelque chose d'équivalent à trois multiplications matricielles pour créer la transformation. Si vous utilisiez uniquement une matrice, vous ne pouvez pas subir un coût aussi coûteux (en fonction de la construction de la matrice). Outre la serrure de Gimbal, il existe également un problème d'annulation des effets d'annulation lorsque des représentations de la matrice interpolant les rotations dont vous avez besoin pour faire attention. P>
Vous voudrez peut-être envisager des quaternions. Ils nécessitent quatre paramètres de stockage, ils ne sont donc pas très lourds. Ils évitent la serrure de cardan et peuvent être interpolées pour rendant les rotations lisses. Une chose qui peut être interprétée comme un inconvénient pour le quaternion est qu'ils ne peuvent pas être très intuitifs pour certains. Les transformations matricielles et les angles d'Euler ont un type de pitch-pitch-kraw-pitch ou d'une nuité-précède-la-personne qui est assez intuitive. Les quaternions s'apparaissent davantage à une rotation unique sur un axe de résultat final qui sortez ceci ou de cette façon. P>
Il y a probablement des cas où quelqu'un préférerait une méthode sur les autres, de sorte que ce ne sont donc que des choses à prendre en compte lors de la prise de décision. P>
+1. L'interpolation et la résolution de la serrure de la gimbal est la raison pour laquelle je préférerais des quaternions. Mais le fait que la plupart des gens semblent utiliser des matrices a ses propres avantages.
Je pense qu'il convient de noter que les matrices ne peuvent pas entrer dans le verrou de Gimbal (elles stockent des directions, pas des rotations).
Quaternions sont de loin les plus difficiles à maîtriser, mais une fois que vous comprenez ce qu'ils sont sur vous les trouverez surprenant facile à utiliser. Je les considère comme une meilleure solution que les angles d'Euler / matrice transforment parce qu'ils traitent d'un problème que les 2 autres solutions ne le font pas. Le "verrou de gimball". P>
Une autre post mentionnant "verrouillage de gimbal" comme la propriété rachetée des quaternions. Ce n'est qu'un problème avec des angles d'Euler, ni les matrices ni les quaternions sont susceptibles.
Les angles d'Euler souffrent de singularités et sont difficiles à travailler. Les représentations matricielles n'ont pas ce problème contraire à un certain nombre de réponses ici. Une représentation matricielle de l'orientation peut souffrir d'erreurs accumulées car vous utilisez 9 numéros pour quelque chose qui n'a que 3 degrés de liberté. Les quaternions sont très intéressantes mathématiquement, mais à la fin de la journée, ils font vraiment une matrice 4x4 multiplié. P>
Un quaternion peut également être considéré comme un 3Vec qui représente un axe de rotation et sa longueur est liée à l'angle de rotation autour de cet axe (péché carré?). Le 4ème paramètre est calculé pour effectuer la longueur de la 4VEC égale à 1. Cette interprétation peut être convertie en une matrice d'orientation équivalente. P>
La représentation matricielle peut inclure des informations de mise à l'échelle et peut être étendue à 4x4 pour inclure des informations de position ainsi que d'orientation. Vous pouvez transformer à la fois des vecteurs de position et de direction à l'aide de la transformation matricielle qui n'est pas possible en utilisant les deux autres. P>
Vous pouvez faire une incroyable quantité de choses très simplement avec une matrice 4x4. Quaternions et angles d'Euler juste faire une orientation. Ouais, juste cette chose. Je suppose que ma préférence / biais sur cette question est plutôt claire: -) p>
En général, je préfère aussi les transformations affines. Mais si j'avais animé quelque chose, j'irais probablement la route Quaternion pour des raisons d'interpolation. Pour la composition graphique de la scène, les transformations affines sonnent comme le meilleur choix. Si quelqu'un écrivait un outil de rotation pour un modeleur ou quelque chose, les angles d'Euler pourraient se sentir plus naturels.
JESTRO: Lecture ici: en.wikipedia.org/wiki/gimbal_lock Cela semblerait que le verdict est d'utiliser des quaternions. Mais je n'ai aucune expérience directe (jeu de mots).
@Mitch: C'est certainement la programmation liée, quiconque travaille avec des transactions graphiques 3D avec ces choses sur une base quotidienne
À peu près, tout type d'API standard 3D va vouloir des matrices comme entrée. La plupart des outils de modélisation et d'animation 3D semblent représenter des rotations comme angles d'Euler par défaut. Si vous avez besoin d'interpoler correctement les rotations générales, les quaternions ont un sens et rien d'autre ne le fait. Vous aurez besoin de convertir des quaternions en matrices pour votre API; Les outils d'animation 3D modernes auront sans doute leurs propres installations pour les utiliser ...
Pas de programmation liée?!!! !!! Il y a non i> autre contexte dans lequel cette question fait tout sens i> que la programmation! Pourquoi les gens pensent-ils qu'ils devraient commenter des choses qu'ils ignorent? Omg, c'est juste Freakin embarrassant i>.