Eigen :: Quaternionf,我该如何访问这些值?

时间:2016-10-03 20:14:04

标签: c++ eigen quaternions

我正在尝试在现有项目中使用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

我在这里缺少什么?

感谢。

1 个答案:

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