• 向量的内积与外积


    向量的内积与外积

    Reference:

    1. 高翔,张涛 《视觉SLAM十四讲》

    是空间中的最基本元素,没有长度,没有体积。把两个点连接起来,就构成了向量向量可以看成从某点指向另一个点的一个箭头。请不要把向量与它的坐标这两个概念混淆。

    一个向量是空间当中的一样东西,比如 a \mathbf{a} a。这里的 a \mathbf{a} a 并不需要和若干个实数相关联。只有当我们指定这个三维空间中的某个坐标系时,才可以谈论该向量在此坐标系下的坐标,也就是找到若干个实数对应这个向量。

    用线性代数的知识来说,三维空间中的某个点的坐标也可以用 R 3 \mathbb{R}^3 R3 来描述。假设在这个线性空间内,我们找到了该空间的一组 ( e 1 , e 2 , e 3 ) (\mathbf{e_1}, \mathbf{e_2}, \mathbf{e_3}) (e1,e2,e3),那么,任意向量 a \mathbf{a} a 在这组基下就有一个坐标:
    a = [ e 1 , e 2 , e 3 ] [ a 1 a 2 a 3 ] = a 1 e 1 + a 2 e 2 + a 3 e 3 \boldsymbol{a}=\left[\boldsymbol{e}_1, \boldsymbol{e}_2, \boldsymbol{e}_3\right]\left[a1a2a3

    \right]=a_1 \boldsymbol{e}_1+a_2 \boldsymbol{e}_2+a_3 \boldsymbol{e}_3 a=[e1,e2,e3] a1a2a3 =a1e1+a2e2+a3e3

    这里 ( a 1 , a 2 , a 3 ) T (a_1, a_2, a_3)^T (a1,a2,a3)T 称为 a \mathbf{a} a 在此基下的坐标。坐标的具体取值,一是和向量本身有关,二是和坐标系(基)的选取有关。

    坐标系通常由 3 3 3正交的坐标轴组成(尽管也可以有非正交的,但实际中很少见)。例如,当给定 x x x y y y 轴时, z z z 轴就可以通过右手(或左手)法则由 x × y x\times y x×y 定义出来。根据定义方式的不同,坐标系又分为右手系左手系。左手系的第 3 3 3 个轴与右手系方向相反。大部分 3 D 3D 3D 程序库使用右手系(如 OpenGL,3D Max等),也有部分库使用左手系(如 Unity、Direct3D 等)。

    现在给出内外积的运算方式:

    • 内积
      对于 a , b ∈ R 3 \mathbf{a},\mathbf{b}\in\mathbb{R}^3 a,bR3,通常意义下的内积可以写成:
      a ⋅ b = a T b = ∑ i = 1 3 a i b i = ∣ a ∣ ∣ b ∣ cos ⁡ ⟨ a , b ⟩ \boldsymbol{a} \cdot \boldsymbol{b}=\boldsymbol{a}^T \boldsymbol{b}=\sum_{i=1}^3 a_i b_i=|\boldsymbol{a}||\boldsymbol{b}| \cos \langle\boldsymbol{a}, \boldsymbol{b}\rangle ab=aTb=i=13aibi=a∣∣bcosa,b

      其中 cos ⁡ ⟨ a , b ⟩ \cos \langle\boldsymbol{a}, \boldsymbol{b}\rangle cosa,b 指向量 a , b \mathbf{a},\mathbf{b} a,b 的夹角。内积也可以描述向量间的投影关系。

    • 外积
      a × b = [ e 1 e 2 e 3 a 1 a 2 a 3 b 1 b 2 b 3 ] = [ a 2 b 3 − a 3 b 2 a 3 b 1 − a 1 b 3 a 1 b 2 − a 2 b 1 ] = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] b = def a ∧ b . \boldsymbol{a} \times \boldsymbol{b}=\left[e1e2e3a1a2a3b1b2b3

      \right]=\left[a2b3a3b2a3b1a1b3a1b2a2b1
      \right]=\left[0a3a2a30a1a2a10
      \right] \boldsymbol{b} \overset{\text{def}}{=} \boldsymbol{a}^{\wedge} \boldsymbol{b} . a×b= e1a1b1e2a2b2e3a3b3 = a2b3a3b2a3b1a1b3a1b2a2b1 = 0a3a2a30a1a2a10 b=defab.

      外积的结果是一个向量,它的方向垂直于这两个向量,大小为 ∣ a ∣ ∣ b ∣ sin ⁡ ⟨ a , b ⟩ |\boldsymbol{a}||\boldsymbol{b}| \sin \langle\boldsymbol{a}, \boldsymbol{b}\rangle a∣∣bsina,b是两个向量张成的四边形的有向面积。对于外积运算,我们引入了 ^ 符号,把 a \mathbf{a} a 写成一个矩阵。事实上是一个反对称矩阵(Skew-symmetric Matrix),可以将 ^ 记成一个反对称符号这样就把外积 a × b a\times b a×b 写成了矩阵与向量的乘法 a ∧ b a^{\wedge} b ab,把它变成了线性运算。这个符号在 SLAM 内经常会用到,请记住它。并且此符号是一个一一映射,意味着任何向量都对应着唯一的一个反对称矩阵,反之亦然:
      a ∧ = [ 0 − a 3 a 2 a 3 0 − a 1 − a 2 a 1 0 ] . \boldsymbol{a}^{\wedge}=\left[0a3a2a30a1a2a10

      \right]. a= 0a3a2a30a1a2a10 .

    需要额外提醒的是,向量和加减法、内外积,即使在不谈论它们的坐标时也可以计算。例如,虽然内积在有坐标时,可以用两个向量的分量乘积之和表达,但是即使不知道它们的坐标,也可以通过长度和夹角来计算二者的内积。所以两个向量的内积结果和坐标系的选取是无关的。

  • 相关阅读:
    【JavaScript】基于querySelector / querySelectorAll对元素的操作,为你的DOM API基础扫盲~
    Linux 安全 - Credentials
    阿里云服务器使用经验总结
    陈学智升任VMware全球副总裁、大中华区总裁,面临四个挑战
    React组件渲染和更新的过程
    <数据集>COCO2017行人识别数据集<目标检测>
    Win11启动修复无效怎么办
    anaconda 虚拟环境中安装nginx
    力扣:647. 回文子串
    Cannot add foreign key constraint全网唯一全面正解
  • 原文地址:https://blog.csdn.net/qq_28087491/article/details/126904616