要浮动的四元数分量(本征)
Quaternion Components to Float (Eigen)
我有一个 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
类型的文档薄弱。有人知道怎么做吗?
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;
}
我有一个 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
类型的文档薄弱。有人知道怎么做吗?
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;
}