我有一个 Eigen::Quaternion
我想将其转换为
分量 x、y、z、w
为 double
。
像这样的简单分配不起作用,因为组件的类型为标量
。这是我尝试过的:
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()
的方法组件.
以下示例展示了如何执行此操作:
#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;
}
关于c++ - 要 float 的四元数分量(特征值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31854009/