我正在尝试在现有项目中使用Eigen,并且卡住了。
我正在从矩阵中创建quaternionf
,如下所示:
Eigen::Quaternionf quats(path.block(0, 0, 3, 3));
矩阵有效,这种结构应该有效。
当我尝试调用x,y,z,w值时,如下所示:
float test = quats.x();
它不会编译,给我:
use of undefined type 'Eigen::internal::quaternionbase_assign_impl<MatrixDerived,-1,-1>'
在:
\eigen\src\Geometry\Quaternion.h
我在这里缺少什么?
感谢。
答案 0 :(得分:2)
问题不在于quats.x()
,而在于初始化:
Eigen::Quaternionf quats(path.block(0, 0, 3, 3));
你必须告诉Eigen你在编译时传递了一个3x3矩阵:
Eigen::Quaternionf quats(path.block<3,3>(0, 0));
甚至:
Eigen::Quaternionf quats(path.topLeftCorner<3,3>());