要浮动的四元数分量(本征)

Quaternion Components to Float (Eigen)

我有一个 Eigen::Quaternion 我想把它转换成 组件 x, y, z, wdouble.

像这样的简单分配不起作用,因为组件的类型为 Scalar。这是我试过的:

Eigen::Quaternion<float> q;
q = Eigen::AngleAxis<float>(2, Eigen::Vector3f(0,0,1));
float x = q.x;

Scalar 类型的文档薄弱。有人知道怎么做吗?

Scalar 不是数据类型,而是 Eigen::Quaternion.

的模板参数

所以如果你声明 Eigen::Quaternion<float> q 这意味着对于这个四元数,Scalar 设置为 float

您在示例代码中遗漏的是,要提取 x 组件,您必须调用名为 x().[=20= 的 方法 ]

以下示例显示了如何操作:

#include <iostream>
#include <Eigen/Geometry> 

int main()
{
  Eigen::Quaternion<float> q;
  q = Eigen::AngleAxis<float>(2, Eigen::Vector3f(0,0,1));
  float x = q.x();

  std::cout << x << std::endl;
}