2013-02-23 3 views
8

Puis-je utiliser la bibliothèque Eigen pour obtenir la matrice de rotation qui fait tourner le vecteur A vers le vecteur B? J'ai été la recherche pendant un certain temps, mais ne peut pas trouver api connexes.Matrice de rotation dans Eigen

Répondre

11

Vous devez d'abord construire un quaternion puis le convertir en une matrice, par exemple:

#include <Eigen/Geometry> 
using namespace Eigen; 

int main() { 
    Vector3f A, B; 
    Matrix3f R; 
    R = Quaternionf().setFromTwoVectors(A,B); 
} 
+0

A noter que cela nécessite une somme supplémentaire '.toRotationMatrix()' 'après (A, B)' à travailler, car 'R' est une matrice. –

+1

Non, il y a une surcharge de l'opérateur = qui le fait fonctionner. Cependant, le respectif est explicite, par conséquent 'Matrix3f R = Quaternionf(). SetFromTwoVectors (A, B);' nécessite '.toRotationMatrix()' ou pour transtyper explicitement en 'Matrix3f (.)', Ou pour appeler explicitement le ctor avec 'Matrix3f R (Quaternionf(). setFromTwoVectors (A, B));' – ggael

+0

Désolé mon erreur! Manqué cette légère subtilité. Merci d'expliquer les différences. –

Questions connexes