罗德里格斯(Rodrigues)旋转公式推导
原文链接1 罗德里格斯(Rodrigues)旋转公式简介对于三维空间向量vvv的旋转问题,给定罗德里格斯旋转向量qqq(由旋转轴nnn和旋转角度θ\thetaθ构成),那么,用罗德里格斯(Rodrigues)旋转公式就可以得出旋转后的向量v′v^{'}v′,如下:v′=v+(1−cosθ)∗N2⋅v+sinθ∗N⋅vv^{'}=v+(1-cos\theta)*N^{2}\cdot v+sin\th
1 罗德里格斯(Rodrigues)旋转公式简介
对于三维空间向量
v
v
v的旋转问题,给定罗德里格斯旋转向量
q
q
q(由旋转轴
n
n
n和旋转角度
θ
\theta
θ构成),那么,用罗德里格斯(Rodrigues)旋转公式就可以得出旋转后的向量
v
′
v'
v′,如下:
或
式中:
n ∧ n^{\wedge} n∧和 N N N表示向量 n n n的反对称矩阵形式。
罗德里格斯旋转公式可以用旋转矩阵表示,即将罗德里格斯旋转向量
q
q
q转换成3*3的旋转矩阵
R
R
R表示,如下:
或
因此,罗德里格斯向量将3D旋转表示成 ( n , θ ) (n,\theta) (n,θ)的形式,一般记作:
式中, θ = ∣ q ∣ = q x 2 + q y 2 + q z 2 \theta=|q|=\sqrt{q^2_x+q^2_y+q^2_z} θ=∣q∣=qx2+qy2+qz2。
罗德里格斯旋转被广泛应用于空间解析几何和计算机图形学领域,已成为刚体旋转运动的基本计算公式之一。
2 基础准备
2.1 旋转矩阵
旋转矩阵是单位正交矩阵,用于基向量之间的刚性变换(旋转部分),因此满足如下特性:
- R ⋅ R T = R ⋅ R − 1 = I R\cdot R^{T}=R\cdot R^{-1}=I R⋅RT=R⋅R−1=I;
- r i ⋅ r j = 0 ( i , j = 1 , 2 , 3 , i ≠ j ) r_i\cdot r_j=0\;(i,j=1,2,3,i\neq j) ri⋅rj=0(i,j=1,2,3,i=j);
- r i ⋅ r i = ∣ r i ∣ = 1 ( i = 1 , 2 , 3 ) r_i\cdot r_i=|r_i|=1\;(i=1,2,3) ri⋅ri=∣ri∣=1(i=1,2,3);
-
∣
R
∣
=
1
|R|=1
∣R∣=1;
2.2 旋转向量
一般旋转向量是用一个单位向量
n
n
n和旋转角度
θ
\theta
θ来表示旋转过程,向量默认是列向量。
n
=
[
n
x
n
y
n
z
]
n= \begin{bmatrix} n_{x} \\ n_{y} \\ n_{z} \\ \end{bmatrix}
n=⎣
⎡nxnynz⎦
⎤,
∣
n
∣
=
n
x
2
+
n
y
2
+
n
z
2
=
1
|n|=\sqrt{n^2_x+n^2_y+n^2_z}=1
∣n∣=nx2+ny2+nz2=1。
罗德里格斯旋转向量与一般旋转向量的异同点:
- 相同点:向量方向相同;
- 不同点:模长不同,一般旋转向量是单位向量,而罗德里格斯向量的模长是旋转角度。
2.3 向量叉积(Cross Product)
向量 a a a与向量 b b b的叉积 a × b a\times b a×b,可以表示成向量 a a a的反对称矩阵 A A A与向量 b b b的点积,如下:
上式可被简写成:
a × b = a ∧ ⋅ b = A ⋅ b a\times b=a^{\wedge}\cdot b=A\cdot b a×b=a∧⋅b=A⋅b (9)
两向量叉积后所得向量的物理意义:其模长表示两向量构成平行四边形的面积。
另外补充:
因此,对于单位向量,满足:
3 罗德里格斯旋转公式推导
3.1 符号说明
对图2中的相关符号作如下说明:
注:旋转平面是与旋转轴相垂直的平面。
3.2 公式推导
对于三维空间中的一点
P
P
P,构成向量
v
=
O
P
→
v=\overrightarrow{OP}
v=OP,分解到旋转平面和旋转轴,如下:
同理,对于旋转后的向量 v ′ v' v′:
显然:
因此:
定义向量 w w w,如下:
根据几何意义, ∣ w ∣ |w| ∣w∣为黄色阴影(平行四边形)的面积,这部分面积可等效成平行四边形底 n n n和高 v ⊥ v_{\perp} v⊥得到的面积,因此:
且:
进而得到:
以及:
另外,将
v
⊥
′
v_{\perp}'
v⊥′用
v
⊥
v_{\perp}
v⊥和
w
w
w表示,如下:
将式(20)-(22)代入到式(16)中,最终可得:
因此:
将式(12)代入到式(24)中,可得:
4 拓展
4.1 公式理解和深入
罗德里格斯旋转公式,将3D旋转表示成绕空间中某一旋转轴
n
n
n旋转角度
θ
\theta
θ的形式,一般记作:
式中, θ = ∣ q ∣ = q x 2 + q y 2 + q z 2 \theta=|q|=\sqrt{q^2_x+q^2_y+q^2_z} θ=∣q∣=qx2+qy2+qz2。
这种表示形式非常简洁,但存在奇异问题,主要在于:
- 旋转角度为 θ \theta θ和 θ + 2 k π \theta+2k\pi θ+2kπ的结果是一样的;
- ( n , θ ) (n,\theta) (n,θ)和 ( − n , − θ ) (-n,-\theta) (−n,−θ)的结果是一样的。
对于非常小的旋转,旋转矩阵
R
R
R和罗德里格斯向量
q
q
q存在线性关系,推导如下:
4.2 极限方法推导罗德里格斯旋转公式
一次性绕旋转轴
n
n
n旋转角度
θ
\theta
θ,等价于绕旋转轴
n
n
n旋转
k
k
k次,每次旋转角度为
θ
/
k
\theta/k
θ/k。
因此:
而:
由于:
最终式(29)可简化成如下:
更多推荐
所有评论(0)