Unity3D-----三维数学(向量)

一、向量

1、什么是向量

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

2、向量的形式

三维向量,例如(1,2,3)
二维向量,例如(4,2)
在这里插入图片描述

3、向量的大小

  • 向量的大小即为模

  • 三维向量模的大小计算公式:√(x2+y2+z2

  • API : float dis=vector.magnitude

  • 模的平方 vector.sqrMagnitude

  • 在编写脚本时,比较两向量的模长,推荐使用模的平方进行比较,因为平方根的计算耗时长

4、向量的方向

  • 获取向量的方向也称 “标准化向量” 或 “归一化向量”;即获取该向量的单位向量
  • 单位向量:大小为1的向量
  • 计算公式: V / |V|===(向量/模长)
  • 几何意义:将该向量拉长或者缩短,使模长等于1
  • API: Vector3 vector2=vector1.normalized
    – vector2为vector1的单位向量
    vector1.Normalize();将vector1自身设置为单位向量

二、向量运算

1、向量相减

  • 等于各分量相加减
  • 公式:[x1,y1,z1]-[x2,y2,z2] = [x1-x2,y1-y2,z1-z2]
  • 几何意义:向量a与向量b相减,结果理解为以b的终点为始点,以a的终点为终点的向量,方向由b指向a
  • 应用:计算两点之间的距离和相对方向
    在这里插入图片描述

2、向量相加

  • 等于各分量相加和
  • 公式: [x1,y1,z1] + [x2,y2,z2] = [x1+x2,y1+y2,z1+z2]
  • 几何意义:向量a与向量b相加,平移使b的始点与a的重点重合,结果为以a的始点为始点,以b的终点为终点的向量
  • 应用:物体移动

3、向量与标量的乘除法

  • 乘法 : 该向量的各分量与标量相乘 k[x,y,z] = [kx,ky,kz]
  • 除法 : 该向量的各分量与标量相除 [x,y,z]/k = [x/k,y/k,z/k]
  • 几何意义 : 缩放向量长度

4、点乘

  • 又称 “点积” 或 “内积”
  • 公式 :各分量乘积合
  • [x1,y1,z1] * [x2,y2,z2]=x1x2+y1y2+z1z2
  • 几何意义: a*b=|a| * |b| * cos<a,b>;两个向量的单位向量相乘后再乘以二者夹角的余弦值
  • API : float dot=Vector3.Dot(va,vb)
  • 应用
    对于标准化过的向量,点乘结果等于两向量夹角的余弦值
    计算两向量的夹角
    float dot = Vector3.Dot(a.normalized,b.normalized);
    float angle = Mathf.Acos(dot) * Mathf.Rad2Deg

5、叉乘

  • 叉乘又称 “叉积” 或 " 外积 "
  • 公式 : [x1,y1,z1] * [x2,y2,z2] = [y1z2-z1y2,z1x2-x1z2,x1y2-y1x2]
  • 几何意义 : 结果为两个向量锁组成面的垂直向量,模长为两向量模长乘积再乘夹角的正弦值
  • API : Vector3 vector=Vector3.Cross(a,b)
  • 应用
    创建垂直于平面的向量
    判断两条向量相对位置

三、三角函数

1、角的度量单位

  • 角度Degree与弧度Radian
    – 两条射线从圆心向圆周射出,形成一个夹角和夹角正对的一段弧。当弧长等于圆周长的360分之一时,夹角为1度。弧长等于圆的半径时,夹角为1弧度。
    在这里插入图片描述
  • 角度与弧度的换算:
    – PI=180度--------1弧度=180度/PI--------1角度=PI/180度
    – 角度=>弧度 : 弧度=角度数 * PI/180
    – API : 弧度=角度数 * Mathf.Deg2Rad
    弧度=>角度 : 角度=弧度数 * 180/PI
    角度=弧度数 * Mathf.Rad2Deg
  • 在三角函数中弧度制可以简化计算

2、三角函数

  • 建立了直角三角形中角与边长比值的关系
  • 可用于根据一边一角,计算另外一边长
  • 公式:
    – (1)、正弦 sinx=a/c
    – (2)、余弦 cosx=b/c
    – (3)、正切 tanx=a/b;
    在这里插入图片描述
  • API : Mathf.Sin(float radian)
  • API : Mathf.Cos(float radian)
  • API : Mathf.Tan(float radian)

3、反三角函数

  • API : Mathf.ASin(float radian)
  • API : Mathf.ACos(float radian)
  • API : Mathf.ATan(float radian)
  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值