转载:http://www.cnblogs.com/jingrui/p/9712461.html

罗德里格斯(Rodrigues)旋转方程

 

此公式有2种形式,故而也有2种推导方法。具体的推导过程如下

罗德里格斯公式推导

 

一、条件

定义向量k是旋转轴的单位矢量,图中初始向量v绕k轴旋转Θ角得vrot

二、说明

所谓推导旋转方程,实则求出一个旋转矩阵R,使得vrot=Rv。所以我们要做的就是找出vrot与v之间的关系,并用矩阵来表示。

三、推导

1. 推导一

对v进行向量分解: v = v⊥+ v//

由点乘的投影几何意义可得: v// = (v • k)k         (v•k为标量,所以再乘k得到一个矢量)

根据向量减法可得:   v⊥= v - v// 

由旋转过程平行向量不变得:  vrot //= v//

为计算方便,对vrot⊥进行向量分解:vrot⊥=a+b

由图中的向量关系可得:b= cosΘ v⊥      a=sinΘ k x v   

( b可直接由图看出,而a则相对复杂。因为a是vrot⊥在w方向上的分量,所以我们必须用一矢量来表示。已知v⊥和vrot⊥模长相等,所以可用sinΘk x v⊥来表示a。

但是我们先前说过要找出v和vrot的关系,所以要用v去表示。我们发现sinα|v| =|v⊥|,所以sinΘk x v⊥=sinΘ k x v 。其中α为v与k的夹角)

综上可得:vrot = vrot⊥+vrot //

        = a + b + v//

        = sinΘ k x v  + cosΘ v⊥ + (v • k)k

        = sinΘ k x v  + cosΘ (v - v//)+ (v • k)k

        = sinΘ k x v  + cosΘ (v - (v • k)k)+ (v • k)k

        = cosΘ v + (1 - cosΘ )(v • k)k + sinΘ k x v

显然:到此步,我们还无法将其用矩阵来表示,所以需要对 (v • k)k 和 k x v 进行矩阵转换

由点乘的交换律和结合律得(v • k)k=k •(v • k)=k • (kτ • v)=k•kτ•v  ,其中的向量都是列向量

对于k x v可用叉乘矩阵来化简为Kv

罗德里格斯公式推导

 

所以,cosΘ v + (1 - cosΘ )(v • k)k + sinΘ k x v

   = cosΘ v + (1 - cosΘ )kkτv + sinΘKv

   =( cosΘ I + (1 - cosΘ )kkτ + sinΘK ) v                  

     =Rv

所以,旋转矩阵R=cosΘ I + (1 - cosΘ )kkτ + sinΘK,其中I为单位矩阵。

 

2.推导二

与推导一相比推导二的不同主要在于用叉乘去表示一些数据

用叉乘来表示v⊥可得:v⊥= -k x (k x v)

所以联立推导一中各式得: vrot = vrot⊥+ vrot //

              = a + b + v//

              = sinΘ k x v  + cosΘ v⊥ + v - v⊥

              = sinΘ k x v - cosΘk x (k x v) + v + k x (k x v)

              = v + (1 - cosΘ)k x (k x v) + sinΘ k x v

              = v + (1 - cosΘ)K2v + sinΘ Kv     (叉乘矩阵表示)

              =(I +  (1 - cosΘ)K2 + sinΘ K) v

              =Rv

从而得出第二种表达式R=I +  (1 - cosΘ)K2 + sinΘ K

显然,第二种表达式更为简便,在计算的过程中涉及的参数更少,所以这也是在进行旋转操作时常用的公式。

相关文章:

  • 2022-12-23
  • 2021-12-26
  • 2022-12-23
  • 2021-09-19
  • 2021-05-27
  • 2022-12-23
  • 2021-11-26
  • 2021-07-13
猜你喜欢
  • 2022-01-22
  • 2021-08-12
  • 2021-10-07
  • 2021-12-13
  • 2021-09-26
  • 2021-09-27
相关资源
相似解决方案