本系列是slam十四讲的课后作业,如有错误或更好解法欢迎评论或私信笔者
1.验证旋转矩阵是正交矩阵
3.验证四元数旋转某个点后,结果是一个虚四元数(实部为零)
4.旋转矩阵、轴角、欧拉角、四元数的转换关系
5.取矩阵左上角3*3的块
代码部分:
//假设有一个大的Eigen矩阵,想把它的左上角3*3的块取出来,然后赋值给新矩阵。
#include<iostream>
#include<eigen3/Eigen/Dense>
#define SIZE 5
using namespace std;
int main(int argc,char **argv){
int i,j;
Eigen::Matrix<double,SIZE,SIZE>matrix_before;
Eigen::Matrix3d matrix_after;
matrix_before = Eigen::MatrixXd::Random(SIZE,SIZE);
cout<<"The matrix_before is:\n"<<matrix_before<<endl;
for(i = 0;i<3;i++){
for(j = 0;j<3;j++){
matrix_after(i,j) = matrix_before(i,j);
}
}
cout<<"The matrix_after is:\n"<<matrix_after<<endl;
return 0;
}
CMakeLists.txt:
cmake_minimum_required(VERSION 2.8)
project(take_R)
include_directories("/usr/include/eigen3")
add_executable(take_R take_R.cpp)
运行结果