大家好,欢迎来到IT知识分享网。
目录
三维旋转矩阵的应用比较广泛,在姿态控制等领域具有重要的应用价值。网上有不少讲解三维矩阵旋转的文章,但大多数文章只是机械地描述旋转矩阵的形式和坐标的转换关系,记忆点比较多,而且过于强调不同情况下旋转矩阵的差异,容易引发记忆混乱。因此笔者根据自身的试验和堆旋转矩阵的理解,重新整理成了这篇文章。本文整理了物体绕固定坐标轴旋转、物体绕自身坐标系旋转、坐标系旋转和物体绕任意轴旋转等多种情况,力求全面地讲解各种不同情况下的旋转矩阵计算。
众所周知,三维旋转矩阵问题分为物体旋转和坐标系旋转两者,坐标系旋转又可以分为物体随坐标系转动和物体不随转动两种情况。为了方便理解,我们还是从最简单的情况说起,并逐步推导复杂的情况。
第一部分 基础概念
第二部分:物体绕单轴旋转的旋转矩阵推导
R Y = [ c o s β 0 s i n β 0 1 0 − s i n β 0 c o s β ] R_Y=\begin{bmatrix}cos\beta&0&sin\beta\\0&1&0\\-sin\beta&0&cos\beta\end{bmatrix} RY=
cosβ0−sinβ010sinβ0cosβ
R Z = [ c o s γ − s i n γ 0 s i n γ c o s γ 0 0 0 1 ] R_Z=\begin{bmatrix}cos\gamma&-sin\gamma&0\\sin\gamma&cos\gamma&0\\0&0&1\end{bmatrix} RZ=
cosγsinγ0−sinγcosγ0001
这样我们就完成了第一步,证明了单轴情况下,物体绕坐标轴旋转时坐标变换的规律
在分析坐标系旋转之前,我们先来讨论一下旋转矩阵的性质,这样有助于加深对旋转矩阵的理解。
对于绕X轴运动的旋转矩阵,可其为关于 α \alpha α的函数,则有
R X ( α ) = [ 1 0 0 0 c o s α − s i n α 0 s i n α c o s α ] R_X(\alpha)=\begin{bmatrix}1&0&0\\0&cos\alpha&-sin\alpha\\0&sin\alpha&cos\alpha\end{bmatrix} RX(α)=
1000cosαsinα0−sinαcosα
显然有 R X ( α ) T = R X ( α ) − 1 = R X ( − α ) R_X(\alpha)^T=R_X(\alpha)^{-1}=R_X(-\alpha) RX(α)T=RX(α)−1=RX(−α)
即 R X R_X RX的转置矩阵即是 R X R_X RX的逆矩阵,同时,也是绕相反方向运动的旋转矩阵 R X ( − α ) R_X(-\alpha) RX(−α)
也就是 R X ( α ) R_X(\alpha) RX(α)的逆矩阵相当于将物体绕X轴反方向旋转 α \alpha α度的旋转矩阵
从物理很好理解这个关系,所谓逆矩阵,就是满足
P = R X ( α ) − 1 R X ( α ) P P=R_X(\alpha)^{-1}R_X(\alpha)P P=RX(α)−1RX(α)P
的矩阵,那自然就是把转过去的物体再按照相反的反向转回来。
第三部分 坐标系单轴旋转的坐标转换关系推导
物体随坐标系旋转
假设原始坐标系为 X O Y XOY XOY,内有一点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0),原始坐标系旋转到 X ′ O Y ′ X^\prime O Y^\prime X′OY′位置,该点随坐标系一起旋转,因此在 X ′ O Y ′ X^\prime O Y^\prime X′OY′的坐标为 ( x 0 ′ , y 0 ′ ) (x_0^\prime,y_0^\prime) (x0′,y0′),其数值与 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)相等,那么该点在原始坐标系下的新位置, ( x 1 , y 1 ) (x_1,y_1) (x1,y1)与该点在新坐标系下的位置 ( x 0 ′ , y 0 ′ ) (x_0^\prime,y_0^\prime) (x0′,y0′)之间关系为
[ x 1 y 1 z 1 ] = [ c o s γ sin γ 0 s i n γ c o s γ 0 0 0 1 ] [ x 0 ′ y 0 ′ z 0 ′ ] \begin{bmatrix}x_1\\y_1\\z_1\end{bmatrix}=\begin{bmatrix}cos\gamma&\sin\gamma&0\\sin\gamma&cos\gamma&0\\0&0&1\end{bmatrix}\begin{bmatrix}x_0^\prime\\y_0^\prime\\z_0^\prime\end{bmatrix}
x1y1z1
=
cosγsinγ0sinγcosγ0001
x0′y0′z0′
即
P Z = R Z P Z ′ P_Z=R_ZP_Z^\prime PZ=RZPZ′
这里要注意, ( x 0 , y 0 ) (x_0,y_0) (x0,y0)与 ( x 0 ′ , y 0 ′ ) (x_0^\prime,y_0^\prime) (x0′,y0′)在数值上相等。
坐标系旋转,物体不转
注意上面的向量 ( x 2 , y 2 ) (x_2,y_2) (x2,y2)和 ( x 2 ′ , y 2 ′ ) (x_2^\prime,y_2^\prime) (x2′,y2′),且在数值上 x 2 = x 2 ′ , y 2 = y 2 ′ x_2=x_2^\prime,y_2=y_2^\prime x2=x2′,y2=y2′,则 X O Y XOY XOY坐标系下的点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)在经过旋转的 X ′ O Y ′ X^\prime O Y^\prime X′OY′坐标系下,坐标点为 ( x 2 ′ , y 2 ′ ) (x_2^\prime,y_2^\prime) (x2′,y2′),数值上与 ( x 2 , y 2 ) (x_2,y_2) (x2,y2)相同,则显然有
[ x 0 y 0 z 0 ] = [ c o s γ − s i n γ 0 s i n γ c o s γ 0 0 0 1 ] [ x 2 ′ y 2 ′ z 2 ′ ] \begin{bmatrix}x_0\\y_0\\z_0\end{bmatrix}=\begin{bmatrix}cos\gamma&-sin\gamma&0\\sin\gamma&cos\gamma&0\\0&0&1\end{bmatrix}\begin{bmatrix}x_2^\prime\\y_2^\prime\\z_2^\prime\end{bmatrix}
x0y0z0
=
cosγsinγ0−sinγcosγ0001
x2′y2′z2′
即
P Z = R Z P Z ′ P_Z=R_ZP_Z^\prime PZ=RZPZ′
绕X轴与Y轴的旋转矩阵原理绕Z轴相同,这里仅给出结论,推导时要注意角度的正方向要符合右手定则,避免符号出现错误。
R X = [ 1 0 0 0 c o s α − s i n α 0 s i n α c o s α ] R_X=\begin{bmatrix}1&0&0\\0&cos\alpha&-sin\alpha\\0&sin\alpha&cos\alpha\end{bmatrix} RX=
1000cosαsinα0−sinαcosα
R Y = [ c o s β 0 s i n β 0 1 0 − s i n β 0 c o s β ] R_Y=\begin{bmatrix}cos\beta&0&sin\beta\\0&1&0\\-sin\beta&0&cos\beta\end{bmatrix} RY=
cosβ0−sinβ010sinβ0cosβ
R Z = [ c o s γ − s i n γ 0 s i n γ c o s γ 0 0 0 1 ] R_Z=\begin{bmatrix}cos\gamma&-sin\gamma&0\\sin\gamma&cos\gamma&0\\0&0&1\end{bmatrix} RZ=
cosγsinγ0−sinγcosγ0001
当坐标系旋转时
P X = R X P X ′ P_X=R_XP_X^\prime PX=RXPX′
P Y = R Y P Y ′ P_Y=R_YP^\prime_Y PY=RYPY′
P Z = R Z P Z ′ P_Z=R_ZP_Z^\prime PZ=RZPZ′
第四部分 多次旋转(外旋与内旋 左乘与右乘)
物体绕外部固定轴旋转
物体绕自身轴旋转
物体不动,坐标系旋转
总结表
旋转类型 | 物体旋转,坐标系不转 | 物体随坐标系旋转 | 坐标系旋转,物体不转 |
---|---|---|---|
初始坐标系 | O X Y Z OXYZ OXYZ | O X Y Z OXYZ OXYZ | OXYZ |
初始坐标系内一点坐标 | P 0 = [ x 0 y 0 z 0 ] T P_0=\begin{bmatrix}x_0&y_0&z_0\end{bmatrix}^T P0=[x0y0z0]T | P 0 = [ x 0 y 0 z 0 ] T P_0=\begin{bmatrix}x_0&y_0&z_0\end{bmatrix}^T P0=[x0y0z0]T | P 0 = [ x 0 y 0 z 0 ] T P_0=\begin{bmatrix}x_0&y_0&z_0\end{bmatrix}^T P0=[x0y0z0]T |
旋转顺序 | XYZ | XYZ | XYZ |
旋转后坐标系 | O X Y Z OXYZ OXYZ | O X ′ Y ′ Z ′ OX^\prime Y^\prime Z^\prime OX′Y′Z′ | O X ′ Y ′ Z ′ OX^\prime Y^\prime Z^\prime OX′Y′Z′ |
旋转后,初始点在新坐标系下的坐标 | 无 | P 0 ′ = [ x 0 ′ y 0 ′ z 0 ′ ] T P_0^\prime=\begin{bmatrix}x_0^\prime&y_0^\prime&z_0^\prime\end{bmatrix}^T P0′=[x0′y0′z0′]T | P 3 ′ = [ x 3 ′ y 3 ′ z 3 ′ ] T P_3^\prime=\begin{bmatrix}x_3^\prime&y_3^\prime&z_3^\prime\end{bmatrix}^T P3′=[x3′y3′z3′]T |
旋转后,初始点在旧坐标系下的坐标 | P 1 = [ x 1 y z z 1 ] T P_1=\begin{bmatrix}x_1&y_z&z_1\end{bmatrix}^T P1=[x1yzz1]T | P 2 = [ x 2 y 2 z 2 ] T P_2=\begin{bmatrix}x_2&y_2&z_2\end{bmatrix}^T P2=[x2y2z2]T | P 0 = [ x 0 y 0 z 0 ] T P_0=\begin{bmatrix}x_0&y_0&z_0\end{bmatrix}^T P0=[x0y0z0]T |
新旧坐标的关系 | P 1 = R Z R Y R X P 0 P_1=R_ZR_YR_XP_0 P1=RZRYRXP0 | P 2 = R X R Y R Z P 0 ′ P_2=R_XR_YR_ZP_0^\prime P2=RXRYRZP0′ | P 0 = R X R Y R Z P 3 ′ P_0=R_XR_YR_ZP_3^\prime P0=RXRYRZP3′ |
简化记忆 | P 1 = R P 0 P_1=RP_0 P1=RP0 | P = R P ′ P=RP^\prime P=RP′ | P = R P ′ P=RP^\prime P=RP′ |
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/136156.html