Eigen::Quaternionf,如何访问这些值?
Eigen::Quaternionf, how can I access the values?
我正在尝试在现有项目中使用 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
我在这里错过了什么?
谢谢。
问题不在于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>());
我正在尝试在现有项目中使用 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
我在这里错过了什么?
谢谢。
问题不在于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>());