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

标签 c++ matrix transform eigen

对我来说,这应该能正常工作,但事实并非如此,几乎可以肯定是我错了。尽管原则上 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;

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

谢谢, 凸轮

最佳答案

随便写:

m = m * rotMat.matrix();

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

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

相关文章:

c - 需要帮助读取 C 中的 txt 文件

R:从另一个矩阵的元素中减去一个矩阵的元素

c - 下三角矩阵在 0 时给出错误答案

layout - D3力布局稳定检测

c++ - 一个只能由另一个类创建的类,不使用 friend

c++ - 使用 new 运算符在不知道对象类型的情况下将对象复制到堆

c++ - 构造函数的多重定义

c++ - 处理异常 std::out_of_range C++

javascript - Zingchart 用时间而不是日期绘制 X 轴

css - 在悬停时旋转父项而不是子项