/ / Multiplier les types de transformation et de matrice dans Eigen - c ++, matrix, transform, eigen

Multiplier les types de transformation et de matrice dans Eigen - c ++, matrice, transformation, eigen

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 № 1

Ecrivez:

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.