《视觉SLAM十四讲》公式推导(一)

news2025/9/14 1:49:38

文章目录

      • CH3 三维空间刚体运动
        • CH3-1 旋转矩阵的推导
        • CH3-2 旋转矩阵是正交矩阵的证明
        • CH3-3 变换矩阵的逆的推导
        • CH3-4 罗德里格斯公式推导

CH3 三维空间刚体运动

CH3-1 旋转矩阵的推导

(1)二维空间中的旋转矩阵

易得

{ x ′ = ∣ O P ′ ∣ c o s ( θ + β ) = ∣ O P ∣ ( c o s θ ⋅ c o s β − s i n θ ⋅ s i n β ) = x c o s β − y s i n β y ′ = ∣ O P ′ ∣ s i n ( θ + β ) = ∣ O P ∣ ( s i n θ ⋅ c o s β + c o s θ ⋅ s i n β ) = y c o s β + x s i n β \left\{ \begin{matrix} x'=|OP'|cos(\theta+\beta)=|OP|(cos\theta\cdot cos\beta-sin\theta\cdot sin\beta)=xcos\beta-ysin\beta \\ y'=|OP'|sin(\theta+\beta)=|OP|(sin\theta\cdot cos\beta+cos\theta\cdot sin\beta)=ycos\beta+xsin\beta \end{matrix} \right. {x=OPcos(θ+β)=OP(cosθcosβsinθsinβ)=xcosβysinβy=OPsin(θ+β)=OP(sinθcosβ+cosθsinβ)=ycosβ+xsinβ

写为矩阵形式即

[ x ′ y ′ ] = [ c o s β − s i n β s i n β c o s β ] [ x y ] \left[\begin{array}{l} x' \\ y' \end{array}\right]= \left[\begin{array}{l} cos\beta & -sin\beta \\ sin\beta & cos\beta \end{array}\right] \left[\begin{array}{l} x \\ y \end{array}\right] [xy]=[cosβsinβsinβcosβ][xy]

(2)三维空间中的旋转矩阵

以绕 z z z 轴旋转为例:

将向量投影到 X-Y 平面,类似的有

{ x ′ = x c o s β − y s i n β y ′ = y c o s β + x s i n β z ′ = z (3-1-1) \left\{ \begin{matrix} x'=xcos\beta-ysin\beta \\ y'=ycos\beta+xsin\beta \\ z'=z \end{matrix} \right. \tag{3-1-1} x=xcosβysinβy=ycosβ+xsinβz=z(3-1-1)

写成矩阵形式

[ x ′ y ′ z ′ ] = [ c o s β − s i n β 0 s i n β c o s β 0 0 0 1 ] [ x y z ] (3-1-2) \left[\begin{array}{l} x' \\ y' \\ z' \end{array}\right]= \left[\begin{array}{l} cos\beta & -sin\beta & 0\\ sin\beta & cos\beta & 0\\ 0 & 0 & 1 \end{array}\right] \left[\begin{array}{l} x \\ y \\ z \end{array}\right] \tag{3-1-2} xyz = cosβsinβ0sinβcosβ0001 xyz (3-1-2)

记为

a ′ = R a (3-1-3) \boldsymbol{a^{\prime}}=\boldsymbol{Ra} \tag{3-1-3} a=Ra(3-1-3)

将式中 β \beta β 改为 − β -\beta β,来表示向量 OP’ 顺时针旋转 − β -\beta β 角度后,回到 OP 的过程,此时

[ x y z ] = [ c o s β s i n β 0 − s i n β c o s β 0 0 0 1 ] [ x ′ y ′ z ′ ] (3-1-4) \left[\begin{array}{l} x \\ y \\ z \end{array}\right]= \left[\begin{array}{l} cos\beta & sin\beta & 0\\ -sin\beta & cos\beta & 0\\ 0 & 0 & 1 \end{array}\right] \left[\begin{array}{l} x' \\ y' \\ z' \end{array}\right] \tag{3-1-4} xyz = cosβsinβ0sinβcosβ0001 xyz (3-1-4)

可以看出

a = R T a ′ (3-1-5) \boldsymbol{a}=\boldsymbol{R^Ta'} \tag{3-1-5} a=RTa(3-1-5)

由于 R R R 是正交矩阵,也即

a = R − 1 a ′ (3-1-6) \boldsymbol{a}=\boldsymbol{R^{-1}a'} \tag{3-1-6} a=R1a(3-1-6)

也就是说, R − 1 \boldsymbol{R^{-1}} R1 表示向量经反方向旋转回到原向量的过程。

当然,也可以单纯从数学角度推导,将式(3-1-3) 两端分别左乘 R − 1 \boldsymbol{R^{-1}} R1,同样可以得到式 (3-1-5)。

CH3-2 旋转矩阵是正交矩阵的证明

(1)只需证明 R R T = I \boldsymbol{RR^T=I} RRT=I 即证明 R T = R − 1 \boldsymbol{R^T = R^{-1}} RT=R1 即可。

(2)分块矩阵转置:先对整体进行转置,再对每一个分块进行转置,例如向量 A = [ A 1 , A 2 , A 3 , . . . , A N ] \boldsymbol{A=[A_1, A_2, A_3,...,A_N]} A=[A1,A2,A3,...,AN],则其转置为

A T = [ A 1 T A 2 T A 3 T . . . A N T ] (3-2-1) \boldsymbol{A}^T=\left[\begin{array}{l} \boldsymbol{A_1}^T\\ \boldsymbol{A_2}^T \\ \boldsymbol{A_3}^T \\ ...\\ \boldsymbol{A_N}^T \end{array}\right] \tag{3-2-1} AT= A1TA2TA3T...ANT (3-2-1)

(3) ( A B ) T = B T A T \boldsymbol{(AB)^T=B^TA^T} (AB)T=BTAT

(4)下面证明旋转矩阵 R \boldsymbol{R} R 是正交矩阵:

不妨设变换前后坐标系基底分别为 [ e 1 , e 2 , e 3 ] [\boldsymbol{e_1}, \boldsymbol{e_2}, \boldsymbol{e_3}] [e1,e2,e3] [ e 1 ′ , e 2 ′ , e 3 ′ ] [\boldsymbol{e_1'}, \boldsymbol{e_2'}, \boldsymbol{e_3'}] [e1,e2,e3],由于向量本身并未改变,则有

[ e 1 , e 2 , e 3 ] [ a 1 a 2 a 3 ] = [ e 1 ′ , e 2 ′ , e 3 ′ ] [ a 1 ′ a 2 ′ a 3 ′ ] (3-2-2) \left[\boldsymbol{e}_{1}, \boldsymbol{e}_{2}, \boldsymbol{e}_{3}\right]\left[\begin{array}{l} a_{1} \\ a_{2} \\ a_{3} \end{array}\right]=\left[\boldsymbol{e}_{1}^{\prime}, \boldsymbol{e}_{2}^{\prime}, \boldsymbol{e}_{3}^{\prime}\right]\left[\begin{array}{c} a_{1}^{\prime} \\ a_{2}^{\prime} \\ a_{3}^{\prime} \end{array}\right] \tag{3-2-2} [e1,e2,e3] a1a2a3 =[e1,e2,e3] a1a2a3 (3-2-2)

将上式两端分别左乘 [ e 1 T e 2 T e 3 T ] \left[\begin{array}{l} \boldsymbol{e_{1}^T} \\ \boldsymbol{e}_{2}^T \\ \boldsymbol{e}_{3}^T \end{array}\right] e1Te2Te3T 得到,

[ a 1 a 2 a 3 ] = [ e 1 T e 1 ′ e 1 T e 2 ′ e 1 T e 3 ′ e 2 T e 1 ′ e 2 T e 2 ′ e 2 T e 3 ′ e 3 T e 1 ′ e 3 T e 2 ′ e 3 T e 3 ′ ] [ a 1 ′ a 2 ′ a 3 ′ ] (3-2-3) \left[\begin{array}{l} a_{1} \\ a_{2} \\ a_{3} \end{array}\right]=\left[\begin{array}{lll} \boldsymbol{e}_{1}^T \boldsymbol{e}_{1}^{\prime} & \boldsymbol{e}_{1}^T \boldsymbol{e}_{2}^{\prime} & \boldsymbol{e}_{1}^T \boldsymbol{e}_{3}^{\prime} \\ \boldsymbol{e}_{2}^T \boldsymbol{e}_{1}^{\prime} & \boldsymbol{e}_{2}^T \boldsymbol{e}_{2}^{\prime} & \boldsymbol{e}_{2}^T \boldsymbol{e}_{3}^{\prime} \\ \boldsymbol{e}_{3}^T \boldsymbol{e}_{1}^{\prime} & \boldsymbol{e}_{3}^T \boldsymbol{e}_{2}^{\prime} & \boldsymbol{e}_{3}^T \boldsymbol{e}_{3}^{\prime} \end{array}\right]\left[\begin{array}{c} a_{1}^{\prime} \\ a_{2}^{\prime} \\ a_{3}^{\prime} \end{array}\right] \tag{3-2-3} a1a2a3 = e1Te1e2Te1e3Te1e1Te2e2Te2e3Te2e1Te3e2Te3e3Te3 a1a2a3 (3-2-3)

R = [ e 1 T e 1 ′ e 1 T e 2 ′ e 1 T e 3 ′ e 2 T e 1 ′ e 2 T e 2 ′ e 2 T e 3 ′ e 3 T e 1 ′ e 3 T e 2 ′ e 3 T e 3 ′ ] (3-2-4) \boldsymbol{R}=\left[\begin{array}{lll} \boldsymbol{e}_{1}^T \boldsymbol{e}_{1}^{\prime} & \boldsymbol{e}_{1}^T \boldsymbol{e}_{2}^{\prime} & \boldsymbol{e}_{1}^T \boldsymbol{e}_{3}^{\prime} \\ \boldsymbol{e}_{2}^T \boldsymbol{e}_{1}^{\prime} & \boldsymbol{e}_{2}^T \boldsymbol{e}_{2}^{\prime} & \boldsymbol{e}_{2}^T \boldsymbol{e}_{3}^{\prime} \\ \boldsymbol{e}_{3}^T \boldsymbol{e}_{1}^{\prime} & \boldsymbol{e}_{3}^T \boldsymbol{e}_{2}^{\prime} & \boldsymbol{e}_{3}^T \boldsymbol{e}_{3}^{\prime} \end{array}\right] \tag{3-2-4} R= e1Te1e2Te1e3Te1e1Te2e2Te2e3Te2e1Te3e2Te3e3Te3 (3-2-4)

这是向量 a ′ \boldsymbol{a'} a 经旋转得到 a \boldsymbol{a} a 的旋转矩阵。

再将式 (3-8) 两端分别左乘 [ e 1 ′ T e 2 ′ T e 3 ′ T ] \left[\begin{array}{l} \boldsymbol{e_{1}'^T} \\ \boldsymbol{e}_{2}'^T \\ \boldsymbol{e}_{3}'^T \end{array}\right] e1Te2Te3T 得到,

[ e 1 ′ T e 1 e 1 ′ T e 2 e 1 ′ T e 3 e 2 ′ T e 1 e 2 ′ T e 2 e 2 ′ T e 3 e 3 ′ T e 1 e 3 ′ T e 2 e 3 ′ T e 3 ] [ a 1 a 2 a 3 ] = [ a 1 ′ a 2 ′ a 3 ′ ] (3-2-5) \left[\begin{array}{lll} \boldsymbol{e}_{1}'^T \boldsymbol{e}_{1} & \boldsymbol{e}_{1}'^T \boldsymbol{e}_{2} & \boldsymbol{e}_{1}'^T \boldsymbol{e}_{3}\\ \boldsymbol{e}_{2}'^T \boldsymbol{e}_{1} & \boldsymbol{e}_{2}'^T \boldsymbol{e}_{2}& \boldsymbol{e}_{2}'^T \boldsymbol{e}_{3} \\ \boldsymbol{e}_{3}'^T \boldsymbol{e}_{1} & \boldsymbol{e}_{3}'^T \boldsymbol{e}_{2} & \boldsymbol{e}_{3}'^T \boldsymbol{e}_{3} \end{array}\right]\left[\begin{array}{c} a_{1} \\ a_{2}\\ a_{3} \end{array}\right]= \left[\begin{array}{l} a_{1}' \\ a_{2}' \\ a_{3}' \end{array}\right] \tag{3-2-5} e1Te1e2Te1e3Te1e1Te2e2Te2e3Te2e1Te3e2Te3e3Te3 a1a2a3 = a1a2a3 (3-2-5)

显然,这是向量 a \boldsymbol{a} a 经过反方向旋转得到 a ′ \boldsymbol{a'} a 的过程,那么有

R − 1 = [ e 1 ′ T e 1 e 1 ′ T e 2 e 1 ′ T e 3 e 2 ′ T e 1 e 2 ′ T e 2 e 2 ′ T e 3 e 3 ′ T e 1 e 3 ′ T e 2 e 3 ′ T e 3 ] (3-2-6) \boldsymbol{R^{-1}}=\left[\begin{array}{lll} \boldsymbol{e}_{1}'^T \boldsymbol{e}_{1} & \boldsymbol{e}_{1}'^T \boldsymbol{e}_{2} & \boldsymbol{e}_{1}'^T \boldsymbol{e}_{3}\\ \boldsymbol{e}_{2}'^T \boldsymbol{e}_{1} & \boldsymbol{e}_{2}'^T \boldsymbol{e}_{2}& \boldsymbol{e}_{2}'^T \boldsymbol{e}_{3} \\ \boldsymbol{e}_{3}'^T \boldsymbol{e}_{1} & \boldsymbol{e}_{3}'^T \boldsymbol{e}_{2} & \boldsymbol{e}_{3}'^T \boldsymbol{e}_{3} \end{array}\right] \tag{3-2-6} R1= e1Te1e2Te1e3Te1e1Te2e2Te2e3Te2e1Te3e2Te3e3Te3 (3-2-6)

根据分块矩阵转置规则,易得

R T = R − 1 (3-2-7) \boldsymbol{R^T = R^{-1}} \tag{3-2-7} RT=R1(3-2-7)

证毕。

CH3-3 变换矩阵的逆的推导

(1)初等行变换法求矩阵的逆:将矩阵 A \boldsymbol{A} A 写成增广矩阵的形式即 ( A ∣ I ) \boldsymbol{(A | I)} (AI) ,经初等行变换,变为 ( I ∣ A − 1 ) \boldsymbol{(I | A^{-1})} (IA1),则求出矩阵 A \boldsymbol{A} A 的逆。

(2)已知三维空间变换矩阵为:

T = [ R 3 × 3 t 3 × 1 0 T 1 ] (3-3-1) \boldsymbol{T}=\left[\begin{array}{ll} \boldsymbol{R}_{3\times3} & \boldsymbol{t}_{3\times1} \\ \mathbf{0}^{\mathrm{T}} & 1 \end{array}\right] \tag{3-3-1} T=[R3×30Tt3×11](3-3-1)

写成增广矩阵

[ R 3 × 3 t 3 × 1 E 3 × 3 0 0 T 1 0 1 ] (3-3-2) \left[\begin{array}{cc|cc} \boldsymbol{R}_{3\times3} & \boldsymbol{t}_{3\times1} & \boldsymbol{E}_{3\times3} & 0 \\ \mathbf{0}^{\mathrm{T}} & 1 & 0 & 1\\ \end{array}\right] \tag{3-3-2} [R3×30Tt3×11E3×3001](3-3-2)

经过初等行变换,将前两列变为单位矩阵时,后两列即为 T − 1 \boldsymbol{T^{-1}} T1

首先,将第一行左乘 R 3 × 3 − 1 \boldsymbol{R}_{3\times3}^{-1} R3×31,上式变为

[ E 3 × 3 R 3 × 3 − 1 t 3 × 1 R 3 × 3 − 1 0 3 × 1 0 T 1 0 1 ] (3-3-3) \left[\begin{array}{cc|cc} \boldsymbol{E}_{3\times3} & \boldsymbol{R}_{3\times3}^{-1}\boldsymbol{t}_{3\times1} & \boldsymbol{R}_{3\times3}^{-1} & \boldsymbol{0}_{3\times1} \\ \mathbf{0}^{\mathrm{T}} & 1 & 0 & 1\\ \end{array}\right] \tag{3-3-3} [E3×30TR3×31t3×11R3×31003×11](3-3-3)

再将第二行乘 − R 3 × 3 − 1 t 3 × 1 -\boldsymbol{R}_{3\times3}^{-1}\boldsymbol{t}_{3\times1} R3×31t3×1 ,加到第一行上,得

[ E 3 × 3 0 3 × 1 R 3 × 3 − 1 − R 3 × 3 − 1 t 3 × 1 0 T 1 0 1 ] (3-3-4) \left[\begin{array}{cc|cc} \boldsymbol{E}_{3\times3} & \boldsymbol{0}_{3\times1} & \boldsymbol{R}_{3\times3}^{-1} & -\boldsymbol{R}_{3\times3}^{-1}\boldsymbol{t}_{3\times1}\\ \mathbf{0}^{\mathrm{T}} & 1 & 0 & 1\\ \end{array}\right] \tag{3-3-4} [E3×30T03×11R3×310R3×31t3×11](3-3-4)

又因为 R \boldsymbol{R} R 为正交矩阵,有 R − 1 = R T \boldsymbol{R^{-1}=R^T} R1=RT

则变换矩阵的逆矩阵为

T − 1 = [ R T − R T t 0 T 1 ] (3-3-5) \boldsymbol{T}^{-1}=\left[\begin{array}{cc} \boldsymbol{R}^{\mathrm{T}} & -\boldsymbol{R}^{\mathrm{T}} \boldsymbol{t} \\ \mathbf{0}^{\mathrm{T}} & 1 \end{array}\right] \tag{3-3-5} T1=[RT0TRTt1](3-3-5)

CH3-4 罗德里格斯公式推导

(1)注意绕轴旋转的方式,(类似直线绕轴旋转形成圆锥的过程),也就是说,该直线是母线,所绕的轴是中心线。

(2)向量点乘有交换律 a ⃗ ⋅ b ⃗ = b ⃗ ⋅ a ⃗ \vec{a} \cdot \vec{b}=\vec{b} \cdot \vec{a} a b =b a ;没有结合律,即 ( a ⃗ ⋅ b ⃗ ) ⋅ c ⃗ ≠ a ⃗ ⋅ ( b ⃗ ⋅ c ⃗ ) (\vec{a} \cdot \vec{b})\cdot\vec{c} \not=\vec{a} \cdot (\vec{b} \cdot \vec{c}) (a b )c =a (b c )。矩阵乘法有结合律即 ( A B ) C = A ( B C ) \boldsymbol{(AB)C=A(BC)} (AB)C=A(BC)

(3)向量投影定理

如图,有

∣ a ⃗ ∣ c o s θ = a ⃗ ⋅ b ⃗ ∣ b ⃗ ∣ = a ⃗ ⋅ b 0 ⃗ (3-4-1) |\vec{a}|cos\theta=\frac {\vec{a}\cdot\vec{b}}{|\vec{b}|}=\vec{a}\cdot\vec{b_0} \tag{3-4-1} a cosθ=b a b =a b0 (3-4-1)

其中 b 0 ⃗ \vec{b_0} b0 为与向量 b ⃗ \vec{b} b 同向的单位向量。

式(3-19)表示向量 a ⃗ \vec{a} a 在向量 b ⃗ \vec{b} b 上的投影的模长为 a ⃗ ⋅ b 0 ⃗ \vec{a}\cdot\vec{b_0} a b0 ,那么,其在 b ⃗ \vec{b} b 上的投影向量为 ( a ⃗ ⋅ b 0 ⃗ ) ⋅ b 0 ⃗ (\vec{a}\cdot\vec{b_0})\cdot\vec{b_0} (a b0 )b0

(4)下面进行罗德里格斯公式的推导:

如上图所示,向量 v ⃗ \vec{v} v u ⃗ \vec{u} u 旋转 θ \theta θ 得到 v ′ ⃗ \vec{v'} v ,其中 u ⃗ \vec{u} u 是单位向量

① 向量 v ⃗ \vec{v} v 分解: v ⃗ = v ⃗ ∥ + v ⃗ ⊥ \vec{v}=\vec{v}_{\parallel}+\vec{v}_{\perp} v =v +v

② 根据向量投影定理, v ⃗ ∥ = ( v ⃗ ⋅ u ⃗ ) ⋅ u ⃗ \vec{v}_{\parallel}=(\vec{v}\cdot\vec{u})\cdot\vec{u} v =(v u )u

③ 综合 ① ② ,得

v ⃗ ⊥ = v ⃗ − v ⃗ ∥ = v ⃗ − ( v ⃗ ⋅ u ⃗ ) ⋅ u ⃗ (3-4-2) \vec{v}_{\perp}=\vec{v}-\vec{v}_{\parallel}=\vec{v}-(\vec{v}\cdot\vec{u})\cdot\vec{u} \tag{3-4-2} v =v v =v (v u )u (3-4-2)

④ 借助辅助向量 w ⃗ \vec{w} w ,且 w ⃗ = u ⃗ × v ⃗ ⊥ \vec{w}=\vec{u}\times\vec{v}_{\perp} w =u ×v ,即向量 w ⃗ \vec{w} w u ⃗ \vec{u} u v ⃗ ⊥ \vec{v}_{\perp} v 两两垂直。俯视图如下:

则有

w ⃗ = u ⃗ × v ⃗ ⊥ = u ⃗ × ( v ⃗ − v ⃗ ∥ ) = u ⃗ × v ⃗ − u ⃗ × v ⃗ ∥ = u ⃗ × v ⃗ (3-4-3) \begin{aligned} \vec{w}=\vec{u}\times\vec{v}_{\perp}=&\vec{u}\times(\vec{v}-\vec{v}_{\parallel})\\ =& \vec{u}\times\vec{v}-\vec{u}\times\vec{v}_{\parallel}\\ =& \vec{u}\times\vec{v} \end{aligned} \tag{3-4-3} w =u ×v ===u ×(v v )u ×v u ×v u ×v (3-4-3)

⑤ 将 v ′ ⃗ ⊥ \vec{v'}_{\perp} v 投影到 v ⃗ ⊥ \vec{v}_{\perp} v 和 $\vec{w} $ 上,则有

v ′ ⃗ ⊥ = v ⃗ v ′ + v ⃗ w ′ (3-4-4) \vec{v'}_{\perp}=\vec{v}_v'+\vec{v}_w' \tag{3-4-4} v =v v+v w(3-4-4)

⑥ 由上图

∣ v ′ ⃗ ⊥ ∣ = ∣ w ⃗ ∣ = ∣ v ⃗ ⊥ ∣ (3-4-5) |\vec{v'}_{\perp}|=|\vec{w}|=|\vec{v}_{\perp}| \tag{3-4-5} v =w =v (3-4-5)

∣ v ⃗ w ′ ∣ = ∣ v ′ ⃗ ⊥ ∣ s i n θ = ∣ w ⃗ ∣ s i n θ |\vec{v}_w'|=|\vec{v'}_{\perp}|sin\theta=|\vec{w}|sin\theta v w=v sinθ=w sinθ

结合式(2-23),有

v ⃗ w ′ = w ⃗ s i n θ (3-4-6) \vec{v}_w'=\vec{w}sin\theta \tag{3-4-6} v w=w sinθ(3-4-6)

同理

∣ v ⃗ v ′ ∣ = ∣ v ⃗ ⊥ ∣ c o s θ |\vec{v}_v'|=|\vec{v}_{\perp}|cos\theta v v=v cosθ

v ⃗ v ′ = v ⃗ ⊥ c o s θ (3-4-7) \vec{v}_v'=\vec{v}_{\perp}cos\theta \tag{3-4-7} v v=v cosθ(3-4-7)

⑦ 综合式(3-22)、(3-24)、(3-25),得

v ′ ⃗ ⊥ = v ⃗ v ′ + v ⃗ w ′ = v ⃗ ⊥ c o s θ + w ⃗ s i n θ (3-4-8) \vec{v'}_{\perp}=\vec{v}_v'+\vec{v}_w'=\vec{v}_{\perp}cos\theta+\vec{w}sin\theta \tag{3-4-8} v =v v+v w=v cosθ+w sinθ(3-4-8)

⑧ 综上,

v ′ ⃗ = v ⃗ ∥ + v ′ ⃗ ⊥ = ( v ⃗ ⋅ u ⃗ ) ⋅ u ⃗ + v ⃗ ⊥ c o s θ + w ⃗ s i n θ = ( v ⃗ ⋅ u ⃗ ) ⋅ u ⃗ + ( v ⃗ − ( v ⃗ ⋅ u ⃗ ) ⋅ u ⃗ ) c o s θ + u ⃗ × v ⃗ s i n θ = ( v ⃗ ⋅ u ⃗ ) ⋅ u ⃗ + s i n θ u ⃗ × v ⃗ + c o s θ v ⃗ − c o s θ ( v ⃗ ⋅ u ⃗ ) ⋅ u ⃗ = c o s θ v ⃗ + ( 1 − c o s θ ) ( v ⃗ ⋅ u ⃗ ) ⋅ u ⃗ + s i n θ u ⃗ × v ⃗ (3-4-9) \begin{aligned} \vec{v'}=&\vec{v}_{\parallel}+\vec{v'}_{\perp}\\ =& (\vec{v}\cdot\vec{u})\cdot\vec{u}+\vec{v}_{\perp}cos\theta+\vec{w}sin\theta\\ =& (\vec{v}\cdot\vec{u})\cdot\vec{u}+(\vec{v}-(\vec{v}\cdot\vec{u})\cdot\vec{u})cos\theta+\vec{u}\times\vec{v}sin\theta\\ =& (\vec{v}\cdot\vec{u})\cdot\vec{u}+sin\theta\vec{u}\times\vec{v}+cos\theta\vec{v}-cos\theta(\vec{v}\cdot\vec{u})\cdot\vec{u}\\ =& cos\theta\vec{v}+(1-cos\theta)(\vec{v}\cdot\vec{u})\cdot\vec{u}+sin\theta\vec{u}\times\vec{v} \end{aligned} \tag{3-4-9} v =====v +v (v u )u +v cosθ+w sinθ(v u )u +(v (v u )u )cosθ+u ×v sinθ(v u )u +sinθu ×v +cosθv cosθ(v u )u cosθv +(1cosθ)(v u )u +sinθu ×v (3-4-9)

⑨ 设矩阵

u = [ u x u y u z ] , v = [ v x v y v z ] \boldsymbol{u}=\left[\begin{array}{c} u_{x} \\ u_{y}\\ u_{z} \end{array}\right], \boldsymbol{v}=\left[\begin{array}{c} v_{x} \\ v_{y}\\ v_{z} \end{array}\right] u= uxuyuz v= vxvyvz

1)将向量点乘转换为矩阵乘法,(此处应用向量交换律矩阵结合律

( v ⃗ ⋅ u ⃗ ) ⋅ u ⃗ = u ⃗ ⋅ ( v ⃗ ⋅ u ⃗ ) = u ( u T v ) = u u T v (3-4-10) (\vec{v}\cdot\vec{u})\cdot\vec{u}=\vec{u}\cdot(\vec{v}\cdot\vec{u})=\boldsymbol{u}(\boldsymbol{u}^T\boldsymbol{v})=\boldsymbol{u}\boldsymbol{u}^T\boldsymbol{v} \tag{3-4-10} (v u )u =u (v u )=u(uTv)=uuTv(3-4-10)

2)写成反对称矩阵形式

u ⃗ × v ⃗ = ∣ i j k u x u y u z v x v y v z ∣ = [ u y v z − u z v y u z v x − u x v z u x v y − u y v x ] = [ 0 − u z u y u z 0 − u x − u y u x 0 ] [ v x v y v z ] = u ∧ v (3-4-11) \vec{u}\times\vec{v}=\left| \begin{array}{cccc} \boldsymbol{i} & \boldsymbol{j} & \boldsymbol{k} \\ u_{x} & u_{y} & u_{z}\\ v_{x} & v_{y} & v_{z} \end{array} \right|=\left[\begin{array}{c} u_{y}v_{z}-u_{z}v_{y} \\ u_{z}v_{x}-u_{x}v_{z}\\ u_{x}v_{y}-u_{y}v_{x} \end{array}\right]= \left[\begin{array}{c} 0 & -u_{z} & u_{y} \\ u_{z} & 0 & -u_{x}\\ -u_{y} & u_{x} & 0 \end{array}\right]\left[\begin{array}{c} v_{x}\\ v_{y}\\ v_{z} \end{array}\right]=\boldsymbol{u}^{\wedge}\boldsymbol{v} \tag{3-4-11} u ×v = iuxvxjuyvykuzvz = uyvzuzvyuzvxuxvzuxvyuyvx = 0uzuyuz0uxuyux0 vxvyvz =uv(3-4-11)

⑩ 因为 $ \boldsymbol{v’}=\boldsymbol{R}\boldsymbol{v}$

综上所述,式(3-27)可化为

R = c o s θ I + ( 1 − c o s θ ) u u T + s i n θ u ∧ (3-4-12) \boldsymbol{R}=cos\theta\boldsymbol{I}+(1-cos\theta)\boldsymbol{u}\boldsymbol{u}^T+sin\theta\boldsymbol{u}^{\wedge} \tag{3-4-12} R=cosθI+(1cosθ)uuT+sinθu(3-4-12)

证毕。

(5)旋转矩阵到旋转向量的转换

将式(3-4-12)两边取迹,得

t r ( R ) = c o s θ t r ( I ) + ( 1 − c o s θ ) t r ( u u T ) + s i n θ t r ( u ∧ ) = 3 c o s θ + ( 1 − c o s θ ) + 0 = 1 + 2 c o s θ (3-4-13) \begin{aligned} tr(\boldsymbol{R})=& cos\theta tr(\boldsymbol{I})+(1-cos\theta)tr(\boldsymbol{u}\boldsymbol{u}^T)+sin\theta tr(\boldsymbol{u}^{\wedge})\\ =&3cos\theta+(1-cos\theta)+0\\ =&1+2cos\theta \end{aligned} \tag{3-4-13} tr(R)===cosθtr(I)+(1cosθ)tr(uuT)+sinθtr(u)3cosθ+(1cosθ)+01+2cosθ(3-4-13)

其中, t r ( u u T ) = u x 2 + u y 2 + u z 2 = 1 tr(\boldsymbol{u}\boldsymbol{u}^T)=u_x^2+u_y^2+u_z^2=1 tr(uuT)=ux2+uy2+uz2=1(向量 u \boldsymbol{u} u是单位向量,模长为1)。

那么,对于转角 θ \theta θ

θ = a r c c o s ( t r ( R ) − 1 2 ) (3-4-14) \theta=arccos(\frac {tr(\boldsymbol{R})-1} {2}) \tag{3-4-14} θ=arccos(2tr(R)1)(3-4-14)

对于转轴 u \boldsymbol{u} u 有,

R u = u (3-4-15) \boldsymbol{Ru=u} \tag{3-4-15} Ru=u(3-4-15)

即转轴 u \boldsymbol{u} u 是旋转矩阵 R \boldsymbol{R} R 特征值为 1 对应的特征向量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1095085.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高校教务系统登录页面JS分析——重庆交通大学

高校教务系统密码加密逻辑及JS逆向 本文将介绍高校教务系统的密码加密逻辑以及使用JavaScript进行逆向分析的过程。通过本文,你将了解到密码加密的基本概念、常用加密算法以及如何通过逆向分析来破解密码。 本文仅供交流学习,勿用于非法用途。 一、密码加…

云耀服务器L实例部署Discuz!Q论坛|华为云云耀云服务器L实例评测使用体验

文章目录 云耀服务器L实例部署Discuz!Q论坛1. 华为云云耀服务器L实例介绍2. Discuz!Q 简介3. 部署华为云云耀服务器L实例3.1 云耀服务器L实例购买3.1.1 云耀服务器L实例初始化配置3.1.2 远程登录云耀服务器L实例 4. Discuz!Q安装部署4.1 Apache安装4.2 中间件配置4.…

SpringCloud:分布式事务Seata部署和集成

一、部署Seata的tc-server 1.下载 首先我们要下载seata-server包,地址在http://seata.io/zh-cn/blog/download.html 2.解压 在非中文目录解压缩这个zip包,其目录结构如下: 3.修改配置 修改conf目录下的registry.conf文件: 内容…

【重拾C语言】十三、动态数据组织(二)链表(创建、遍历检索、插入、删除、交换)

目录 前言 十三、动态数据组织 13.1~2 动态数据组织、动态变量 13.3 链表 13.3.1 单向链表—创建 13.3.2 单向链表—遍历检索 13.3.3 单向链表—插入、删除与交换 13.3.4 单向链表—例题 13.3.5 栈和队列 前言 链表是一种常见的动态数据结构,它由一系列节点…

【Kolla-ansible 16.1.0.dev156】部署/评估快速入门(报错的文章,后面不用看了)

Kolla-ansible 16.1.0.dev156 部署/评估快速入门 报错的文章,后面不用看了 主机必须满足以下最低要求: 2 个网络接口 8GB 主内存 40GB 磁盘空间 rootubuntu:~# sudo apt update Hit:1 http://mirrors.tuna.tsinghua.edu.cn/ubuntu jammy InRelease Get:2…

【LeetCode 算法专题突破】双指针(⭐)

文章目录 前言1. 移动零题目描述代码 2. 复写零题目描述代码 3. 快乐数题目描述代码 4. 盛最多水的容器题目描述代码 5. 有效三角形的个数题目描述代码 6. 三数之和题目描述代码 7. 四数之和题目描述代码 总结 前言 学算法入门必学的一个章节,双指针算法&#xff0…

Maven 快速入门

文章目录 一、Maven 间接和快速入门1.1 Maven 介绍1.2 Maven 主要作用理解1.3 Maven 安装和配置 二、基于 IDEA 的 Maven 工程创建2.1 梳理 Maven 工程 GAVP 属性2.2 IDEA 构建 Maven JavaSE 工程2.3 IDEA 构建 Maven JavaEE 工程2.4 Maven 工程项目结构说明 三、Maven 核心功能…

巧用正则表达式

文章目录 题目巧用正则表达式,题目将十进制转为16进制,可以采用Java的语法来表示 题目 巧用正则表达式,题目将十进制转为16进制,可以采用Java的语法来表示 String nInteger.toString(num,16); 那如何确定是否都是字母呢a-f呢&…

使用Python创建faker实例生成csv大数据测试文件并导入Hive数仓

文章目录 一、Python生成数据1.1 代码说明1.2 代码参考 二、数据迁移2.1 从本机上传至服务器2.2 检查源数据格式2.3 检查大小并上传至HDFS 三、beeline建表3.1 创建测试表并导入测试数据3.2 建表显示内容 四、csv文件首行列名的处理4.1 创建新的表4.2 将旧表过滤首行插入新表 一…

qml基础语法

文章目录 基础语法例子 属性例子 核心元素元素item RectangleText例子 Image例子 MouseArea例子Component(组件)例子简单变换例子 定位器ColumnRowGridFlowRepeater 布局InputKeys 基础语法 QML是一种用于描述对象如何相互关联的声明式语言。  QtQuick是…

qt-C++笔记之按行读取文件并切换复选框打印复选框拼接出的字符串

qt-C笔记之按行读取文件并切换复选框打印复选框拼接出的字符串 code review! 文章目录 qt-C笔记之按行读取文件并切换复选框打印复选框拼接出的字符串1.运行2.文件结构3.main.cc4.main.pro5.a.txt6.b.txt 1.运行 2.文件结构 3.main.cc 代码 #include <QApplication> #…

简易通讯录Promax

前言&#xff1a;哈喽小伙伴们&#xff0c;我们在前边的文章中已经介绍过了如何用C语言实现一个简易的通讯录&#xff0c;但是我们这个通讯录存在两个问题&#xff1a; 一是通讯录的大小不能自由变化&#xff1b;二是通讯录的信息在程序退出之后就没有了&#xff0c;不能保存。…

【C语言】进阶——文件操作

目录 前言 1.什么是文件 程序文件&#xff1a; 数据文件&#xff1a; 文件名&#xff1a; 2.文件的打开和关闭 2.1文件指针 2.2文件指针使用 2.3文件的打开和关闭 2.4 文件的使用方式 2.5文件的顺序读写 ✌字符输出函数fputc ✌字符输入函数fgetc ✌文本行输…

【重拾C语言】十三、动态数据组织(一)动态变量(malloc、calloc、realloc、free)

目录 前言 十三、动态数据组织 13.1 动态数据组织 13.2 动态变量 malloc函数 calloc函数 realloc函数 free函数 程序实例 前言 C语言中的动态数据组织是指在程序运行时根据需要动态地分配内存空间来存储数据。这允许程序在运行时根据实际需求来创建、修改和释放数据结…

【数字IC设计】VCS门级网表仿真

本文参考自文章。 除了RTL仿真以外&#xff0c;在IC设计过程中还会进行门级网表的仿真。当设计代码功能仿真通过之后&#xff0c;我们便使用Design Compiler工具对其进行逻辑综合&#xff0c;将RTL代码转化为由与、或、非等门电路和触发器组成的电路&#xff0c;称为门级网表(n…

25栈和队列-理解栈和队列

目录 LeetCode之路——232. 用栈实现队列 分析&#xff1a; LeetCode之路——225. 用队列实现栈 分析&#xff1a; 栈&#xff08;Stack&#xff09;和队列&#xff08;Queue&#xff09;是两种基本的数据结构&#xff0c;它们在计算机科学中用于不同的目的。以下是它们的定…

【传输层协议】UDP/TCP结构特点与原理(详解)

文章目录 1. UDP1.1 UDP结构1.2 UDP特点1. 无连接2. 不可靠3. 面向数据报4. 缓冲区5. 大小受限6. 无序性 2. TCP2.1 TCP结构2.2 TCP特点1. 有连接2. 可靠性3. 面向字节流4. 拥塞控制5. 头部开销 2.3 TCP原理1. 确认应答&#xff08;安全机制&#xff09;2. 超时重传&#xff08…

Ceph分布式存储的简单介绍与Ceph集群的部署搭建

文章目录 1. 存储的概述1.1 单机存储设备1.1.1 DAS&#xff08;直接附加存储&#xff09;1.1.2 NAS&#xff08;网络附加存储&#xff09;1.1.3 SAN&#xff08;存储区域网络&#xff09; 1.2 单机存储的缺陷1.3 分布式存储&#xff08;软件定义的存储 SDS&#xff09;1.4 分布…

【计算机网络笔记】数据交换之报文交换和分组交换

系列文章目录报文交换分组交换存储-转发报文交换 vs 分组交换总结 系列文章目录 什么是计算机网络&#xff1f; 什么是网络协议&#xff1f; 计算机网络的结构 数据交换之电路交换 报文交换 报文&#xff1a;源&#xff08;应用&#xff09;发送的信息整体。比如一个文件、一…

Transformer 中 Positional Encoding 实现

参考博文&#xff1a; https://www.cnblogs.com/nickchen121/p/16470736.html 解决问题 位置编码的主要目的是确保模型能够理解序列中的元素之间的相对位置和顺序&#xff0c;从而更好地捕捉到语义信息。在Transformer模型中&#xff0c;位置编码通常与词嵌入&#xff08;w…