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>());