【发布时间】:2014-06-16 14:17:13
【问题描述】:
我有以下代码:
void mySetTransform(const Eigen::Affine3d& T);
...
mySetTransform(Eigen::Translation3d(1.0,2.0,3.0));
这不会编译,它无法将Eigen::Translation3d 转换为Eigen::Affine3d。以下行导致相同的错误:
Eigen::Affine3d test = Eigen::Translation3d(r);
但这很好:
Eigen::Affine3d test;
test = Eigen::Translation3d(r);
所以,看起来= 运算符工作正常,但是没有定义使用Eigen::Translation3d 构建Eigen::Affine3d 的构造函数。
文档中有以下 note 用于 Translation 类:
这个类不是用来存储翻译的 转换,而是使构造和 Transform 对象的更新。
有什么方法可以声明上述函数,以便可以使用任何转换对象(如在 Eigen/Geomerty 中声明的Translation)直接调用它(不使用临时变量)?
【问题讨论】: