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)