eigen矩阵操作练习

//
// Created by qian on 19-7-16.
//

/* 相机位姿用四元数表示 q = [0.35, 0.2, 0.3, 0.1] x,y,z,w
 * 注意:输入时Quaterniond(w,x,y,z) W 在前!!!
 * 实现:输出四元素对应的旋转矩阵,旋转矩阵的转置,
 * 旋转矩阵的逆矩阵,旋转矩阵乘以自身的转置,验证旋转矩阵的正交性
 * Vector3.normalized的特点是当前向量是不改变的并且返回一个新的规范化的向量;
 * Vector3.Normalize的特点是改变当前向量,也就是当前向量长度是1
*/

#include <iostream>
#include <eigen3/Eigen/Core>
#include <eigen3/Eigen/Dense>
#include <iomanip>
using namespace std;
using namespace Eigen;

int main(int argc, char** argv) {
    cout << "作业2:eigen运算" << endl;
    Quaterniond q = Quaterniond(0.1, 0.35, 0.2, 0.3).normalized();//初始化四元数,并归一化
    cout << "归一化后的四元素矩阵:"<<endl << q.x()<<" "<<q.y()<<" "<<q.z()<<" "<<q.w()<< endl;
    Matrix3d matrix_T = q.toRotationMatrix();
    cout << "四元数的旋转矩阵:" << endl << matrix_T << endl;
    Matrix3d matrix_transposeT = matrix_T.transpose();
    cout << "旋转矩阵的转置:" << endl << matrix_transposeT << endl;
    Matrix3d matrix_invT = matrix_T.inverse();
    cout << "旋转矩阵的逆矩阵:" << endl << matrix_invT << endl;
    Matrix3d matrix_T1 = matrix_T * matrix_transposeT;
    cout << "旋转矩阵乘以自身的转置:" << endl << matrix_T1 << endl;
    // 验证旋转矩阵的正交性用定义:直接计算 AA^T, 若 等于单位矩阵E, 就是正交矩阵
    cout.setf(ios::fixed);//用定点格式显示浮点数;
    cout << "验证旋转矩阵的正交性:" << endl
         << fixed << setprecision(5) << matrix_T1<< endl;//setprecision(5):显示小数点后5位
    cout.unsetf(ios::fixed);//关闭
    cout << "matrix_T * matrix_transposeT 是单位矩阵,即旋转矩阵是正交矩阵";
    return 0;
}

 

cmake_minimum_required(VERSION 3.14)
project(SlamPractice)


#添加头文件
INCLUDE_DIRECTORIES(“usr/include/eigen3”)
set(CMAKE_CXX_STANDARD 11)

add_executable(SlamPractice main.cpp practice2.cpp)

 

转载于:https://www.cnblogs.com/long5683/p/11195354.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值