Pour moi cela devrait juste travailler, donc le fait que cela ne signifie pas, presque certainementJe suis celui qui a tort. Même si, en principe, Transform <double, 3, Affine> est identique à une matrice <double, 4, 4>, ils ne peuvent pas être utilisés ensemble de manière judicieuse:
Affine3d rotMat( AngleAxisd( 45.0, ( Vector3d() << 0.0, 1.0, 0.0 ).finished() ) );
Matrix4d m;
m << 1.0, 0.0, 0.0, 6.0,
0.0, 1.0, 0.0, 6.0,
0.0, 0.0, 1.0, 6.0,
0.0, 0.0, 0.0, 1.0;
m = m * rotMat;
Résultats avec une erreur "no match for operator =" surla dernière ligne, et l'opérateur de multiplication sur place a le même résultat, essayer d'initialiser Matrix4d avec Affine3d ne fonctionne pas non plus. Quelqu'un sait-il comment utiliser réellement la classe Transform de manière utile?
Merci, Came
Réponses:
8 pour la réponse № 1Ecrivez:
m = m * rotMat.matrix();
Je ne sais pas s’il est oubliée que Eigen ne définisse pas implicitement cette multiplication ou si elle risque d’interférer avec d’autres cas d’utilisation de la bibliothèque.