本文主要是介绍轴角与旋转矩阵的转换,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、轴角转换成旋转矩阵
C++实现
#include <iostream>
#include <Eigen/Dense>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;int main()
{double theta = M_PI/2;//90度Eigen::Vector3d xyz(1, 0, 0);//x轴Eigen::AngleAxisd rotation_vector(theta, xyz);//Eigen::Matrix3d rotation_matrix = rotation_vector.matrix();Eigen::Matrix3d rotation_matrix = rotation_vector.toRotationMatrix();cout.setf(ios_base::fixed, ios_base::floatfield); //使用定点计数法,精度指的是小数点后面的位数,而不是总位数cout.setf(ios_base::showpoint); //显示小数点后面的0 cout.precision(2); //使用定点计数法,显示小数点后面位数精度cout << rotation_matrix << endl;}
结果:
二、旋转矩阵转换成轴角
C++实现
#include <iostream>
#include <Eigen/Dense>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;int main()
{Eigen::Matrix3d rotation_matrix;rotation_matrix << 1, 0, 0, 0, 0, -1, 0, 1, 0;/*Eigen::AngleAxisd v2;v2.fromRotationMatrix(rotation_matrix);*//*Eigen::AngleAxisd v2;v2 = rotation_matrix;*/Eigen::AngleAxisd v2(rotation_matrix);cout.setf(ios_base::fixed, ios_base::floatfield); //使用定点计数法,精度指的是小数点后面的位数,而不是总位数cout.setf(ios_base::showpoint); //显示小数点后面的0 cout.precision(2); //使用定点计数法,显示小数点后面位数精度cout << "轴角的角度:" << endl << (v2.angle() * 180 / M_PI) <<"度" << endl << "轴:" << endl << v2.axis() << endl;}
结果:
这篇关于轴角与旋转矩阵的转换的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!