向量的基本概念
向量:既有大小又有方向的量叫做向量。
零向量:各分量都是0的向量。
归一化向量:方向不变,将向量的长度变为1。
单位向量:长度为1的向量(归一化后的向量)。
向量的模:只有长度没有方向。
向量在Unity中的运算
//声明2个向量
Vector3 v1= new Vector3(1,1,1);
Vector3 v2= new Vector3(2,2,2);
向量的加减:将向量的各个分量想加减
//Unity中向量的加减
Vector3 v3_add = v1 + v2;
Vector3 v3_sub = v1 - v2;
向量的数乘:向量与一个标量相乘称为数乘。数乘可以对向量的长度进行缩放,如果标量大于0,那么向量的方向不变,若标量小于0,则向量的方向会变为反方向。
//向量的数乘
Vector3 v3_mul = v1 *2;
点乘:两个向量点乘得到一个标量,数值等于两个向量长度相乘再乘以两者夹角的余弦值。如果两个向量a,b均为单位向量,那么a.b等于向量b在向量a方向上的投影的长度(或者说向量a在向量b方向上的投影),点乘通常用于计算夹角、判断向量方向和计算投影等。
//点乘
float f_Dot = Vector3.Dot(v1, v2);
叉乘:两个向量的叉乘得到一个新的向量,新向量垂直与原来的两个向量,并且长度等于原来向量长度相乘后夹角的正弦值注意:叉乘不满足交换律 即a×b 不等于 b×a,叉乘通常用于计算法线、计算面积、旋转物体等。
//叉乘
Vector3 v3_cross = Vector3.Cross(v1, v2);
Vector3类中的常用方法和属性
//世界坐标系下的向量
//Vector3(0, 0, 1);
Vector3.forward;
//Vector3(0, 0, -1);
Vector3.back;
//Vector3(0, 1, 0);
Vector3.up;
//Vector3(0, -1, 0);
Vector3.down;
//Vector3(1, 0, 0);
Vector3.right;
//Vector3(-1, 0, 0);
Vector3.left;
//Vector3(0, 0, 0);
Vector3.zero;
//Vector3(1, 1, 1);
Vector3.one;
//计算两个向量的距离
float f_distance = Vector3.Distance(v1, v2);
//返回两个向量直接的差值
//第三个参数是一个0到1之间的标量值,代表在两个向量之间的插值比例。
Vector3 v3_lerp = Vector3.Lerp(v1, v2, 0.5f);
//将向量归一化
Vector3 v3_norm = Vector3.Normalize(v1);