c++ - 在 Eigen 中乘以变换和矩阵类型

标签 c++ matrix transform eigen

对我来说这应该正常工作,所以事实上它没有,几乎可以肯定意味着我是错的。尽管原则上 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;

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

谢谢, 凸轮

最佳答案

只写:

m = m * rotMat.matrix();

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

关于c++ - 在 Eigen 中乘以变换和矩阵类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6712867/

相关文章:

css3 - CSS/SCSS rails转换div,但不嵌套图像(rails)

c++ - 从 `std::vector<char>` 内部的位中获取整数

c++ - LibVLC流式传输到内存p_audio_data

c++ - 具有动态分配数组的类的C++复制构造函数

opengl - 如何按给定方向旋转矢量

opencv - 如何通过变换矩阵在python中进行图像变换操作(旋转、缩放、平移)

Unity3D 中的旋转

c++ - 使用 C++ boost 正则表达式

matlab - Matlab中的列向量到转置三角矩阵?

string - 在 Find 上转换 MongoDB 数据