对我来说这应该只是工作,所以事实并非如此,几乎可以肯定意味着我是错误的。尽管原则上是变换< double,3,Affine>与矩阵相同<双,4,4>,它们不能合理地使用:
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;
导致最后一行的'不匹配运算符='错误,并且就地乘法运算符导致相同,尝试使用Affine3d初始化Matrix4d也不起作用。有没有人知道如何以任何有用的方式实际使用Transform类?
谢谢, 凸轮
答案 0 :(得分:9)
只需写下:
m = m * rotMat.matrix();
我不知道Eigen是否隐含地定义了这个乘法,或者它是否会干扰该库的其他用例。