Scalar Projection, Vector Projection, Scalar Rejection and Vector Rejection

May. 09, 2023

Definitions based on angle $\theta$

(1)标量投影(Scalar projection)1

向量$\boldsymbol{a}$对向量$\boldsymbol{b}$的标量投影定义为:

\[a_1=\vert\vert\boldsymbol{a}\vert\vert\cos\theta\]

其中$\theta$为向量$\boldsymbol{a}$和向量$\boldsymbol{b}$之间的夹角。

(2)向量投影(Vector projection)

向量$\boldsymbol{a}$对向量$\boldsymbol{b}$的向量投影定义为:

\[\boldsymbol{a}_1=a_1\hat{\boldsymbol{b}}=(\vert\vert\boldsymbol{a}\vert\vert\cos\theta)\hat{\boldsymbol{b}}\]

其中,$\hat{\boldsymbol{b}}$是与向量$\boldsymbol{b}$同方向的单位向量。可以看到,标量投影是相应的向量投影的模长。

(3)Vector rejection

向量$\boldsymbol{a}$对向量$\boldsymbol{b}$的Vector rejection定义为:

\[\begin{split} \boldsymbol{a}_2&=\boldsymbol{a}-\boldsymbol{a}_1\\ &=\boldsymbol{a}-(\vert\vert\boldsymbol{a}\vert\vert\cos\theta)\hat{\boldsymbol{b}} \end{split}\]

(4)Scalar rejection

同样地,Scalar rejection定义为Vector rejection的模长:

\[a_2=\vert\vert\boldsymbol{a}_2\vert\vert\]

并且从几何的角度可以很容易地推导出:

\[a_2=\vert\vert\boldsymbol{a}\vert\vert\sin\theta\]


Definitions in terms of $\boldsymbol{a}$ and $\boldsymbol{b}$

在有些情况下,角度$\theta$未知,我们需要基于向量$\boldsymbol{a}$和向量$\boldsymbol{b}$的计算出角度$\theta$(根据点积的定义 2):

\[\cos\theta=\dfrac{\langle\boldsymbol{a},\boldsymbol{b}\rangle}{\vert\vert\boldsymbol{a}\vert\vert\ \vert\vert\boldsymbol{b}\vert\vert}\]

因此,直接基于向量$\boldsymbol{a}$和向量$\boldsymbol{b}$定义上述四个量是更加方便的。

(1)标量投影(Scalar projection)

\[a_1=\vert\vert\boldsymbol{a}\vert\vert\cos\theta=\dfrac{\langle\boldsymbol{a},\boldsymbol{b}\rangle}{\vert\vert\boldsymbol{b}\vert\vert}\]

(2)向量投影(Vector projection)

\[\boldsymbol{a}_1=a_1\hat{\boldsymbol{b}}=\dfrac{\langle\boldsymbol{a},\boldsymbol{b}\rangle}{\vert\vert\boldsymbol{b}\vert\vert}\dfrac{\boldsymbol{b}}{\vert\vert\boldsymbol{b}\vert\vert}\]

等价于:

\[\boldsymbol{a}_1=\langle\boldsymbol{a},\hat{\boldsymbol{b}}\rangle\hat{\boldsymbol{b}}\]

或者:

\[\boldsymbol{a}_1=\dfrac{\langle\boldsymbol{a},\boldsymbol{b}\rangle}{\vert\vert\boldsymbol{b}\vert\vert^2}\boldsymbol{b}=\dfrac{\langle\boldsymbol{a},\boldsymbol{b}\rangle}{\langle\boldsymbol{b},\boldsymbol{b}\rangle}\boldsymbol{b}\]

(3)Scalar rejection

记向量$\boldsymbol{b}=(b_x,b_y)$的正交向量为$\boldsymbol{b}^\perp=(-b_y,b_x)$,则Scalar rejection可以写作:

\[a_2 =\vert\vert\boldsymbol{a}\vert\vert\sin\theta =\vert\vert\boldsymbol{a}\vert\vert\dfrac{\langle\boldsymbol{a},\boldsymbol{b}^\perp\rangle}{\vert\vert\boldsymbol{a}\vert\vert\ \vert\vert\boldsymbol{b}^\perp\vert\vert} =\dfrac{\langle\boldsymbol{a},\boldsymbol{b}^\perp\rangle}{\vert\vert\boldsymbol{b}\vert\vert}\]

其中,点积$\boldsymbol{a}\cdot\boldsymbol{b}^\perp$也被称作垂直点积(perp dot product)

(4)Vector rejection \(\begin{split} \boldsymbol{a}_2&=\boldsymbol{a}-\boldsymbol{a}_1\\ &=\boldsymbol{a}-\dfrac{\langle\boldsymbol{a},\boldsymbol{b}\rangle}{\langle\boldsymbol{b},\boldsymbol{b}\rangle}\boldsymbol{b} \end{split}\)

Added on Nov. 2, 2023: The notions of vector projection and vector rejection are used in Gram-Schmidt Process, which could be found in 3.

基于向量$\boldsymbol{a}$和向量$\boldsymbol{b}$的定义在编程时更方便计算。以向量$\boldsymbol{a}=(1,1)$,$\boldsymbol{b}=(0.4,1.6)$进行验证:

image-20231102201557457

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
clc,clear,close all

hold(gca,"on")
box(gca,"on")
grid(gca,"on")
axis(gca,"equal")
vecA = [1,1];
vecB = [0.4,1.6];
vecA1 = (vecA*vecB')/(vecB*vecB')*vecB;
vecA2 = vecA-(vecA*vecB')/(vecB*vecB')*vecB;

scatter3(0,0,0,50, ...
    'filled','o','MarkerFaceColor','k','HandleVisibility','off')
q1 = quiver(0,0,vecA(1),vecA(2), ...
    'LineWidth',1.5,'AutoScale','off','DisplayName','$a$');
q2 = quiver(0,0,vecB(1),vecB(2), ...
    'LineWidth',1.5,'AutoScale','off','DisplayName','$b$');
q3 = quiver(0,0,vecA1(1),vecA1(2), ...
    'LineWidth',1.5,'AutoScale','off','DisplayName','$a_1$, Vector projection');
q4 = quiver(vecA1(1),vecA1(2),vecA2(1),vecA2(2), ...
    'LineWidth',1.5,'AutoScale','off','DisplayName','$a_2$, Vector rejection');
legend('Interpreter','latex')


References