角的度量方式

角度Degree与弧度Radian
角度与弧度.png

两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当弧长等于圆周长的360分之一时,夹角为一度。弧长等于圆的半径时,夹角为1弧度。
角度与弧度的换算
PI = 180度 1弧度=180度/PI 1角度=PI/180度
角度=>弧度: 弧度=角度数PI/180
API: 弧度=角度数
Mathf.Deg2Rad
弧度=>角度: 角度=弧度数180/PI
API: 角度=弧度数
Mathf.Rad2Deg
在日常生活中角度制应用比较广泛。
在三角函数中弧度制可以简化计算。

三角函数

  • 建立了直角三角形中角与边长比值的关系。
  • 可用于根据一边一角,去求另一边。
  • 公式:
    • 正弦 sin x = a/c
    • 余弦 cos x = b/c
    • 正切 tan x = a/b
  • API:
    • Mathf.Sin(float radian)
    • Mathf.Cos(float radian)
    • Mathf.Tan(float radian)

三角函数.png

反三角函数

  • 反正弦、反余弦、反正切等函数的总称
  • 可用于根据两边长,求角度。
  • 公式:
    • 反正弦 arcsin a/c = x
    • 反余弦 arcsin b/c = x
    • 反正切 arctan a/b = x
  • API:
    • Mathf.Asin(float radian)
    • Mathf.ACos(float radian)
    • Mathf.Atan(float radian)

      实例

      在unity3d中画出cube北偏西30度,距离10的坐标v

      根据三角函数求出坐标v相对于cube在z轴和x轴的偏移量,然后用在cube坐标的基础上,x加上x轴偏移量,z加上z轴偏移量得出的坐标就是v坐标了。但是这样求得的坐标,当cube旋转时v坐标是不会变的,如果需要让v坐标会随着cube的旋转而改变,可以用cube.transform.transformPoint(x偏移量,0,z偏移量)将v相对cube的坐标转为世界坐标,这样当cube旋转时,v的坐标也会跟着旋转了。脚本如下:

      public class DrawTest : MonoBehaviour
      {
      // Start is called before the first frame update
      public GameObject cube;
      // Update is called once per frame
      void Update()
      {
        Demo();
      }
      private void Demo()
      {
        float xAdd = Mathf.Sin(30 * Mathf.Deg2Rad) * 10;
        float zAdd = xAdd / Mathf.Tan(30 * Mathf.Deg2Rad);
        Vector3 newcube = new Vector3(cube.transform.position.x + xAdd, cube.transform.position.y, cube.transform.position.z + zAdd);
        //Vector3 newcube = cube.transform.TransformPoint(xAdd, 0, zAdd);
        Debug.DrawLine(cube.transform.position, newcube);
        Debug.DrawLine(Vector3.zero, newcube, Color.green);
      }
      }

效果

Vector3 newcube = new Vector3(cube.transform.position.x + xAdd, cube.transform.position.y, cube.transform.position.z + zAdd);
三角函数求坐标.gif

Vector3 newcube = cube.transform.TransformPoint(xAdd, 0, zAdd);
三角函数求坐标2.gif

最后修改:2020 年 01 月 13 日
如果觉得我的文章对你有用,请随意赞赏