我有Eigen::Quaternion
,我想转换它
组件x, y, z, w
到double
。
这样的简单赋值不起作用,因为组件的类型为Scalar
。这就是我试过的:
Eigen::Quaternion<float> q;
q = Eigen::AngleAxis<float>(2, Eigen::Vector3f(0,0,1));
float x = q.x;
Scalar
类型的文档很薄弱。有谁知道怎么做?
答案 0 :(得分:3)
Scalar
不是数据类型,而是Eigen::Quaternion
的模板参数。
因此,如果您为此四元数声明Eigen::Quaternion<float> q
,则Scalar
设置为float
。
您在示例代码中缺少的是提取x
组件,您必须调用名为x()
的方法。
以下示例说明了如何执行此操作:
#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;
}