旋轉矩陣與尤拉角之間互換公式

2021-08-20 15:14:11 字數 1337 閱讀 8989

(pai / 180.0 )  //弧度 = 角度 * π  / 180

#define angle   (180.0 / pai )  //角度 = 弧度 * 180 / π

2、旋轉矩陣轉換為尤拉角 

/*** @brief  已知旋轉矩陣求尤拉角

* @param  arr : 旋轉矩陣陣列 n  o  a 

* @retval 尤拉角(弧度值)  偏航角,俯仰角,滾動角

*/float *matrix_eulerian_angle(float *arr)

e[0] = atan2(t[1],t[0]);//ny/nx

e[1] = atan2(-1*t[2],(t[0]*cos(e[0])+t[1]*sin(e[0])));//nz/(nx+ny)

e[2] = atan2((t[6]*sin(e[0])-t[7]*cos(e[0])),(-1*t[3]*sin(e[0])+t[4]*cos(e[0])));//ax-ay/-ox+oy

return e;

}3、尤拉角轉換為旋轉矩陣

/*** @brief  已知尤拉角(角度值)求旋轉矩陣

* @param  arr : 尤拉角(弧度值)  偏航角,俯仰角,滾動角

* @retval 

*/eulerian_angle_matrix(float *arr)

/*n*/

t[0] = 1*(cos(e[0])*cos(e[1]));

t[1] = 1*(sin(e[0])*cos(e[1]));

t[2] = -1*(sin(e[1]));

/*o*/

t[3] = 1*(cos(e[0])*sin(e[1])*sin(e[2])-sin(e[0])*cos(e[2]));

t[4] = 1*(sin(e[0])*sin(e[1])*sin(e[2])+cos(e[0])*cos(e[2]));

t[5] = 1*(cos(e[1])*sin(e[2]));

/*a*/

t[6] = 1*(cos(e[0])*sin(e[1])*cos(e[2])+sin(e[0])*sin(e[2]));

t[7] = 1*(sin(e[0])*sin(e[1])*cos(e[2])-cos(e[0])*sin(e[2]));

t[8] = 1*(cos(e[1])*cos(e[2]));

return t;

}

機械人學中旋轉矩陣與尤拉角之間互換公式及程式

弧度 角度 define pai 3.141592653589793 define radian pai 180.0 弧度 角度 180 define angle 180.0 pai 角度 弧度 180 2 旋轉矩陣轉換為尤拉角 brief 已知旋轉矩陣求尤拉角 param arr 旋轉矩陣陣列 n...

機械人學中旋轉矩陣與尤拉角之間互換公式及程式

弧度 角度 define pai 3.141592653589793 define radian pai 180.0 弧度 角度 180 define angle 180.0 pai 角度 弧度 180 2 旋轉矩陣轉換為尤拉角 brief 已知旋轉矩陣求尤拉角 param arr 旋轉矩陣陣列 n...

推到 旋轉矩陣公式 旋轉矩陣公式推導

1.在二維平面中 如下圖所示,在xoyxoy平面中有一向量op x,y top x,y t,旋轉 角後變為向量op x y top x y t。據圖可得 x op cos y op sin x op cos y op sin 經旋轉 角後有 x op cos op cos cos sin sin x...