向量
向量数学定义
从数学角度来看向量就是一个数字列表,对程序而言则是数组。
数学上区分向量和标量,比如“速度”和“位移”是向量,“速率”和“长度”是标量。
向量可以从维度上区分,向量可以是任意维度的。比较特殊的是标量,可以认为是一维的向量。在图形学中,经常用到的是2维、3维和4维向量。
向量可以表示为行向量和列向量。水平书写的称为行向量,比如[1, 2, 3]。垂直书写的称为列向量,比如。
向量的几何意义
一个二维向量如下图所示。由图可以看出,向量的定义有两个要素——大小和方向。向量的大小就是向量的长度(模),向量的方向描述向量在空间的中的指向。
向量所代表的位移可以考虑分解成和坐标轴平行的分量,把分量的位移组合起来就可以得到向量作为整体所代表的位移。如下图所示,向量[1, -3, 4]表示一个位移,可以将此位移想象为向右平移1个单位,向下平移3个单位,向前平移4个单位。这些步骤的执行顺序不重要,不同的顺序会得到同样的位移量。
向量和点
“点”用来描述位置,但没有大小和厚度。“向量”描述位移,有大小和方向但没有位置。
对任意的x和y,下图展示了点(x, y)和向量[x, y]之间的关联。可以看出向量[x, y]描述原点到点(x, y)的位移量。
虽然向量和点在概念上完全不一样,但在数学上等价。两个点之间的距离为从一个点到另一个点的向量长度(模),向量长度的计算在下面会提到。
向量运算
零向量
任何集合都存在加性单位元x,对任何元素y,满足y+x=y。N维向量集合的加性单位元是n维“零向量”。例如,三维零向量表示为[0, 0, 0]。
零向量非常特殊,它是唯一大小为零的向量,也是唯一没有方向的向量。可以认为零向量表示的是“没有位移”,就像零标量表示的是“没有数量”一样。
负向量
任何集合都存在加性逆元-x,它和x相加等于加性单位元。对向量而言,每个向量v都存在一个加性逆元-v,它的维数和v一样,满足v+(-v)=0。比如,-[x, y] = [-x, -y]。
负向量的几何解释为,向量变负,将得到一个和原向量大小相等,方向相反的向量。
向量的模
向量的大小被称作向量的长度或模。向量的大小就是向量各分量平方和的平方根。比如对于一个三维向量v,模的计算公式为。
标量和向量的乘法
标量和向量的乘法比较直接,将向量的每个分量与标量相乘即可。应用到三维向量,如:。
标量和向量的乘法需要注意以下几点:
l 标量和向量的乘法优先级高于减法和加法。
l 标量不能除以向量,并且向量不能处以另一个向量。
l 负向量能被认为是乘法的特殊情况,即乘以标量-1。
在几何意义上,向量乘以标量k的效果是以因子|k|缩放向量的长度。
向量标准化
对于很多向量,有时我们只关心方向而不关心大小,这时使用单位向量更方便。
对于任何非零向量,都可以计算出一个和v方向相同大小为1的单位向量,这个过程成为向量的标准化。向量v的标准化公式为:。
在几何意义上,二维向量v的单位向量,是以原点为尾,向量的头将接触到圆心在原点的单位圆,如下图所示。同理,三维向量v的单位向量将接触到单位球。
向量的加法和减法
如果两个向量维数相等,则他们可以相加和相减。向量的加法和减法运算法则很简单,两个向量对应的分量相加和相减即可。
向量的加法满足交互律,即a+b=b+a。向量的减法不满足交换律。
两个向量a和b相加的几何解释为:平移向量,使向量a的头连接向量b的尾,接着从a的尾向b的头画一个向量c即为a和b相加的结果。二维向量的加法如下图所示。
从向量的加法可以解释为什么向量能被解释为与轴平行的位移序列,即:
向量点积
向量的点积记作,向量点积就是对应分量乘积的和, 其结果是一个标量。可定义为:,应用到三维向量,。
需要注意的是,它的优先级高于加法和减法,中间的点乘符号不能省略。
在几何意义上,点积结果描述了两个向量的“相似”程度,点积结果越大,两个向量越近。如下图所示,点积等于向量的大小和向量夹角的cos值的积:。
给定两个向量v和n,能将v分解为两个向量和,它们分别平行和垂直于n,并满足。其中,由可知。
向量叉积
向量的叉积记作,对于三维向量u和v,其叉积定义为。叉积的优先级高于加法和减法,也高于点积。比如,因为点积返回一个标量,而标量和向量是不能叉乘的。叉积满足反交换律,即。
在几何意义上,叉积得到的向量垂直于原来的两个向量,如下图所示。图中向量a和b在一个平面上,向量指向该平面的正上方,垂直于向量a和b。
叉积的长度等于向量的大小和向量夹角的sin值的积,即。
来源:https://www.cnblogs.com/liustdelphi/archive/2013/01/18/2865854.html