Uniity基础——Mathf类、3D数学类补充

 Mathf

  3D数学

  1. Mathf 类

     数学操作方法:

     1. 角度与弧度值、正无穷大、负无穷大

        Deg2Rad

        Rad2Deg

        Infinity

        NegativeInfinity

     2. 三角函数

        Sin( 30 )

        Cos()

        .....

     3. 四舍五入、求绝对值、开平方、最大|小数、

        Round()|Ceil()|Floor()

        Abs()

        Sqrt()

        Max()|Min()

--------------------------------------------------------

 

  3D数学

  

  1.向量(掌握)

   

 

  2.Vector3 (掌握)

 

 

  3.矩阵(不介绍)

 

 

  4.四元数

 

---------------------------------------------------------

  第一点:向量

  1) 向量的含义:有方向有大小

  2)向量:二维,三维,四维....

  3) Unity中涉及的向量:三维向量

  4)Unity中三维向量的创建方式

  5)Unity中对向量的基本运算(加,减,乘,除)

 

  ( x, y, z )

 

   x: 表示在水平方向上的分量

   y: 表示在垂直方向上的分量

   z: 表示深度

 

  ********************************************************

  二维向量的基本运算:

 

  V1: ( 1,2 )

  V2: ( 10,20 )

 

  V1+V2 两个向量和: (1+10,2+20)===》(11,22)

  V1-V2 两个向量差:  (1-10,2-20)  ===> (-9,-18)

  V1*V2 两个向量积:  (1*10,2*20)   ===》(????,????)

 

 ------------------------------------------------------

  三维向量 :
 1. 如何表示一个三维向量:

    放在一个小括号中,小括号中有三个数据,

    (x,y,z),x放在最前面,y中间,z放最后

   

    x: 表示在水平方向上的分量

    y: 表示在垂直方向上的分量

    z: 表示深度

 

   V1:  ( 1,2,3 )----- Vector3

   V2:  ( 10,20,30 )---Vector3

  2.如何构建一个三维向量

    Vector3  v1 = new  Vector3( 1,2,3 );

 

    1). 通过两个参数的构造方法:

        Vector3(x,y),这时,z分量默认是0

        如: Vector3  v =  new Vector3( 1,2 )

            等价于:

            Vector3  v  =  new  Vector3(1,2,0)

 

    2). 通过三个参数的构造方法:

        Vector3( x,y,z)

        如: Vector3  v =  new Vector3(1,2,0)

   

    3). 通过无参数的构造方法,然后访问x,y,z并为赋值

        Vector3  v  =  new Vector3();

        v.x = 1;

        v.y = 2;

        v.z = 3;

 --------------------------------------------------------

  3. Vector3 常用的方法(掌握)

    0)  x  : 表示一个三维向量中的 x 分量

    1)  y  :表示一个三维向量中的 y 分量

    2)  z  :表示一个三维向量中的 z 分量

    3) 获取向量的长度 : magnitude

    4) 向量的标准化:normalized

    5) 向量的运算(加法,减法):

         +    -    *    /    ==     !=  

        V1 + V2

        V1 - V2

        V1 * float n

        V1 / float n

        V1 == V2

        V1 != V2

        

    ---------------------------------------------------

    1) 求两个向量的距离: Distance( )

    2)  求两个向量的叉乘:Cross( )   

 

         -结果是一个Vector3。

         -两个向量长度相乘,再乘以两个向量夹角的正弦值。

          例如:V1( 10,20,3 ) , V2( 20,2,10 )

          第1步:求V1和v2向量的长度,v1Length,v2Length

          第2步:两个向量长度相乘 ,存到 mulLength中

          第3步:求两个向量的夹角值,存到 angleValue中

          第4步:夹角求了之后,再求夹角的正弦值 sinValue中

          第5步:第2步的结果和第4步的结果相乘

    3)  求两个向量的点乘:Dot()

         -结果是一个浮点数。

         -两个向量长度相乘,再乘以两个向量夹角的余弦值。

    4) 求两个向量间的夹角:Angle( )

 

    4)  Lerp() : 获取一个指定范围的线性值。案例

    4)  SmoothDamp(): ----

    5)  .....

       

      V1: (10,20,30)

      V2: (40,20,70)

 

    案例:

 

    Vector3  :   a

    Vector3  :   b

 

   

    Vector3.Lerp( a, b ,t );  --- 新向量

   

   返回什么样的新向量:

   1) t = 0     ---- a就是返回的新向量

   2)  t =1      ---- b就是返回的新向量

   3) 0.345666  

 

 

   使用场景: 平缓移动  或  相机跟随效果

posted @ 2019-09-10 19:18  Winward_King  阅读(248)  评论(0编辑  收藏  举报