unity --21 数学基础---三角函数

角度Degree与弧度Radian

两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一 段弧。当弧长等于圆周长的360分之一时,夹角为1度。
如果弧长等 于圆的半径时,夹角为1弧度。
unity --21 数学基础---三角函数_第1张图片
可见单位弧度的计量比角度要大得多。
API:弧度=角度数Mathf.Deg2Rad
API:角度=弧度数
Mathf.Rad2Deg

日常生活中人类用角度比较多,但是在unity中,计算都是弧度。

三角函数

已知根据一边一角,计算另外一边长。
unity --21 数学基础---三角函数_第2张图片
正弦sin x = a / c;
余弦cos x = b / c;
正切tan x = a / b;

因为unity提供的三角函数参数是弧度,因此如果是角度需要转换一下。
当为直角三角形时:
Mathf.Sin(float radian) : 对边比斜边
Mathf.Cos(float radian) : 临边比斜边
Mathf.Tan(float radian): 对边比临边

反三角函数

已知两边长,计算两边的弧度
unity --21 数学基础---三角函数_第3张图片
反正弦arcsina / c = x;
反余弦arccosb / c = x;
反正切arctana / b = x;

当为直角三角形时:
Mathf.Asin(float f):f是对应的比值a/c
Mathf.Acos(float f):f是对应的比值b/c
Mathf.Atan(float f):f是对应的比值a/b

应用

通常用来计算世界坐标系中的位置。
transform.TransformPoint 其功能是把本地坐标转换为世界坐标。
本地坐标的原点就是该物体的轴心点,所以物体在世界中放置位置不同,其原点的世界坐标也不同,但其作为本地坐标原点是不变的。

练习:计算一个物体右前方30°,10米远的坐标。
解: 题目给出的条件只能是本地坐标,
unity --21 数学基础---三角函数_第4张图片
sin30°=a/10; a为x轴
cos30°=b/10;b为z轴
a=sin30°10; b=cos30°10;
代码

float a = Mathf.Sin(30 * Mathf.Deg2Rad)*10;
float b = Mathf.Cos(30 * Mathf.Deg2Rad)*10;
Vector3 worldPoint= transform.TransformPoint(a, 0, b);

你可能感兴趣的:(游戏引擎)