Done is better than perfect

0%

向量

向量的基本定义

数学定义

向量就是一个数列,是一个只有大小和方向的一个数学量,和标量不同,标量是一个只有大小的量。向量的记法如下:

行向量: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\]

注意:零向量是不能被标准化的,因为除零是没有定义的。

几何解释

如下图: 这里写图片描述

向量投影

给定两个向量vn,能将v分解成两个分量:\(v_{||}和v_{\perp}\)。他们分别平行和垂直于n,并满足\(v=v_{||}+v_{\perp}\)。一般称平行分量\(v_{||}\)vn上的投影。

运算法则

公式如下:

\[v_{||}=n\frac{v\cdot n}{||n||^2}\] \[v_{\perp}=v-v_{||}\]

几何解释

如下图: 这里写图片描述

总结

向量是用来表示方位和距离的,也就是映射到每个轴的偏移。向量的常规运算有:向量与标量乘法,向量加减法,向量点乘,向量叉乘。

参考文献

[1] Fletcher Dunnlan Parberry. 3D数学基础:图形与游戏开发.北京:清华大学出版社.2005.1.