对我来说,这应该是有效的,因此事实并非如此,几乎可以肯定,这意味着我错了。尽管原则上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并未隐式定义该乘法,还是会干扰该库的其他用例,这是一个疏忽。

07-24 16:12