.Unity中的欧拉角旋转

Unity中的欧拉角旋转可以分两个角度来看,世界和本地。

World 世界 Z-->X-->Y  :

 

 

 

 

Local 本地 Y-->X-->Z :

 

 

 

.Unity中的旋转矩阵

 

  Rx,Ry,Rz

由于unity中的旋转遵从左手定则,因此x,y,z轴的旋转矩阵为

Rx:

 

Ry

 

Rz: 

 

(其实和右手坐标系 + 右手定则的旋转 是一样的)

  合并旋转矩阵 R

这里合并按照世界的欧拉旋转来搞,因此R = RyRxRz

R: 

 

 

 (c:cos s:sin)

.旋转矩阵转欧拉角

  

由以上公式很好求出旋转矩阵->欧拉角的转换:

 

 

 

 

 

 

 

float x = Mathf.Atan2(-matrix[1, 2], Mathf.Sqrt(matrix[1, 0] *matrix[1, 0] + matrix[1, 1] * matrix[1, 1]));
float y = Mathf.Atan2(matrix[0,2], matrix[2,2]);
float z = Mathf.Atan2(matrix[1,0],matrix[1,1]);

 

 

Demon场景

文档:欧拉角 旋转矩阵的变换.note
链接:http://note.youdao.com/noteshare?id=3c3baa8503519cab67b7b682b368add7&sub=AE4E61A1A7B84D249F152099CAE348F4