2009-11-18 6 views
20

Je travaille dans Ogre, mais c'est un problème de quaternion général.'Différence' entre deux quaternions

J'ai un objet, auquel j'applique une rotation quaternion Q1 initialement. Plus tard, je veux faire comme si j'avais d'abord fait pivoter l'objet par un quaternion Q2 différent.

Comment calculer le quaternion qui prendra l'objet, déjà pivoté par Q1, et l'aligner comme si tout ce que je faisais était d'appliquer Q2 à l'orientation initiale/par défaut? Je regardais (s) lerping, mais je ne suis pas sûr si cela ne vaut que sur orientations plutôt que rotations?

+3

Que diriez-vous de marquer certaines réponses comme correctes? aussi regarder débordement de maths ... (Les quaterions me rendent complètement fou aussi btw et sry je ne peux pas répondre) –

Répondre

29

Il semble que vous voulez l'inverse de Q1 fois Q2. La transformation par l'inverse de Q1 ramènera l'objet dans son cadre d'origine (l'orientation initiale, comme vous le dites), puis la transformera par Q2 pour le faire tourner dans sa nouvelle orientation.

Notez que la définition standard d'un quaternion applique des transformations dans un ordre de multiplication de droite à gauche, donc vous voudrez le calculer comme Q = Q2 * Q1^{- 1}.

21

penser de cette façon

QInitial * QTransition = QFinal 

résoudre pour QTransition en multipliant les deux côtés par QInitial^{- 1} (^ {- 1} étant le conjugué quaternion)

QTransition = QFinal * QInitial^{-1} 

Il est juste C'est facile.

  • note à @Dan Park - si vous n'êtes pas d'accord avec mes calculs, veuillez poster une réponse à ma réponse, ne changez pas les maths. Pour autant que je sache, c'est vrai.
+0

Ceci est en train de raviver un vieux sujet mais pourquoi est-ce juste? Je peux vérifier que c'est par code, mais la rotation de la matrice fonctionne dans l'autre sens, je crois. Par exemple. Si je voudrais enlever le MInitia je multiplierais les deux côtés avec MInitial^-1 de gauche depuis MInitial^-1 * MInitial = Midentity. –

+1

Quaternions "multiplication" n'est pas en arrière comme la multiplication de matrice. Je ne trouve pas d'explication solide sur le web, mais je sais que c'est dans "Quaternions and Rotation Sequences" de Kuipers. (http://www.amazon.com/Quaternions-Rotation-Sequences-Applications-Aerospace/dp/0691102988) - Je ne dis pas que vous devriez aller acheter ce livre pour le prouver à vous-même (même si c'est un bon livre), mais c'est là que je me souviens avoir appris la différence entre les ordres d'opération de Matrix et de Quaternion. – fbl

+0

Merci d'avoir répondu. Si je suis coincé encore une fois je vais aller acheter ce livre mais pour l'instant je suis juste heureux que cela fonctionne. :) –

Questions connexes