FvD*_*FvD 3 c++ cout eigen eigen3
我正在尝试做一些简单的事情:
std::cout << e << std::endl;
Run Code Online (Sandbox Code Playgroud)
哪里e是类型Eigen::Affine3d。但是,我收到了无用的错误消息,例如:
cannot bind 'std::ostream {aka std::basic_ostream<char>}'
lvalue to 'std::basic_ostream<char>&&'
Run Code Online (Sandbox Code Playgroud)
对于这是有益解释原因在这里,但如果答案不适用。
该官方文档被生硬,这意味着只有Affine3d和Affine3f对象是矩阵。std::cout虽然可以毫无问题地打印特征矩阵和向量。那么问题是什么?
令人讨厌的<<是,没有为Affine对象定义运算符。您必须调用该matrix()函数才能获得可打印的表示:
std::cout << e.matrix() << std::endl;
如果您不喜欢齐次矩阵:
Eigen::Matrix3d m = e.rotation();
Eigen::Vector3d v = e.translation();
std::cout << "Rotation: " << std::endl << m << std::endl;
std::cout << "Translation: " << std::endl << v << std::endl;
Run Code Online (Sandbox Code Playgroud)
希望有人可以节省几分钟的烦恼。
PS:另一个孤独的SO问题顺便提到了这个解决方案。
| 归档时间: |
|
| 查看次数: |
4449 次 |
| 最近记录: |