Comment faire pivoter un objet autour d'un point à l'aide des quaternions?
Dans mon application 3D-je stocker la position de l'objet dans un vecteur et c'est la rotation autour de l'origine dans un quaternion. J'ai besoin de faire pivoter l'objet autour d'un vecteur avec une origine arbitraire. J'ai essayé la conversion de la position - vectorOrigin et de la rotation dans une matrice de la rotation de la matrice, puis l'extraction de la position et la rotation d'un vecteur et d'un quaternion de la matrice résultante. La position arrive ok, mais la rotation reste constante (l'objet tourne autour du vecteur donné, mais il fait toujours face à la même direction).
Est ma méthode de mal ou dois-je avoir un bug?
OriginalL'auteur user17544 | 2009-05-22
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr pourquoi pensez-vous que la rotation de changer. Vous avez programmatiques "créatures" qui représente le point d'origine, le point de destination, et d'une rotation. Le calcul du point de destination, basée sur les deux autres "créatures" ne devrait pas l'affecter.
Ce sujet de l'approche habituelle? Si vous avez besoin de tourner la position (x, y, z) autour du point (a, b, c), d'abord traduire la position de sorte que la rotation autour de l'origine: utilisez (x-a, y-b, z-c) que la position, la rotation autour de l'origine, comme d'habitude, à la nouvelle traduit la position (x', y'-b, z-c), et de les traduire en arrière et obtenir votre nouvelle position (x', y', z').
Si je comprends bien, vous avez besoin d'ajouter une autre rotation, autour d'un vecteur parallèle à celui que vous avez mentionné, mais qui passe par le centre de l'objet.
Vous êtes de droite. Je l'ai résolu en rotation de l'objet autour de son centre et en tournant la position de l'objet autour du vecteur donné.
Vous avez sauvé ma journée! Merci monsieur.
Vous êtes les bienvenus! Il est bon de savoir que des trucs que j'ai écrit il y a si longtemps est toujours utile.
OriginalL'auteur Oren Shalev
Je ne suis pas familier avec les quaternions, et peut-être que ce est totalement hors-sujet, mais vous ne pouvez pas faire pivoter un objet 3d autour d'un point, l'axe de rotation doit être une ligne.
Juste point de. Je voulais dire en rotation autour d'un vecteur avec une origine arbitraire. J'ai édité la question.
OriginalL'auteur Aric TenEyck