其他分享
首页 > 其他分享> > unity学习之3D数学

unity学习之3D数学

作者:互联网

3D数学

   数学公式:X平方加Y平方加Z平方开根号
     向量的模长API:Vector3.Magnitude
     模的平方API    :Vector3.sqrtMagnitude;
     向量的方向:Vector3.Normalize
     明白向量相加或者相减的意义,并且能够画出来图形
     相减(向量的方向会指向被减向量向量的起点是俩个向量的交点)     
     应用:求两个点之间的距离和方向   
     相加:构成平行四边形对角线就是这两个向量的和方向和这个一直
     应用:物体的移动
     
     向量和标量的乘除的作用就是把该向量进行延伸或者进行缩短 
     
      角度的度量方式:角度Degree与弧度radian
      角度转化为弧度API:弧度=角度数*Mathf.Deg2Rad;
      弧度转化为角度API:角度数=弧度数*Mathf.Rad2Deg;
      
      点乘几何意义:a*b=|a|*|b|*cos<a,b>
      点乘的API:float dot=Vector3.Dot(a.Normalize,b.Normalize);
      作用:求两个向量之间的夹角,这两个向量都要做Normalize处理
      应用:float dot=Vector3.Dot(a.Normalize,b.Normalize)//这里求出的是夹角的值然后利用反余弦进行求角度
                 float angle=Math.ACos(dot)*Mathf.Red2Deg;//值->弧度->角度
      更简单的方法是float  Vector3.Angle (Vector3 from, Vector3 to) 
               
      叉乘几何意义:结果为俩个向量所组成的平面的垂直向量,模长为两个向量的模长的乘积在夹角的正弦值         
      应用于:创建一个垂直于平面的向量,判断两条向量的相对位置(在第一象限内创建一个平行于Y轴的正半轴的向量,在第四象限中,创建一个与Y轴负半轴的向量)
              
     欧拉角:(1)使用三个角度来保存方位
                  (2)X与Z轴沿着自身的坐标轴进行旋转Y沿着世界的坐标轴进行旋转
                    API:Vector3 enlurAngle=this.transform.enlerAngles;
     致命的缺点:万向节死锁(物体沿着X轴旋转正负90度时,自身坐标系Z轴和世界坐标系的Y轴将会重合,此时在沿着Y轴或者Z轴进行旋转是会失去一个自由度)
   
    四元数:常用的API(qt代表一个四元数)
    Vector3 euler=qt.eulerAngles();将四元数转化为欧拉角
    Quatertion qt=Quaternion.Euler(0,30,0);将欧拉角转换为四元数(可以避免万向节死锁)
    Quaternion.AngleAxis();适用于轴角模式的旋转
    Quaternion.LookRotation(target.postion-this.transform.postion);注视旋转此时Z轴指向目标进行旋转,会返回一个向量
    Quaternion.Lerp(transform.rotation,用LookRotation求出来的一个目标位置,速度);速度由快到慢安两点间的比例进行移动,无限接近目标但是不能够到达
    Quaternion.RotateTowards();参数和Lerp一样,但是匀速进行旋转
    Quaternion.FromToRotation(轴向,目标位置减去当前位置)
  
   四元数的运算:(1)四元数左乘一个向量,表示该向量按照四元数表示的角度进行旋转
                           (2)四元数相乘可以进行组合添加效果
   向量的API(Vector3)
 
   Vector3.Angle();用于求两个向量之间的夹角,返回一个较小的角度,范围是0到180
   Vector3.Cross();叉积用来求两个向量的夹角
   Vector3.Dot();点积,用于创建一个垂直于平面的一个向量
   Vector3.Distance();用于求两点之间的距离
   Vector3.Lerp();差值比列进行旋转
   Vector3.SmoothDamp(当前位置,目标位置,使用时要声明变量(ref),时间);速度由慢->快->慢
   Vector3.project();投影,(求一个向量在另一个向量上的投影)
   重点函数Vector3.LerpUnclamped(begin,target,curve.Evaluate(x)

标签:Vector3,Quaternion,旋转,四元,unity,API,数学,向量,3D
来源: https://blog.csdn.net/weixin_43333566/article/details/94829824