Unity3D数学之向量基础

向量
1)向量是有大小和方向的有向线段,没有位置。向量的大小就是向量的长度(模),向量有非负的长度。如“向前三步走”、“以50公里/小时向北行驶”都是有方向有速度的向量。向量没有具体位置,但可以描述相对位置和位移。点用来描述位置。
任意一点都可以用从原点开始的向量来表达,如(3,5,1)即可以代表一个点,也可以代表从0,0,0指向该点的一个位移向量。
通过一个点或者两个点都可以确定一个向量。
----
2)向量大小为向量各分量平方和的平方根。代码:dir.magnitude
----
3)向量与标量。标量强调数值,“速度、位移”等是向量;“速率、长度”等是标量。
----
4)标准化向量(法线):许多向量我们不关注其大小只关心其方向,如:“我面向的是什么方向?”标准化(法线)向量即大小为1的向量(3D环境下为一个半径为1的单位球)。代码:dir.normalized。
向量标准化原理:将向量除以它的大小(模)即可。
----
5)向量乘法:
①标量与向量不能相加,但可以相乘。结果仍为一个向量与原方向平行,但长度加倍,方向可能相反。如dir*3;
②向量与向量的乘法有两种:
点乘:点乘等于向量大小与向量夹角Cos值的积,结果是一个标量。点乘结果描述了两个向量的“相似”程度。Vector3.Dot(M,N);
a*b=||a||*||b||*Cos(α);当设定a、b向量为单位向量时(a.forward,b.normalized)则a点乘b的值就是两个向量的夹角Cos(α)的值(-1~1),当重叠时则夹角Cos(α)无限接近于1(0°)
Unity3D数学之向量基础
Unity3D数学之向量基础
叉乘:叉乘仅可用于3D向量。和点乘不一样,点乘得到一个标量并满足交换律;叉乘结果是一个向量且不满足交换律。叉乘得到的向量垂直于原来的两个向量。
Vector3.Cross(M,N)==>||M||*||N||*Sin(α);
叉乘Vector3.Cross(M,N)与Vector3.Cross(N,M);的结果是不同的。在Unity中左手坐标系中,可以使用左手法则,以左手手掌指向M的方向,弯曲四指指向N的方向,此时拇指方向即为叉乘结果的方向,向下为负,向上为正。
Unity3D数学之向量基础
Unity3D数学之向量基础
叉乘最重要的应用就是创建垂直于平面、三角形或多边形的向量。
----
6)向量加减:向量加法满足交换律:a+b=b+a;向量减法不满足交换律:a-b=-(b-a);
a+b等于使b的始点与a的终点重合时,以a的始点为始点,以b的终点为终点的向量。
a-b等于使b的始点与a的始点重合时,以b的终点为始点,以a的终点为终点的向量。
Unity3D数学之向量基础
Unity3D数学之向量基础
根据三角形法则得知,a-b得到的是一个从b到a的位移向量(表示在此方向上移动的一段距离)