EIgen四元数归一化

记录以下踩的坑。

在对四元数操作的时候,没有进行归一化,所以导致R矩阵非正交的结果。

本来旋转矩阵是正交的,但是如果没有对四元数归一化,生成的旋转矩阵就无法满足正交性。也就是说R^{^{T}} != R^{-1}

贴上代码:

#include <Eigen/Core>
#include <iostream>
#include <Eigen/Geometry>

using namespace std;

int main(){
    Eigen::Quaterniond q = {0.1,0.35,0.2,0.3};
    q.normalize();
    Eigen::Matrix3d R = q.toRotationMatrix();

//    cout << R << endl;
    Eigen::Matrix3d R_transpose = R.transpose();
    cout << R_transpose << endl << endl;

    Eigen::Matrix3d R_inverse = R.inverse();

    cout << R_inverse << endl << endl;

    Eigen::Matrix3d R_zhengjiao = R * R.transpose();
    cout << R_zhengjiao << endl << endl;

    return 0;
}

以下为输出结果:

0.00952381   0.761905   0.647619
  0.304762  -0.619048    0.72381
  0.952381   0.190476  -0.238095

0.00952381   0.761905   0.647619
  0.304762  -0.619048    0.72381
  0.952381   0.190476  -0.238095

           1 -2.57606e-16 -2.62811e-16
-2.57606e-16            1 -1.66533e-16
-2.62811e-16 -1.66533e-16            1

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值