Unity3D 数学之向量

Posted Unityyyds

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity3D 数学之向量相关的知识,希望对你有一定的参考价值。

什么是向量

  • 一个数学列表,表示各个维度上有向位移
  • 一个有大小有方向的物理量
  • --大小就是向量的模长。
  • --方向描述了空间中向量的指向。
  • 可以表示物体的位置和方向。

向量的形式

向量的大小(模) 

  • 向量各分量平方和的平方根。
  • ·公式:2x²+y²+z²
  • API: float dis=vector.magnitude;
  • 模的平方vector.sqrMagnitude
  • 因为平方根的计算耗时长,所以效率高于magnitude。
 void Demo1()
          
        Vector3 pos = t2.transform.position;
        //求模长 三种方法 
        float m01 = Mathf.Sqrt(Mathf.Pow(pos.x, 2) + Mathf.Pow(pos.y, 2) + Mathf.Pow(pos.z, 2));
        float m02 = pos.magnitude;
        float m03 = Vector3.Distance(Vector3.zero, pos);
      
        Debug.DrawLine(Vector3.zero, t2.transform.position);
    

 

向量的方向

  • ·获取向量方向也称“标准化向量”,或“归一化向量”;即获取该向量的单位向量。
  • ·单位向量:大小为1的向量。
  • 公式:V/|V|
  • ·几何意义:将该向量拉长或者缩短,使模长等于1
  • .API : Vector3 vector2=vector1.normalized;。
  • -- vector2为vector1的单位向量
  • -- vector1.Normalize();将vector1自身设置为单位向量
  void Demo2()
    
        Vector3 pos = t2.transform.position;
        //获取向量方向
         Vector3 n01 =  pos / pos.magnitude;
         Vector3 n02 = pos.normalized;
        Debug.DrawLine(Vector3.zero, pos);
        Debug.DrawLine(Vector3.zero, n02,Color.red);
    

向量相减 

  • ·等于各分量相加减
  • ·公式:[x₁,y₁,z₁]-[x₂,y₂,z₂]=[x₁-x₂,y₁-y₂,z₁-z₂]
  • 几何意义:向量a与向量b相减,结果理解为以b的终点为始点,以a的终点为终点的向量。方向由b指向a。
  • ·应用:计算两点之间的距离和相对方向。
  • 两条向量相减的结果向量方向指向被减,但是结果向量的起始点是Vector3.zero

 

 void Demo3()
    
        Vector3 relativeDirection = t1.transform.position - t2.transform.position;
        //方向 指向被减向量(前面的)
        //大小 两点间距
        //注意 实际位置要平移到
        Debug.DrawLine(Vector3.zero, relativeDirection);
    

 

 //t3沿着relativeDirection方向移动
        t3.transform.Translate(relativeDirection.normalized);
        //relativeDirection.normalized 获取方向,避免两个物体间距对速度造成影响

向量相加

  • 等于各分量相加和。
  • 公式:[x₁,y₁,z₁] +[x₂,y₂,z₂]=[x₁+x₂,y₁+y₂,z₁+z₂]
  • 几何意义:向量a与向量b相加,平移使b的始点与a的终点重合,结果为以a的始点为始点,以b的终点为终点的向量。
  • 应用:物体移动

 代码与相减同理

以上是关于Unity3D 数学之向量的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D之Vector3.Dot和Vector3.Cross的使用

Unity3D C#数学系列之点积

Unity3D之Vector3.Dot和Vector3.Cross的使用

Unity3D C#数学系列之矩阵基础

unity3d游戏开发学习分享之表面着色器讲解

支持向量机(SVM)之数学公式详细推导