2.1 向量和其它无聊东西的数学定义

对数学家来说,向量就是一个数字列表,对程序员来说向量可以数组(Array)表示,但在计算机的图形开发中我们侧重于向量的几何表示。数学家会区分向量和标量(Scalar)。

  • 向量:指具有大小和方向的量。如:速度(Velocity)和位移(Displacement)。

  • 标量:只具有数值大小,而没有方向等其他意义,部分有正负之分。如:速率(Speed)和距离(Distance)。

  • 向量的维度:向量的维度表示向量中元素的个数。一个元素就是一维向量,两个数元素就是二维向量,三个元素就是三维向量…

  • 向量表达:在书写向量时,有两种表达方式:水平写入和垂直写入,水平写入的向量称为行向量(Row Vector),垂直写入的称为列向量(Column Vector)。

三维列向量

[xyz]\begin{bmatrix} x \\ y \\ z \end{bmatrix}

线性代数:研究向量和矩阵的数学称为线性代数(linear algebra)。在线性代数中,n维度的向量和矩阵是用来求解有n个未知数的方程的。而在这本书中解释了向量和与矩阵的几何与几何意义。

2.2 向量的几何定义

矢量:在数学上讨论的向量,在几何学中可称为矢量。它是具有大小(Magnitude)和方向(Direction)的有向线段。在图形上常用箭头(起点指向终点)表示,因为它捕获了向量的两个定义特征:大小和方向。向量并没有位置信息,大小和方向一致的向量出现在图中的什么位置并没有区别。

  • 向量的大小:向量的长度。向量是可以具有任何非负长度。
  • 向量的方向:向量在空间中指向的方向。方向(Direction)不等于定向(Orientation)。

2.3 使用笛卡尔坐标指定向量

当使用笛卡尔坐标来描述向量时,向量中的每个元素表示对应的坐标的有符号位移。如[2,3]表示X轴方向移动了2,y轴方向移动了3,位移的顺序并没有关系。

零向量:它是唯一的一个大小为零的向量,唯一没有方向的向量,所以它的描绘为点。可以将零向量看作是表达“无位移”概念的一种方式。零向量是作为加法单位元(additive identity,加到别的元素上也不会造成区别的数字)。

2.4 向量与点

点(Points)表示位置,向量(Vectos)表示位移。

2.5 负向量

2.5.1 正式线性代数规则

让向量变负

−[a1a2⋮an−1an]=[−a1−a2⋮−an−1−an]-\begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_{n-1} \\ a_n \end{bmatrix} = \begin{bmatrix} -a_1 \\ -a_2 \\ \vdots \\ -a_{n-1} \\ -a_n \end{bmatrix}

让二维、三维和思维向量变负

−[xy]=[−x−y],−[xyz]=[−x−y−z],−[xyzw]=[−x−yz−w]-\begin{bmatrix} x \quad y \end{bmatrix} = \begin{bmatrix} -x \quad -y \end{bmatrix}, \\ -\begin{bmatrix} x \quad y \quad z \end{bmatrix} = \begin{bmatrix} -x \quad -y \quad -z \end{bmatrix}, \\ -\begin{bmatrix} x \quad y \quad z \quad w \end{bmatrix} = \begin{bmatrix} -x \quad -y \quad z \quad -w \end{bmatrix}

2.5.2 几何解释

向量的位置无关紧要的——只有大小和方向很重要。

image-20230311101100232

2.6 标量和向量的乘法

向量和标量不能相加,但可以将向量乘以标量。结果是一个与原始向量平行的向量,当具有不同的长度和可能相反的方向。

2.6.1 正式线性代数规则

使用标量乘以向量

k[a1a2⋮an−1an]=[a1a2⋮an−1an]k=[ka1ka2⋮kan−1kan]k\begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_{n-1} \\ a_n \end{bmatrix} = \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_{n-1} \\ a_n \end{bmatrix}k = \begin{bmatrix} ka_1 \\ ka_2 \\ \vdots \\ ka_{n-1} \\ ka_n \end{bmatrix}

使用标量乘以三维向量

k[xyz]=[xyz]k=[kxkykz]k\begin{bmatrix} x \\ y \\ z \end{bmatrix} = \begin{bmatrix} x \\ y \\ z \end{bmatrix}k = \begin{bmatrix} kx \\ ky \\ kz \end{bmatrix}

三维向量除以非零标量

vk=(1k)=[vx/kvy/kvz/k]\frac{v}{k}=(\frac{1}{k})=\begin{bmatrix} v_x/k \\ v_y/k \\ v_z/k \end{bmatrix}

  • 当将向量乘以标量时,不必使用任何乘法符号。乘法是通过将两个量并排放置(通常右边的是向量)来表示。
  • 标量和向量的乘法和除法都在任何加法和减法之前发生。
  • 标量无法乘以向量,向量也无法除以另一个向量。
  • 负向量可以被视为将向量乘以-1的特殊情况。

2.6.2 几何解释

在几何上,将向量乘以标量k具有将长度缩放|k|因子的效果。

image-20230311103008522

2.7 向量的加法和减法

我们可以让两个向量相加或相减,只要它们具有相同的维度。结果是与向量运算项具有相同维度的向量。向量加法和减法的表示法与标量的加法和减法的表示法是一样的。

2.7.1 正式线性代数规则

向量的加法

[a1a2⋮an−1an]+[b1b2⋮bn−1bn]=[a1+b1a2+b2⋮an−1+bn−1an+bn]\begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_{n-1} \\ a_n \end{bmatrix} + \begin{bmatrix} b_1 \\ b_2 \\ \vdots \\ b_{n-1} \\ b_n \end{bmatrix} = \begin{bmatrix} a_1+b_1 \\a_2+b_2 \\ \vdots \\ a_{n-1}+b_{n-1} \\ a_n+b_n \end{bmatrix}

向量的减法

[a1a2⋮an−1an]−[b1b2⋮bn−1bn]=[a1a2⋮an−1an]+(−[b1b2⋮bn−1bn])=[a1−b1a2−b2⋮an−1−bn−1an−bn]\begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_{n-1} \\ a_n \end{bmatrix} - \begin{bmatrix} b_1 \\ b_2 \\ \vdots \\ b_{n-1} \\ b_n \end{bmatrix} = \begin{bmatrix} a_1 \\ a_2 \\ \vdots \\ a_{n-1} \\ a_n \end{bmatrix} + \begin{pmatrix} - \begin{bmatrix} b_1 \\ b_2 \\ \vdots \\ b_{n-1} \\ b_n \end{bmatrix} \end{pmatrix} = \begin{bmatrix} a_1-b_1 \\a_2-b_2 \\ \vdots \\ a_{n-1}-b_{n-1} \\ a_n-b_n \end{bmatrix}

加法满足交换率

a + b = b + a

减法不满足交换律

a - b = - (b - a)

2.7.2 几何解释

三角形法则:如果从一个点开始应用a指定的位移,然后再应用由b指定的位移,那就像应用了单个位移a+b一样。这称为向量加法的三角形法则(Triangle Rule)。它也适用于向量减法。

向量加法是可以交换的,但是向量减法则不是。

image-20230311105009492

2.7.3 从一点到另一点的位移向量

当要计算从点a到点b的位移向量,可以通过b−a获得.

image-20230311105741766

2.8 向量大小

向量的大小也称为向量的长度(Length)或模(Norm)。它的值是非负的。

正式线性代数规则

任意维度的矢量大小

矢量的大小是矢量分量的平方和的平方根。

∣∣v∣∣=∑i=1nvi2=v12+v22+⋯+vn−12+vn2||\textbf{v}||=\sqrt{\sum_{i=1}^{n}v_i^2}=\sqrt{v_1^2+v_2^2+\cdots +v_{n-1}^2+v_n^2}

二维和三维矢量的大小

∣∣v∣∣=vx2+vy2二维矢量v∣∣v∣∣=vx2+vy2+vz2三维矢量v||\textbf{v}||=\sqrt{v_x^2+v_y^2} \quad 二维矢量\textbf{v} \\ ||\textbf{v}||=\sqrt{v_x^2+v_y^2+v_z^2} \quad 三维矢量\textbf{v}

几何解释

毕达哥拉斯定理指出,对于任何直角三角形,斜边长度的平方等于另外两边长度的平方和。则有

∣∣v∣∣2=∣vx∣2+∣vy∣2∵∣x∣2=x2∴∣∣v∣∣=vx2+vy2∴∣∣v∣∣2=vx2+vy2∴∣∣v∣∣=vx2+vy2\quad\quad||\textbf{v}||^2=|v_x|^2+|v_y|^2 \\ \because \quad |x|^2=x^2 \\ \quad\quad\therefore \quad ||\textbf{v}||=v_x^2 + v_y^2 \\ \quad\quad\quad\quad\quad\therefore \quad \sqrt{||\textbf{v}||^2}=\sqrt{v_x2+v_y^2} \\ \quad\quad\quad\therefore \quad ||\textbf{v}||=\sqrt{v_x^2+v_y^2}

对于任何正大小m,存在无数个大小为m的矢量。由于这些矢量都具有相同的长度只是方向不同,因此,将它们的尾部放置在原点时,他们就会形成一个圆。

image-20230311115156242

2.9 单位向量

对于许多向量,我们只关注其方向而不是大小,在这些情况下,使用单位向量通常会更方便。例如:法线(Normal)。

单位向量(Unit Vector)是大小为1的向量。单位向量也被称为归一化向量(Normalized Vector)。

2.9.1 正式线性代数规则

对于任何非零向量v,可以计算指向与v相同方向的单位向量,此过程称为向量的归一化(Normalizing)。零向量无法被归一化,在数学上是因为除零规则,在几何上是因为零向量没有定义方向。

向量的归一化

v^=v∣∣v∣∣其中,v是任意非零向量\hat{v}=\frac{\textbf{v}}{||\textbf{v}||} \quad\quad其中,\textbf{v}是任意非零向量

  • 要归一化二维矢量[12, 5],则有

[12−5]∣∣[12−5]∣∣=[12−5]122+52=[12−5]169=[12−5]13=[1213−513]\frac{\begin{bmatrix}12 \quad -5\end{bmatrix}}{||\begin{bmatrix}12 \quad -5\end{bmatrix}||}=\frac{\begin{bmatrix}12 \quad -5\end{bmatrix}}{\sqrt{12^2+5^2}}=\frac{\begin{bmatrix}12 \quad -5\end{bmatrix}}{\sqrt{169}}=\frac{\begin{bmatrix}12 \quad -5\end{bmatrix}}{13}=[\frac{12}{13} \quad \frac{-5}{13}]

2.9.2 几何解释

在二维中,如果将单位向量的尾部绘制在原点处,则矢量的头部将接触到以原点为中心的单位圆(单位圆的半径为1)。在三维中,单位向量接触到的是单位球面。

请注意,向量长度大于1时,对向量进行归一化会使它更短;向量长度小于1时,对向量进行归一化会使它更长。

image-20230311183755485

2.10 距离公式

距离为两点之间的线段长度。由于向量是有向线段,因此几何上有意义的是,两点之间的距离将等于从一点到另一点的向量的长度。

  • 求a到b的向量d:

d=b−a=[bx−axby−aybz−az]\textbf{d}=\textbf{b}-\textbf{a}=\begin{bmatrix}b_x-a_x \\ b_y-a_y \\ b_z-a_z\end{bmatrix}

  • a和b之间的距离等于向量d的长度(注意,此处,谁看作a,谁看作b无关紧要):

distance(a,b)=∣∣d∣∣=dx2+dy2+dz2distance(\textbf{a},\textbf{b})=||\textbf{d}||=\sqrt{d_x^2+d_y^2+d_z^2}

三维距离公式

distance(a,b)=∣∣d∣∣=(bx−ax)2+(by−ay)2+(bz−az)2distance(\textbf{a},\textbf{b})=||\textbf{d}||=\sqrt{(b_x-a_x)^2+(b_y-a_y)^2+(b_z-a_z)^2}

二维距离公式

distance(a,b)=∣∣d∣∣=(bx−ax)2+(by−ay)2distance(\textbf{a},\textbf{b})=||\textbf{d}||=\sqrt{(b_x-a_x)^2+(b_y-a_y)^2}

2.11 向量点积

向量点积(dot product)又称为向量内积(inner product)。点积的结果是标量。

2.11.1 正式线性代数规则

向量点乘时必须用一个使用点符号,如 a⋅b\textbf{a}\cdot\textbf{b}。如果看到两个向量并排放置,中间没有符号,则需要根据矩阵乘法的规则进行解释。

矢量点积

[a1a2⋮an−1an]⋅[b1b2⋮bn−1bn]=a1b1+a2b2+⋯+an−1bn−1+anbn\begin{bmatrix}a_1 \\ a_2 \\ \vdots \\ a_{n-1} \\ a_n \end{bmatrix} \cdot \begin{bmatrix}b_1 \\ b_2 \\ \vdots \\ b_{n-1} \\ b_n \end{bmatrix} = a_1 b_1+a_2 b_2 + \cdots + a_{n-1} b{n-1} + a_n b_n

使用求和符号表示的向量点积

a⋅b=∑i−1naibi\textbf{a}\cdot\textbf{b}=\sum_{i-1}^n a_i b_i

向量点积是可交换的:a⋅b=b⋅a\textbf{a}\cdot\textbf{b}=\textbf{b}\cdot\textbf{a}。

2.11.2 几何解释

投影

点积a⋅b\textbf{a}\cdot\textbf{b}等于b\textbf{b}投影到平行于a\textbf{a}的任何线上的有符号长度,乘以a\textbf{a}的长度。点积的符号可以给予我们对两个向量的相对方向的粗略分类。当b\textbf{b}产生缩放时,它在a^\hat{\textbf{a}}上的投影长度随着点积值的增加而增加。

点积与任意向量和标量的乘法的结合律

(ka)⋅b=k(a⋅b)=a⋅(kb)(k\textbf{a})\cdot\textbf{b}=k(\textbf{a}\cdot\textbf{b})=\textbf{a}\cdot(k\textbf{b})

image-20230311193432049

image-20230311194602951

当两个向量a^\hat{\textbf{a}}和b^\hat{\textbf{b}}都是单位向量时,可以很容易得出一个论证,即a^\hat{\textbf{a}}和b^\hat{\textbf{b}}上的投影与b^\hat{\textbf{b}}在a^\hat{\textbf{a}}上的投影具有相同的长度。点积结果时标量,因此也能推断出点积是可以交换的。

点积是可交换的

a⋅b=axbx+ayby=bxax+byay=b⋅a\textbf{a}\cdot\textbf{b}=a_x b_x + a_y b_y = b_x a_x + b_y a_y = \textbf{b}\cdot\textbf{a}

image-20230311215636261

点积分布

就像标量乘法一样,通过加法和减法进行分布。如果点积的运算项之一是一个总和值,那么就可以单独取得各个部分的点积,然后取它们的总和。

点积通过加法和减法进行分布

a⋅(b+c)=[axayax]⋅[bx+cxby+cybz+cz]=ax(bx+cx)+ay(by+cy)+az(bz+cz)=axbx+axcx+ayby+aycy+azbz+azcz=(axbx+ayby+azbz)+(axcx+aycy+azcz)=a⋅b+a⋅c\begin{align*} \textbf{a}\cdot(\textbf{b}+\textbf{c}) &= \begin{bmatrix}a_x\\a_y\\a_x\end{bmatrix}\cdot\begin{bmatrix}b_x+c_x\\b_y+c_y\\b_z+c_z\end{bmatrix}\\ &= a_x(b_x+c_x)+a_y(b_y+c_y)+a_z(b_z+c_z)\\ &= a_xb_x+a_xc_x+a_yb_y+a_yc_y+a_zb_z+a_zc_z\\ &= (a_xb_x+a_yb_y+a_zb_z)+(a_xc_x+a_yc_y+a_zc_z)\\ &= \textbf{a}\cdot\textbf{b}+\textbf{a}\cdot\textbf{c} \end{align*}

通过用−c-\textbf{c}替换c\textbf{c},可以得知,点积也可以通过向量减法进行分布,就像向量加法一样。还可以通过取得具有基本轴的向量的点积“筛选”出该轴的坐标。

image-20230311222245056

b\textbf{b}在a\textbf{a}上的投影实际上可以看作是b\textbf{b}在a\textbf{a}方向上的分量。因此还可以通过投影来将b\textbf{b}拆分为两部分:b∣∣\textbf{b}_{||}和b⊥\textbf{b}_{\bot}(”b\textbf{b}平行“和“b\textbf{b}垂直”),平行于a\textbf{a}的分量和垂直与a\textbf{a}的分量。已知b∣∣\textbf{b}_{||}的长度等于a^⋅b\hat{\textbf{a}}\cdot\textbf{b},但是b∣∣\textbf{b}_{||}是一个分量,所以将采用单位矢量a^\hat{\textbf{a}}指定的方向并将其放大,表述如下:

b∣∣=(a^⋅b)a^\textbf{b}_{||}=(\hat{\textbf{a}}\cdot\textbf{b})\hat{\textbf{a}}

已知b∣∣\textbf{b}_{||},则可推导b⊥\textbf{b}_{\bot}:

b⊥+b∣∣=bb⊥=b−b∣∣b⊥=b−(a^⋅b)a^\begin{align*} \textbf{b}_{\bot}+\textbf{b}_{||} &= \textbf{b} \\ \textbf{b}_{\bot} &= \textbf{b}-\textbf{b}_{||} \\ \textbf{b}_{\bot} &= \textbf{b}-(\hat{\textbf{a}}\cdot\textbf{b})\hat{\textbf{a}} \end{align*}

image-20230311223853889

点积截取角度

通过直接三角形来解释点积:

cos⁡θ=邻边(adjacent)斜边(hypotenuse)=a^⋅b^1=a^⋅b^\cos{\theta}=\frac{邻边(adjacent)}{斜边(hypotenuse)}=\frac{\hat{a}\cdot\hat{b}}{1}=\hat{a}\cdot\hat{b}

image-20230312074828524

两个向量a\textbf{a}和b\textbf{b}的点积等于向量之间角度θ\theta的余弦,乘以向量的长度。

a⋅b=∣∣a∣∣ ∣∣b∣∣cos⁡θθ=arccos⁡(a⋅b∣∣a∣∣ ∣∣b∣∣)θ=arccos⁡(a^⋅b^)(假设a^和b^都是单位向量)\begin{align*} \textbf{a}\cdot\textbf{b} &= ||\textbf{a}||\ ||\textbf{b}||\cos{\theta} \\ \theta &= \arccos(\frac{\textbf{a}\cdot\textbf{b}}{||\textbf{a}||\ ||\textbf{b}||}) \\ \theta &= \arccos(\hat{a}\cdot\hat{b})\quad(假设\hat{a}和\hat{b}都是单位向量) \end{align*}

image-20230312075433061

点积的符号可以用作两个向量之间角度的粗略分类

a^⋅b^\hat{a}\cdot\hat{b} θ\theta 角度为 a\textbf{a}和b\textbf{b}是
> 0 0∘≤θ<90∘0^{\circ} \leq \theta < 90^{\circ} 锐角 主要指向同一方向
0 θ=90∘\theta=90^{\circ} 直角 垂直
< 0 90∘<θ<180∘90^{\circ} < \theta < 180^{\circ} 钝角 主要指向相反方向

公式推导

image-20230312082900362

转载来源:https://www.cnblogs.com/sf5803/p/14354300.html

如图所示:b\textbf{b}与b\textbf{b}的夹角为θ\theta,c=a−b,a,b,c\textbf{c}=\textbf{a}-\textbf{b},\textbf{a},\textbf{b},\textbf{c}构成一个三角形。

由三角形余弦定理可知:

∣∣c∣∣=∣∣b∣∣2+∣∣c∣∣2−2∣∣a∣∣ ∣∣b∣∣cos⁡θ||\textbf{c}|| = ||\textbf{b}||^2 + ||\textbf{c}||^2-2||\textbf{a}||\ ||\textbf{b}||\cos{\theta}

假设a=[a1a2],b=[b1b2]\textbf{a}=\begin{bmatrix} a_1 \\ a_2 \end{bmatrix},\textbf{b}=\begin{bmatrix}b_1 \\ b_2 \end{bmatrix}:

则由向量大小可知:∣∣a∣∣2=a12+a22,∣∣b∣∣2=b12+b22||\textbf{a}||^2=a_1^2+a_2^2,||\textbf{b}||^2=b_1^2+b_2^2

余弦定理推导如下:

则有:

∣∣c∣∣2=∣∣(a−b)∣∣2=∣∣[a1−b1a2−b2]∣∣2=(a1−b2)2+(a2−b2)2=a12+b12−2a1b1+a22+b22−2a2b2(完全平方差公式)\begin{align*} ||\textbf{c}||^2 &= ||(\textbf{a}-\textbf{b})||^2 \\ &= ||\begin{bmatrix} a_1 - b_1 \\ a_2 - b_2 \end{bmatrix}||^2 \\ &= (a_1 - b_2)^2 + (a_2 - b_2)^2 \\ &= a_1^2 + b_1^2 - 2a_1b_1 + a_2^2 + b_2^2 - 2a_2b_2 \quad(完全平方差公式) \end{align*}

所以:

a12+b12−2a1b1+a22+b22−2a2b2=a12+a22+b12+b22−2∣∣a∣∣ ∣∣b∣∣cos⁡θ∣∣c∣∣2=∣∣a∣∣2+∣∣b∣∣2−2∣∣a∣∣ ∣∣b∣∣cos⁡θ(余弦定理)a_1^2 + b_1^2 - 2a_1b_1 + a_2^2 + b_2^2 - 2a_2b_2 = a_1^2 + a_2^2 + b_1^2 + b_2^2 - 2||\textbf{a}||\ ||\textbf{b}||\cos{\theta} \\ ||\textbf{c}||^2=||\textbf{a}||^2+||\textbf{b}||^2-2||\textbf{a}||\ ||\textbf{b}||\cos{\theta}\quad(余弦定理)

点积几何解释推导如下:

假设a\textbf{a}的方向为X轴。

a12+b12−2a1b1+a22+b22−2a2b2=a12+a22+b12+b22−2∣∣a∣∣ ∣∣b∣∣cos⁡θa1b1+a2b2=∣∣a∣∣ ∣∣b∣∣cos⁡θa⋅b=a1b1+a2b2=∣∣a∣∣ ∣∣b∣∣cos⁡θ\begin{align*} \cancel{a_1^2} + \cancel{b_1^2} - \cancel{2}a_1b_1 + \cancel{a_2^2} + \cancel{b_2^2} - \cancel{2}a_2b_2 &= \cancel{a_1^2} + \cancel{a_2^2} + \cancel{b_1^2} + \cancel{b_2^2} - \cancel{2}||\textbf{a}||\ ||\textbf{b}||\cos{\theta} \\ a_1b_1+a_2b_2 &= ||\textbf{a}||\ ||\textbf{b}||\cos{\theta} \\ \textbf{a}\cdot\textbf{b} &= a_1b_1+a_2b_2 =||\textbf{a}||\ ||\textbf{b}||\cos{\theta} \end{align*}

可证:

a⋅b=[a1a2⋮an−1an]⋅[b1b2⋮bn−1bn]=a1b1+a2b2+⋯+an−1bn−1+anbn=∣∣a∣∣ ∣∣b∣∣cos⁡θ则:∣∣b∣∣cos⁡θ=a⋅b∣∣a∣∣\begin{align*} \textbf{a}\cdot\textbf{b} &= \begin{bmatrix}a_1 \\ a_2 \\ \vdots \\ a_{n-1} \\ a_n \end{bmatrix} \cdot \begin{bmatrix}b_1 \\ b_2 \\ \vdots \\ b_{n-1} \\ b_n \end{bmatrix} \\ &= a_1 b_1+a_2 b_2 + \cdots + a_{n-1} b{n-1} + a_n b_n \\ &= ||\textbf{a}||\ ||\textbf{b}||\cos{\theta} \\ \\ 则:||\textbf{b}||\cos{\theta}=\frac{\textbf{a}\cdot\textbf{b}}{||\textbf{a}||} \end{align*}

投影公式的推导如下:

假设m\textbf{m}为投影向量。

cos⁡θ=邻边斜边=∣∣m∣∣∣∣b∣∣∴∣∣m∣∣=∣∣b∣∣cos⁡θ=a⋅b∣∣a∣∣∵a^=a∣∣a∣∣∴∣∣m∣∣=a^⋅b∴b∣∣=a^⋅b\begin{align*} &\cos{\theta}=\frac{邻边}{斜边}=\frac{||\textbf{m}||}{||\textbf{b}||} \\ &\therefore ||\textbf{m}||=||\textbf{b}||\cos{\theta}=\frac{\textbf{a}\cdot\textbf{b}}{||\textbf{a}||} \\ &\because \hat{\textbf{a}}=\frac{\textbf{a}}{||\textbf{a}||} \\ &\therefore ||\textbf{m}||=\hat{\textbf{a}}\cdot\textbf{b} \\ &\therefore \textbf{b}_{||}=\hat{\textbf{a}}\cdot\textbf{b} \end{align*}

另一种点积几何公式推导法:

image-20230312125401058

由图可知:

ax=∣∣a∣∣cos⁡θa,ay=∣∣a∣∣sin⁡θa,bx=∣∣b∣∣cos⁡θb,by=∣∣b∣∣sin⁡θb\begin{align*} a_x &=||\textbf{a}||\cos{\theta}_a, \\ a_y &=||\textbf{a}||\sin{\theta}_a, \\ b_x &=||\textbf{b}||\cos{\theta}_b, \\ b_y &=||\textbf{b}||\sin{\theta}_b \end{align*}

则有点积的代数定义:

a⋅b=axbx+ayby=∣∣a∣∣cos⁡θa∣∣b∣∣cos⁡θb+∣∣a∣∣sin⁡θa∣∣b∣∣sin⁡θb=∣∣a∣∣ ∣∣b∣∣(cos⁡θacos⁡θb+sin⁡θasin⁡θb)=∣∣a∣∣ ∣∣b∣∣cos⁡(θb−θa)=∣∣a∣∣ ∣∣b∣∣cos⁡θ\begin{align*} \textbf{a}\cdot\textbf{b} &= a_xb_x+a_yb_y \\ &= ||\textbf{a}||\cos{\theta}_a||\textbf{b}||\cos{\theta}_b+||\textbf{a}||\sin{\theta}_a||\textbf{b}||\sin{\theta}_b \\ &= ||\textbf{a}||\ ||\textbf{b}||(\cos\theta_a\cos\theta_b+\sin\theta_a\sin\theta_b) \\ &= ||\textbf{a}||\ ||\textbf{b}||\cos(\theta_b - \theta_a) \\ &= ||\textbf{a}||\ ||\textbf{b}||\cos\theta \end{align*}


总结

  • 点积a⋅b\textbf{a}\cdot\textbf{b}将测量b\textbf{b}投影到a\textbf{a}上的长度,乘以a\textbf{a}的长度。
  • 点积可用于测量特定方向的位移。
  • 投影运算与余弦函数密切相关。点积a⋅b\textbf{a}\cdot\textbf{b}也等于∣∣a∣∣ ∣∣b∣∣cos⁡θ||\textbf{a}||\ ||\textbf{b}||\cos{\theta},其中,θ\theta是向量之间的角度。

2.12 向量叉积

叉积(Cross Product)又叫外积或向量积(Vector Product),只能在三维中应用。叉积将产生一个新的向量。

2.12.1 正式线性代数规则

叉乘公式

[x1y1z1]×[x2y2z2]=[y1z2−z1y2z1x2−x1z2x1y2−y1x2]\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}

  • 叉积和点积具有相同的运算符优先级:乘法发生在加法和减法之前。运算a⋅b×c=a⋅(b×c)\textbf{a}\cdot\textbf{b}\times\textbf{c}=\textbf{a}\cdot(\textbf{b}\times\textbf{c})被称为三重积。

  • 向量的叉积不满足交换律:a×b≠b×a\textbf{a}\times\textbf{b}\neq\textbf{b}\times\textbf{a}

  • 向量的叉积满足反转换:a×b=−(b×a)\textbf{a}\times\textbf{b}=-(\textbf{b}\times\textbf{a})

  • 向量的叉积不满足结合律:(a×b)×c≠a×(b×c)(\textbf{a}\times\textbf{b})\times\textbf{c}\neq\textbf{a}\times(\textbf{b}\times\textbf{c})

  • 标量与叉积满足结合律:k(a×b=(ka)×b=a×(kb)k(\textbf{a}\times\textbf{b}=(k\textbf{a})\times\textbf{b}=\textbf{a}\times(k\textbf{b})

2.12.2 几何解释

叉积将产生一个新的向量,垂直于原始的两个向量。其大小等于两个向量的大小乘上两个向量之间夹角的sin,该大小也等于由两个向量构成的平行四边形的面积。

叉积的大小与向量之间的角度的正弦值有关

∣∣a×b∣∣=∣∣a∣∣ ∣∣b∣∣sin⁡θ||\textbf{a}\times\textbf{b}||=||\textbf{a}||\ ||\textbf{b}||\sin{\theta}

image-20230312094322314

我们可以通过将b\textbf{b}的尾部放在a\textbf{a}的头部来确定a×b\textbf{a}\times\textbf{b}的方向,并检查是否从a\textbf{a}到b\textbf{b}顺时针或逆时针转动。在左手坐标系下,如果在形成的方向是顺时针的,则结果方向指向外侧,如果是逆时针,则指向内侧。在右手坐标系下,结果相反。

image-20230312094929617

公式推导

假设a\textbf{a}和b\textbf{b}的叉积为:m\textbf{m},则有

a=[x1y1z1],b=[x2y2z2],m=[y1z2−z1y2z1x2−x1z2x1y2−y1x2]\begin{align*} \textbf{a} &= \begin{bmatrix} x_1 \\ y_1 \\ z_1 \end{bmatrix}, \\ \textbf{b} &= \begin{bmatrix} x_2 \\ y_2 \\ z_2 \end{bmatrix}, \\ \textbf{m} &= \begin{bmatrix} y_1z_2 - z_1y_2 \\ z_1x_2 - x_1z_2 \\ x_1y_2 - y_1x_2 \end{bmatrix} \end{align*}

那么计算向量m\textbf{m}的长度平方,则有:

∣∣m∣∣2=(y1z2−z1y2)2+(z1x2−x1z2)2+(x1y2−y1x2)2=(y1z2)2+(z1y2)2−2y1y2z1z2+(z1x2)2+(x1z2)2−2x1x2z1z2−(x1y2)2+(y1x2)2−2x1x2y1y2=(x12+y12+z12)×(x22+y22+z22)−(x1x2+y1y2+z1z2)2=∣∣a∣∣2∣∣b∣∣2−(a⋅b)2=∣∣a∣∣2∣∣b∣∣2−(∣∣a∣∣2∣∣b∣∣2cos⁡θ)2=∣∣a∣∣2∣∣b∣∣2(1−cos⁡θ2)=∣∣a∣∣2∣∣b∣∣2sin⁡θ2=(∣∣a∣∣ ∣∣b∣∣sin⁡θ)2\begin{align*} ||\textbf{m}||^2 &= (y_1z_2 - z_1y_2)^2 +(z_1x_2 - x_1z_2)^2 + (x_1y_2 - y_1x_2)^2 \\ &= (y_1z_2)^2 + (z_1y_2)^2-2y_1y_2z_1z_2 + (z_1x_2)^2 + (x_1z_2)^2 -2x_1x_2z_1z_2 -(x_1y_2)^2+(y_1x_2)^2-2x_1x_2y_1y_2 \\ &= (x_1^2+y_1^2+z_1^2) \times(x_2^2+y_2^2+z_2^2)-(x_1x_2+y_1y_2+z_1z_2)^2 \\ &= ||\textbf{a}||^2||\textbf{b}||^2 - (\textbf{a}\cdot\textbf{b})^2 \\ &= ||\textbf{a}||^2||\textbf{b}||^2 - (||\textbf{a}||^2||\textbf{b}||^2\cos\theta)^2 \\ &= ||\textbf{a}||^2||\textbf{b}||^2(1-\cos{\theta}^2) \\ &= ||\textbf{a}||^2||\textbf{b}||^2\sin{\theta}^2 \\ &= (||\textbf{a}||\ ||\textbf{b}||\sin{\theta})^2 \end{align*}

可证:∣∣a×b∣∣=∣∣m∣∣=∣∣a∣∣ ∣∣b∣∣sin⁡θ||\textbf{a}\times\textbf{b}||=||\textbf{m}||=||\textbf{a}||\ ||\textbf{b}||\sin{\theta}

2.13 线性代数恒等式

image-20230312095230146


引用:

  1. Dunn, F. and Parberry, I. (2011). 3D math primer for graphics and game development 2nd2^{nd}.