测试结果
使用四个double
构造Eigen::Quaterniond
时,顺序为wxyz
使用一个长度为4
的double*
构造Eigen::Quaterniond
时,顺序为xyzw
cout<<Eigen::Quaterniond
时,顺序为xyzw
使用三个double
或者一个长度为3的double*
数组构造Eigen::Vector3d
时顺序均为xyz
测试代码
#include <Eigen/Core>
#include <Eigen/Geometry>
#include <iostream>
using namespace std;
int main()
{
Eigen::Vector3d a_vector3d(1, 2, 3);
Eigen::Quaterniond b_quaterniond(0.493, -0.283, 0.247, 0.785);
double a_data[3] = {a_vector3d.x(), a_vector3d.y(), a_vector3d.z()};
double b_data[4] = {b_quaterniond.w(), b_quaterniond.x(), b_quaterniond.y(), b_quaterniond.z()};
Eigen::Vector3d a_data2vector3d(a_data);
Eigen::Quaterniond b_data2quaterniond(b_data);
cout << "a_vector3d.transpose()_____________________ " << a_vector3d.transpose() << endl;
cout << "a_data ____________________________________ " << a_data[0] << " " << a_data[1] << " " << a_data[2] << endl;
cout << "a_data2vector3d.transpose() _______________ " << a_data2vector3d.transpose() << endl;
cout << "b_quaterniond.coeffs().transpose() ________ " << b_quaterniond.coeffs().transpose() << endl;
cout << "b_quaterniond wxyz ________________________ " << b_quaterniond.w() << " " << b_quaterniond.x() << " " << b_quaterniond.y() << " " << b_quaterniond.z() << endl;
cout << "b_data ____________________________________ " << b_data[0] << " " << b_data[1] << " " << b_data[2] << " " << b_data[3] << endl;
cout << "b_data2quaterniond.coeffs().transpose() ___" << b_data2quaterniond.coeffs().transpose() << endl;
cout << "b_data2quaterniond wxyz ___________________ " << b_data2quaterniond.w() << " " << b_data2quaterniond.x() << " " << b_data2quaterniond.y() << " " << b_data2quaterniond.z() << endl;
return 0;
}