赞
踩
零向量是非常特殊的一个向量,它是唯一一个大小为0的向量,也是唯一一个没有方向的向量。
2D零向量表示为(0,0),3D零向量表示为(0,0,0)。
在Unity中,用Vector3.zero来表示3D零向量。
每个向量都有一个负向量,满足条件:一个向量和它的负向量相加等于零向量。
向量变负,将得到一个和原向量大小相等,方向相反的向量。
(2,-3,3)的负向量为(-2,3,-3)。即将向量的每个分量都变负。
向量的长度即向量的大小或者向量的模。
向量的大小就是向量各分量平方和的平方根。
对2D向量而言,可以构造一个以该向量为斜边,以x,y分量的绝对值为直角边的直角三角形。可以根据勾股定理得到斜边的长度,即向量的长度。
在Unity中,可以通过Vector3.magnitude计算向量的长度。Vector3.sqrMagnitude则返回向量长度的平方。
Vector3.Distance(A,B)可以计算2个点A,B之间的距离,即返回向量AB或向量BA的长度。等同于(B-A).magnitude或(A-B).magnitude。
向量与标量的乘法,即将向量的每个分量分别与标量相乘。
3D向量与标量相乘:3(1,2,3) = (3,6,9)
向量与非零标量的除法,即乘以该标量的倒数。
3D向量与标量相除:1/3(3,6,9)=(1,2,3)
Unity中使用运算符*来计算与标量的乘法,用运算符/来计算与标量的除法。
单位向量也叫做标准化向量,就是大小为1的向量。
在只关心向量方向,不关心向量大小时,可以使用单位向量,例如求一个面的法线向量时。
对任意的非零向量,我们都可以计算出它的单位向量,即将其归一化(normalization)。
向量的归一化:求得向量的长度后,用向量除以它的长度。
在Unity中,可以使用Vector3.Normalize来归一化向量。使用Vector3.normalized来获得归一化后的单位向量。
只有在两个向量的维度相同时,才可以相加或相减。
向量的加法和减法,即将向量的各个分量相加或相减。
(1,3)+(2,5) = (1+2,3+5) = (3,8)
(1,3)-(2,5) = (1-2,3-5) = (-1,-2)
向量的加法满足交换律:a+b = b+a
向量的减法则不满足交换律:a-b = -(b-a)
向量的加法可以理解成平移向量。
向量的减法则可以理解为平移负向量。
Unity中,使用运算符+来计算向量的加法。使用运算符-来计算向量的减法。
向量与向量的乘法有两种不同的形式,第一种是向量的点积,也叫做向量的内积。
表示为a·b,点不可以省略。
计算时,向量的点积就是对应分量乘积的和,结果为一个标量。
点积的计算公式为a·b=(ax,ay)·(bx,by)=axbx+ayby
(0,2)·(3,3) = 0×3+2×3 = 0+6 = 6
向量的点积满足交换律,即a·b = b·a
向量的点积还可以用来求得一个向量在另一个向量上的投影。
在Unity中,向量的点积可以通过Vector3.Dot来计算。
可以使用Vector3.Angle来获得两个向量之间的夹角的大小。结果在0度到180度之间。
两个向量相乘的第二种方式为向量的叉积,也叫做向量的外积。
表示为a×b,同样,×也不可以省略。
叉积的结果仍是一个向量。
叉积仅可应用于3D向量。
叉积的计算公式为:
a×b=(ax,ay,az)×(bx,by,bz)=(aybz-azby,azbx-axbz,axby-aybx)
(1,2,3)×(-2,-2,3)=(6-(-6),(-6)-3,(-2)+4)=(12,-9,2)
叉积得到的向量垂直于原来的两个向量。
a×b的长度等于向量的大小与向量夹角的sin值的积,也是以a和b为两边的平行四边形的面积的大小。
我们可以通过向量的叉积来得到一个平面的法向量。
还可以通过向量的叉积得到的结果向量的方向来判断向量b是在向量a的顺时针方向还是逆时针方向。
在Unity中,向量的叉积可以通过Vector3.Cross来计算。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。