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