BZ易风

导航

 

三角函数

正弦函数

对边比斜边

余弦函数

临边比斜边

角度和弧度

都是度量角的单位

完整圆角度是:360°

完整圆的弧度是:2π rad

角度和弧度的互换:

  • 1°=0.01745 rad
  • 1rad=57.3°
  • 弧度转角度:Rad2Deg*(要转的弧度)
  • 角度转弧度:Deg2Rad*(要转的角度)

Unity函数一般使用弧度

三角函数曲线

正弦曲线

 

 

余弦曲线

 

 

特殊值

 

 

Mathf函数

求正弦

Mathf.Sin(弧度值);

求余弦

Mathf.Cos(弧度值)

反三角函数

作用

通过反三角函数计算正弦值或余弦值对应的弧度值

Asin 反正弦

Mathf.Asin(正弦值),返回值是对应的弧度

Acos反余弦

Mathf.Acos(0.5f),返回值是对应的弧度

线性差值

Mathf.Lerp(a,b,t)  a是起始数值,b是结束数值,t是差值系数,在0-1之间,如果小于0,则等于0,如果大于1,则等于1

result=a+(b-a)*t

t=0 result=a

t=1 result=b

0<t<1 则 a<result<b

变速靠近物体

a= Mathf.Lerp(a,b,t);

t不变

a=Lerp(a,b,t)

a逐渐趋向于b,a的变化是先快后慢,无限接近于b

    void Update () {
        #region 差值
        float x = Mathf.Lerp(transform.position.x, target.position.x, t * Time.deltaTime);
        float y = Mathf.Lerp(transform.position.y, target.position.y, t * Time.deltaTime);
        float z = Mathf.Lerp(transform.position.z, target.position.z, t * Time.deltaTime);
        transform.position = new Vector3(x, y, z);
        #endregion
    }

匀速变化

t改变 a b不变

只要t是匀速变化的,结果就是匀速变化的

    void Update () {
 
        #region 匀速
        t += Time.deltaTime;
        float x = Mathf.Lerp(ax,target.position.x,t);
        float y = Mathf.Lerp(ay, target.position.y, t);
        float z = Mathf.Lerp(az, target.position.z, t);
        transform.position = new Vector3(x,y,z);
        #endregion

    }

坐标系

世界坐标系

原点为世界的中心点

世界坐标系的三个轴向是固定的

物体坐标系

原点为物体的中心点

物体右方为x轴的正方向

物体上方为y轴的正方向

物体前方为z轴的正方向

惯性坐标系

原点为物体的中心点

世界的x轴为x轴正方向

世界的y轴为y轴的正方向

世界的z轴为z轴的正方向

摄像机坐标系(观察坐标系)

摄像机坐标系也叫观察坐标系

原点为摄像机的中心点

每个引擎的轴向约定不同

Unity观察坐标系使用右手坐标系

向量

标量

只有大小,没有方向

向量

既有大小,又有方向的矢量

向量在空间中的表示

长度代表向量的大小

箭头代表向量的方向

给定一个向量,在空间中有任意条,向量可以随意移动

Vector3用途

两种几何意义

transform.position,位置/坐标

transform.forword  方向

求两点间的向量

 

 

零向量

几何意义:唯一一个大小为0的向量

Vector3.zero

负向量

几何意义:与原向量大小相等,方向相反

[x,y,z]负向量为:[-x,-y,-z]

向量大小

模代表向量的大小

计算模长:dir.magnitude  向量变量名.magnitude;

 

 

 

几何解释:如果向量由两点求得,那么计算向量的模长就是在求两点间的距离

平方模:x²+y²+z²,相对于求模,少了开根号的过程,效率更高

函数用法:向量变量名.sqrMagnitude;

单位向量

模长为1的向量,就是单位向量

几何解释:只需要方向,而不想让模长对运算结果有影响时使用的单位向量

向量变量名.normalized;

向量加法

A(x1,y1,z1)

B(x2,y2,z2)

A+B=(x1+x2,y1+y2,z1+z2)

Vector3+Vector3

位置+位置

无意义

位置+向量

位置+向量=向量+位置

将目标点按照向量的方向移动向量的模长,得到新的位置

向量+向量

向量A+向量B

将A向量的终点和B向量的起点进行连接,再从A向量的起点指向B向量的终点

向量减法

A[x1,y1,z1]

B[x2,y2,z2]

A-B=[x1-x2,y1-y2,z1-z2]

Vector3-Vector3

位置-位置

结果是两点之间的向量

a-b=-(b-a)

向量-向量

结果是向量

A-B:先连接两个向量的起点,从B向量的终点指向A向量的终点

 

位置-向量

结果是位置

将目标点按照向量的负方向,移动向量的模长距离,得到的新位置

 

posted on 2020-12-22 18:14  BZ易风  阅读(197)  评论(0编辑  收藏  举报