晓月_角度旋转(一)
发表于2016-09-20
U3D的角度系统好像和高中学习的不同。
首先是旋转的方向就不一样。高中所学习的角度是逆时针进行旋转,而unity3d里面则是顺时针进行计算的。
其次就角度的起始值不一样,高中的水平轴为0度,而U3D当中则是以Z轴为0度起始的。
如果角度的匹配不一样的话,那么计算出来的数据也会不一样。因为自己想写一个函数,由欧拉角直接得到他的方向向量,这样可以制作一个物体环绕的效果。
我想到一种方法就是采用化归的思想,把U3D的坐标转换成原来高中所对应的坐标,然后采用正余弦进行计算出相应的方向向量。
U3D的0度 = 高中的90度
U3D的90度 = 高中的0度
U3D的180度 = 高中的-90度
U3D的270度 = 高中的180度
//好像可以得到这个公式
高中 = 90 - U3D ;
需要注意一下的就是 Math计算的时候往往是弧度radian 而不是角度,所以还需要进行一下弧度角度转换
1 2 3 | float radian = eular * Mathf.PI / 180; x = 高中弧度.cos z = 高中弧度.sin |
1 2 3 4 5 6 7 8 9 10 | public static Vector3 eularToPostion2( float eular) { //X的位置就是COS eular = 90 - eular; float radian = eular * Mathf.PI / 180; Vector3 pos = new Vector3(); pos.x = Mathf.Cos(radian); pos.z = Mathf.Sin(radian); pos.y = 0; return pos; } |