对我来说,这应该是有效的,因此事实并非如此,几乎可以肯定,这意味着我错了。尽管原则上Transform 与Matrix 相同,但不能明智地将它们一起使用:
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;
最后一行导致'no match for operator ='错误,而就地乘法运算符也将导致相同结果,尝试使用Affine3d初始化Matrix4d也不起作用。有人知道如何以任何有用的方式实际使用Transform类吗?
谢谢,
凸轮
最佳答案
写吧:
m = m * rotMat.matrix();
我不知道Eigen并未隐式定义该乘法,还是会干扰该库的其他用例,这是一个疏忽。