向量(又称适量)是游戏开发中非常重要的概念。是用于描述具有方向和大小两个属性的物理量。
在数学里有大小和方向的量就是向量。在几何中,向量可以用一段有方向的线段表示。
1.向量的运算
(1)加减法:向量的加法(减法)为各个分量的相加(相减)。
a(2,2,3)+b(1,1,1) = c(2+1,2+1,3+1);
a(2,2,3)-b(1,1,1) = c(2-1,2-1,3-1);
作用:改变物体的坐标。
(2) 数乘:向量和一个标量相乘。
|b| 是一个向量的大小,也是一个标量(标量只有大小没有方向相当是一个数值)
|b| =2;标量为2
a(2,2,3)* |b|(2)= c(2*2,2*2,3*2);
a(2,2,3)/ |b|(2) = c(2/2,2/2,3/2);
作用:数乘可以对向量的长度经行缩放,如果|b|>0,向量a的方向不变,如果|b|<0,向量a的方向相反。
(3) 点乘:两个向量点乘得到一个标量,标量等于两个向量长度相乘后再乘两个夹角的余弦。
U*V = |U|*|V|*cosθ
作用:判断两个向量的夹角,
若U*V = 0 , 则向量U,V相互垂直
若U*V > 0 , 则向量U,V夹角小于90°;
若U*V < 0 , 则向量U,V夹角大于90°;
(4) 叉乘:两个向量叉乘得到一个向量(注:点乘是标量),新向量垂直于原来的两个向量,并且长度等于原来两个向量长度相乘后再乘以夹角的正弦。
|U x V| = |U|*|V|sinθ
注意:叉乘不满足交互率
作用:计算垂直于一个平面,三角形的向量,还可以用于判断三角形面片的朝向。
2.Vector3类
在Unity中,和向量有关的类有Vector2,Vector3,Vecoer4等。
Vector3类:
成员变量:x 向量的x分量
y 向量的y分量
z 向量的z分量
normalized 得到单位化后的向量(只读)
magnitude 得到向量长度(只读)
sqrMagnitude 得到向量长度的平方(只读)
常用方法:Cross 向量的叉乘
Dot 向量的点乘
Project 计算向量在另一个向量上的投影
Angle 返回两个向量之间的夹角
Distance 返回两个向量之间的距离
operator + 向量相加
operator - 向量相减
operator * 向量乘以标准量
operator / 向量除以标准量
operator == 若两个向量相等则返回true
operator != 若两个向量不等则返回true