晓月_角度旋转(一)

发表于2016-09-20
评论0 1.3k浏览
  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;
}

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: