Les quaternions sont bons pour interpoler les rotations entre eux. jusqu'ici tout va bien.Puis-je interpoler la rotation à partir de deux quaternions créés à partir de lacet/tangage/roulis?
Si j'ai un jeu en réseau, est-ce qu'il suffira de transférer la rotation comme vector3f ou devrais-je utiliser un quaternion? Pour rendre le jeu plus fluide, il se peut que je doive interpoler entre la dernière rotation envoyée et la dernière en cours.
Mais puis-je interpoler les rotations entre deux quaternions créés à partir de lacet/tangage/roulis?
Quaternion a = Quaternion.FromYawPitchRoll(x1,y1,z1);
Quaternion b = Quaternion.FromYawPitchRoll(x2,y2,z2);
a.Interpolate(b, value); // will this work correctly?
Vous devez mentionner (comme l'a fait @Justicle) que plain-ol 'lerp fonctionne très bien pour les quaternions dans de nombreux cas. –
J'ai lu que les rotations euler ne sont pas sans ambiguïté, donc vous ne pouvez pas interpoler entre eux. Le fait de les convertir en quaternions les rend vraiment sans ambiguïté, ce qui me semble un peu illogique. – codymanix
@codymanix: Peut-être, mais c'est le cas. Vous ne pouvez pas utiliser directement les angles d'Euler.Puisque les quaternions ont un degré de liberté supplémentaire, ils évitent tout le problème avec le verrou de cardan, peu importe ce que la représentation précédente était, ou à quoi il est converti plus tard. Les angles d'Euler -> quaternion -> la matrice est entièrement kasher. –