向量的基本定义
数学定义
向量就是一个数列,是一个只有大小和方向的一个数学量,和标量不同,标量是一个只有大小的量。向量的记法如下:
行向量:a=\(\begin{bmatrix}1&2&3\end{bmatrix}\)
列向量:a=\(\begin{bmatrix}1\\2\\3\end{bmatrix}\)
几何定义
向量是有大小和方向的有向线段。向量和点不同点表示了一个固定的位置然而向量是没有位置的,你画在任何地方都行,因为向量表示它在各个方向上的位移关系。向量的几何表示如下图:
向量的运算
负向量
负向量就是在一个向量的前面加上一个负号。例如:a=\(\begin{bmatrix}1&2&3\end{bmatrix}\),它的负向量就是\(\begin{bmatrix}-1&-2&-3\end{bmatrix}\)
运算法则
-\(\begin{bmatrix}a_1&a_2&\cdots&a_n\end{bmatrix}\)=\(\begin{bmatrix}-a_1&-a_2&\cdots&-a_n\end{bmatrix}\)
几何解释
向量变负,将得到一个和原向量大小相等,方向相反的向量。如下图:
标量与向量的乘法
向量与标量相乘,结果将得到一个与原向量平行,但长度不同或方向相反的向量。
运算法则
将向量中的每个元素和标量相乘。公式如下:
\[k\begin{bmatrix}a_1\\ a_2\\ \vdots\\a_n\end{bmatrix}=\begin{bmatrix}ka_1\\ ka_2\\ \vdots\\ka_n\end{bmatrix}\]
几何解释
按照k的缩放因子进行缩放,如下:
向量的加法和减法
向量相加和相减的前提是两向量维度相同。结果向量的维度和原向量相同。
运算法则
将对应的向量元素相加。公式如下:
\[\begin{bmatrix}a_1\\ a_2\\ \vdots\\a_n\end{bmatrix}+\begin{bmatrix}b_1\\ b_2\\ \vdots\\b_n\end{bmatrix}=\begin{bmatrix}a_1+b_1\\ a_2 + b_2\\ \vdots\\a_n+b_n\end{bmatrix}\]
减法的操作可以转换为加法:a-b=a+(-b)
几何解释
向量点乘(内积)
运算法则
向量点乘就是对应分量乘积的和,其结果是一个标量:
\[\begin{bmatrix}a_1\\ a_2\\ \vdots\\a_n\end{bmatrix}\cdot\begin{bmatrix}b_1\\ b_2\\ \vdots\\b_n\end{bmatrix}=a_1b_1+a_2b_2+\cdots+a_nb_n\]
用连加符号简写为:
\(a\cdot b=\sum_{i=1}^{n}a_ib_i\)
几何解释
一般来说,点乘结果描述了两个向量的“相似”程度,点乘结果越大,两向量越相近。如下图:
点乘等于向量大小与向量夹角的\(cos\)值的积:
\(a\cdot b=||a|| ||b||cos{\theta}\)
向量叉乘(叉积)
运算法则
向量叉乘得到一个向量且不满足交换律,点乘满足交换律。公式如下:
\[\begin{bmatrix}x_1\\y_1\\z_1\end{bmatrix}\times\begin{bmatrix}x_2\\y_2\\z_2\end{bmatrix} =\begin{bmatrix}y_1z_2 -z_1y_2\\z_1x_2-x_1z_2\\x_1y_2-y_1x_2\end{bmatrix}\]
几何解释
(1).叉乘得到的向量垂直于原来的两个向量,如下图:
\(a\times b\)的长度等于向量的大小与向量的夹角\(sin\)值的积,如下:
\[||a\times b||=||a||||b||sin{\theta}\]
已经证明了\(a\times b\)垂直于a,b。但是垂直于a,b有两个方向。\(a\times b\)指向哪个方向呢?通过将a的头与b的尾相连,并检测从a到b是顺时针还是逆时针。如果在左手坐标系中,左手四个(除大拇指)指母重贴与a,b向量的方向大拇指指向的方向就是\(a\times b\)垂直的方向。右手坐标的也相同只是使用右手来判断。
(2).\(||a\times b||\)也等于两向量组成的平行四边形的面积。
向量大小(长度或模)
运算法则
公式如下:
\[||v||=\sqrt{v_1^2+v_2^2+\cdots+v_n^2}\] 或 \[||v||=\sqrt{\sum_{i=1}^{n} v_i^2}\]
距离公式
同一坐标系中的两个点的距离,实际上可以看作是两个点构成的一个向量,那么两个点的距离就等于此向量的模长。
运算法则
距离\((a,b)=||b-a||=\sqrt{(b_x-a_x)^2+(b_y-a_y)^2+(b_z-a_z)^2}\)
标准化向量
对于许多向量,我们只关心它的方向而不是大小。在这种情况下使用单位向量将会非常方便。单位向量就是大小为1的向量,单位向量也被称之为标准向量或更简洁地称为法线。
运算法则
对于任意非零向量v,都能计算出一个和v方向相同的单位向量\(v_{norm}\)。这个过程被称作向量的标准化,要标准化向量,将向量除以他的大小(模)即可。公式如下:
\[v_{norm}=\frac{v}{||v||},v\ne 0\]
注意:零向量是不能被标准化的,因为除零是没有定义的。
几何解释
如下图:
向量投影
给定两个向量v和n,能将v分解成两个分量:\(v_{||}和v_{\perp}\)。他们分别平行和垂直于n,并满足\(v=v_{||}+v_{\perp}\)。一般称平行分量\(v_{||}\)为v在n上的投影。
运算法则
公式如下:
\[v_{||}=n\frac{v\cdot n}{||n||^2}\] \[v_{\perp}=v-v_{||}\]
几何解释
如下图:
总结
向量是用来表示方位和距离的,也就是映射到每个轴的偏移。向量的常规运算有:向量与标量乘法,向量加减法,向量点乘,向量叉乘。
参考文献
[1] Fletcher Dunnlan Parberry. 3D数学基础:图形与游戏开发.北京:清华大学出版社.2005.1.