[Eigen]四元数Eigen::Quaterniond的构造方式

测试结果

使用四个double构造Eigen::Quaterniond时,顺序为wxyz
使用一个长度为4double*构造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;
}

终端输出

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值