向量
向量定义:既有大小又有方向的量叫做向量。在空间中,向量用一段有方向的线段来表示。应用十分广泛,可用于描述具有大小和方向两个属性的物理量,例如物体运动的速度、加速度、摄像机观察方向、刚体受到的力等都是向量。因此向量是物理、动画、三维图形的基础。
模:向量的长度标准化(Normalizing):保持方向不变,将向量的长度变为1.
单位向量:长度为1的向量。
零向量:各分量均为0的向量
向量运算
加法:向量的加法为各个分量分别相加。在物理上可以用来计算两个里的合力,或者几个速度份量的叠加。
减法:两个向量的减法就是一个向量加上另一个向量相反的向量,多个向量相减同理
数乘:向量与一个标量相乘称为数乘。数乘可以对向量的长度进行缩放,如果标量大于0,那么向量的方向不变,若标量小于0,则向量的方向会变为反方向。
点乘:两个向量点乘得到一个标量,数值等于两个向量长度相乘再乘以两者夹角的余弦值。如果两个向量a,b均为单位向量,那么a.b等于向量b在向量a方向上的投影的长度(或者说向量a在向量b方向上的投影)。
叉乘:求向量的法向量
运算习题
1.有两个点(5,6,7)和(-1,2,-3),计算两个点之间的单位向量
Vector3 v1 = new Vector3(5,6,7);
Vector3 v2 = new Vector3(-1,2,-3);
Vector3 v = v1 - v2;
Debug.Log(v.normalized);
2.有两个点(5,6,7)和(-1,2,-3),计算两个点之间的距离
void Start () {
Vector3 v1 = new Vector3(5,6,7);
Vector3 v2 = new Vector3(-1,2,-3);
float distance = Vector3.Distance(v1, v2);
Debug.Log(distance);
}
3.已知两个向量(3,6,8)和(4,6,3)组成一个平面,计算垂直于这个平面的向量
void Start () {
Vector3 v1 = new Vector3(3,6,8);
Vector3 v2 = new Vector3(4,6,3);
Vector3 v = Vector3.Cross(v3,v4)//叉乘
Debug.Log(v);
}
4.已知两个向量(3,6,8)和(4,6,3),求两个向量的夹角
void Start () {
Vector3 v1 = new Vector3(2,0,0);
Vector3 v2 = new Vector3(-2,0,2);
float dotValue = Vector3.Dot(v1, v2);
float temp = dotValue / (v1.magnitude * v2.magnitude);//求出两个向量的余弦值
float aCosTemp = Mathf.Acos(temp);
float degrees = Mathf.Rad2Deg * aCosTemp;//求出两个向量的角
Debug.Log(degrees);
}