旋转矩阵转欧拉角。原理很简单,代码实现也很容易。网上查了一些 ,公式好多写的都是错的
坐标系之间的旋转,可以通过三个角度推导出旋转矩阵,也就是说 3*3大小的旋转矩阵 实际自由度为3
#include<stdio.h>
#include<math.h>
typedef struct {
int row, col;
float **element;
unsigned char init;
}Mat;
Mat *rotationmatrixToEuler(Mat* R, Mat* eu)
{
float sy = sqrt(R->element[0][0] * R->element[0][0] + R->element[1][0] * R->element[1][0]);
bool singular = sy < 1e-6; // If
float x, y, z;
if (!singular) {
eu->element[0][0] = atan2(R->element[2][1], R->element[2][2]) * 180 / PI;
eu->element[1][0]