c++ - 要 float 的四元数分量(特征值)

标签 c++ eigen quaternions

我有一个 Eigen::Quaternion 我想将其转换为 分量 x、y、z、wdouble

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

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/

相关文章:

c++ - 有没有办法检查一个字符串是否包含 C++ 中的 unicode 字符

c++ - 错误 : 'object' was not declared in this scope (C++)

C++二进制文件 - 一遍又一遍地写入相同的数字

用于快速求解线性系统的 C++ Eigen

javascript - 旋转的方向向量(three.js)

android - 从 Android 陀螺仪获取四元数?

c# - 向四元数添加欧拉角

c++ - 如何找到操作系统的名称?

c++ - 代码不会使用 Eigen 库语法问题进行编译?

c++ - 从较小的矩阵/vector 构建矩阵