7

对我来说,这应该只是工作,所以事实并非如此,几乎可以肯定意味着我是错的。尽管原则上 Transform< double, 3, Affine > 与 Matrix< double, 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;

结果在最后一行出现'no match for operator='错误,并且就地乘法运算符导致相同的结果,尝试使用 Affine3d 初始化 Matrix4d 也不起作用。有人知道如何以任何有用的方式实际使用 Transform 类吗?

谢谢,凸轮

4

1 回答 1

9

写吧:

m = m * rotMat.matrix();

我不知道 Eigen 没有隐式定义这种乘法是否是一种疏忽,或者它是否可能会干扰库的其他用例。

于 2011-07-16T03:37:37.873 回答