Unity中 欧拉角 旋转矩阵的变换

一.Unity中的欧拉角旋转

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

 

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

 

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

二.Unity中的旋转矩阵

 

  Rx,Ry,Rz

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

RxUnity中 欧拉角 旋转矩阵的变换

Unity中 欧拉角 旋转矩阵的变换

 

Ry

Unity中 欧拉角 旋转矩阵的变换

 

Rz: 

Unity中 欧拉角 旋转矩阵的变换

 

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

  合并旋转矩阵 R

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

R: 

(c:cos s:sin)

 Unity中 欧拉角 旋转矩阵的变换

 

三.旋转矩阵转欧拉角

  

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

 Unity中 欧拉角 旋转矩阵的变换

 

 Unity中 欧拉角 旋转矩阵的变换

 

 

 

 

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场景

 

上一篇:zabbix 网络模板自动发现端口时,过滤掉某些特定规则的端口,减少item的方法


下一篇:System.IO.Pipelines