您当前的位置: 首页 >  矩阵

我什么都布吉岛

暂无认证

  • 7浏览

    0关注

    292博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

旋转矩阵推导过程

我什么都布吉岛 发布时间:2022-07-20 00:02:31 ,浏览量:7

旋转矩阵为什么是很多正余弦函数值的集合,旋转矩阵有什么性质?旋转矩阵出现的意义在哪里?二维旋转和三维旋转的表达式有什么不同?

本文首先推导了二维情况下旋转矩阵代数及矩阵表达式,然后将结果推广到三维。

一、二维空间下的旋转矩阵

假设点 P P P在坐标系 { B } \{B\} {B}的坐标为 P = { x , y } P=\{x,y\} P={x,y},此时存在另一坐标系 { A } \{A\} {A},能否给出相同点 P P P在 { A } \{A\} {A}坐标系下的坐标值 P ′ = { x ′ , y ′ } P'=\{x',y'\} P′={x′,y′}?答案是肯定的,前提是已知这两个坐标系 { A } \{A\} {A} { B } \{B\} {B}之间的关系,当两个坐标系之间的关系为纯旋转时,旋转矩阵就是用来描述两个坐标系之间的关系的一种表达。(简单来说,就是已知 { B } \{B\} {B}下的点坐标,求 { A } \{A\} {A}下的点坐标)。如下图:

在这里插入图片描述

注意:原坐标系 { B } \{B\} {B}顺时针旋转 θ \theta θ度后与目标坐标系 { A } \{A\} {A}重合,再次强调是顺时针,如果是逆时针应为 − θ -\theta −θ。

{ A } \{A\} {A}坐标系逆时针转 θ \theta θ度与 { B } \{B\} {B}中标系完全重合,为了方便描述,我们假设原点到 P P P的距离为 r r r,考虑坐标系 { B } \{B\} {B},根据直角坐标系定义有: x = r cos ⁡ α y = r sin ⁡ α (1) x=r\cos\alpha\\ y=r\sin\alpha\tag{1} x=rcosαy=rsinα(1)

考虑坐标系 { A } \{A\} {A},有: x ′ = r cos ⁡ ( α + θ ) y ′ = r sin ⁡ ( α + θ ) (2) x'=r\cos(\alpha+\theta)\\ y'=r\sin(\alpha+\theta)\tag{2} x′=rcos(α+θ)y′=rsin(α+θ)(2) 展开后的表达式为: x ′ = r ( cos ⁡ α cos ⁡ θ − sin ⁡ α sin ⁡ θ ) y ′ = r ( sin ⁡ α cos ⁡ θ + cos ⁡ α sin ⁡ θ ) (3) x'=r(\cos\alpha\cos\theta-\sin\alpha\sin\theta)\\ y'=r(\sin\alpha\cos\theta+\cos\alpha\sin\theta)\tag{3} x′=r(cosαcosθ−sinαsinθ)y′=r(sinαcosθ+cosαsinθ)(3) 将(1)带入(3)得: x ′ = x cos ⁡ θ − y sin ⁡ θ y ′ = y cos ⁡ θ + x sin ⁡ θ (4) x'=x\cos\theta-y\sin\theta\\ y'=y\cos\theta+x\sin\theta\tag{4} x′=xcosθ−ysinθy′=ycosθ+xsinθ(4) (4)就是我们要找的,实现同一个点在不同坐标系下的代数表达式,这个表达式完成了由 { A } \{A\} {A}表示的点到 { B } \{B\} {B}坐标系下的点的转换。将其写成矩阵形式: [ x ′ y ′ ] = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] [ x y ] (5) \begin{bmatrix} x'\\y' \end{bmatrix}= \begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix} \begin{bmatrix}x\\y\end{bmatrix}\tag{5} [x′y′​]=[cosθsinθ​−sinθcosθ​][xy​](5) 记上式中正余弦值构成的矩阵为 A B R ^B_AR AB​R,表示由 { A } \{A\} {A}坐标系切换到 { B } \{B\} {B}的旋转矩阵,对于 { B } \{B\} {B}下所有点都能通过左乘这个旋转矩阵得到。记 B P ^BP BP为坐标系 { B } \{B\} {B}下的点, A P ^AP AP为坐标系 { A } \{A\} {A}下的点,所以(5)可写成: A P = B A R B P (6) ^AP=^A_BR^BP\tag{6} AP=BA​RBP(6) 所以二维旋转矩阵的表达式为: B A R = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] (7) ^A_BR=\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix}\tag{7} BA​R=[cosθsinθ​−sinθcosθ​](7)

二、三维空间下的旋转矩阵

对于二维空间,旋转绕着 X × Y X\times Y X×Y方向进行旋转,从箭头反方向观察旋转行为,顺时针角度为正,逆时针为负,三维空间纯旋转的话,将会有三种情况,分别是沿着坐标系的 X X X Y Y Y Z Z Z反方向观察旋转情况,同样是“顺正逆负”。下面是三种情况旋转一定角度的平面图: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 以第一个,绕 Z Z Z旋转为例,说明其旋转矩阵表达式。假设旋转前的点为 O X Y P = { x , y , z } ^{OXY}P=\{x,y,z\} OXYP={x,y,z},旋转后的点记为 O X ′ Y ′ P = { x ′ , y ′ , z ′ } ^{OX'Y'}P=\{x',y',z'\} OX′Y′P={x′,y′,z′},原坐标系向新坐标系旋转 θ \theta θ与新坐标完全重合,类似于二维空间下的旋转矩阵的推导: x ′ = x cos ⁡ α − y sin ⁡ α y ′ = y cos ⁡ α + x sin ⁡ α z ′ = z (8) \begin{aligned} x'&=x\cos\alpha-y\sin\alpha\\ y'&=y\cos\alpha+x\sin\alpha\\ z'&=z\end{aligned} \tag{8} x′y′z′​=xcosα−ysinα=ycosα+xsinα=z​(8) 写成矩阵形式: [ x ′ y ′ z ′ ] = [ cos ⁡ α − sin ⁡ α 0 sin ⁡ α cos ⁡ α 0 0 0 1 ] [ x ′ y ′ z ′ ] (9) \begin{bmatrix} x'\\y'\\z' \end{bmatrix}=\begin{bmatrix}\cos\alpha&-\sin\alpha&0\\\sin\alpha&\cos\alpha&0\\0&0&1\end{bmatrix}\begin{bmatrix}x'\\y'\\z'\end{bmatrix}\tag{9} ⎣⎡​x′y′z′​⎦⎤​=⎣⎡​cosαsinα0​−sinαcosα0​001​⎦⎤​⎣⎡​x′y′z′​⎦⎤​(9) 记这个旋转矩阵为 r o t z rotz rotz: r o t z ( θ ) = [ cos ⁡ α − sin ⁡ α 0 sin ⁡ α cos ⁡ α 0 0 0 1 ] (10) rotz(\theta)=\begin{bmatrix}\cos\alpha&-\sin\alpha&0\\\sin\alpha&\cos\alpha&0\\0&0&1\end{bmatrix}\tag{10} rotz(θ)=⎣⎡​cosαsinα0​−sinαcosα0​001​⎦⎤​(10) 同理可以得到 r o t y roty roty和 r o t x rotx rotx: r o t y ( θ ) = [ cos ⁡ θ 0 sin ⁡ θ 0 1 0 − sin ⁡ θ 0 cos ⁡ θ ] (11) roty(\theta)= \begin{bmatrix} \cos\theta&0&\sin\theta\\ 0&1&0\\ -\sin\theta&0&\cos\theta \end{bmatrix}\tag{11} roty(θ)=⎣⎡​cosθ0−sinθ​010​sinθ0cosθ​⎦⎤​(11)

r o t x ( θ ) = [ 1 0 0 0 cos ⁡ θ sin ⁡ θ 0 − sin ⁡ θ cos ⁡ θ ] (12) rotx(\theta)= \begin{bmatrix} 1&0&0\\ 0&\cos\theta&\sin\theta\\ 0&-\sin\theta&\cos\theta \end{bmatrix}\tag{12} rotx(θ)=⎣⎡​100​0cosθ−sinθ​0sinθcosθ​⎦⎤​(12)

三、点旋转对应旋转矩阵

前面说到的是由于坐标系切换引起的点坐标的变化,如果空间中的一点真的绕某个轴转动,那么这个点应该如何变化?如下图: 在这里插入图片描述 注意:变换前的点 P P P绕着坐标轴逆时针旋转 θ \theta θ后到达新的位置 P ′ P' P′。

P ( x , y ) P(x,y) P(x,y)点逆时针旋转到 P ′ ( x ′ , y ′ ) P'(x',y') P′(x′,y′),,旋转前有方程: x = r cos ⁡ α y = r sin ⁡ α (13) x=r\cos\alpha\\ y=r\sin\alpha\tag{13} x=rcosαy=rsinα(13) 旋转后,半径 r r r没有发生改变: x ′ = cos ⁡ ( α + θ ) y ′ = sin ⁡ ( α + θ ) (14) x'=\cos(\alpha+\theta)\\ y'=\sin(\alpha+\theta)\tag{14} x′=cos(α+θ)y′=sin(α+θ)(14) 展开后有: x ′ = r cos ⁡ α cos ⁡ θ − r s i n α sin ⁡ θ y ′ = r sin ⁡ α cos ⁡ θ + r cos ⁡ α sin ⁡ θ (15) x'=r\cos\alpha\cos\theta-rsin\alpha\sin\theta\\ y'=r\sin\alpha\cos\theta+r\cos\alpha\sin\theta\tag{15} x′=rcosαcosθ−rsinαsinθy′=rsinαcosθ+rcosαsinθ(15) 联立方程(13)(15)有: x ′ = x cos ⁡ θ − y sin ⁡ θ y ′ = y cos ⁡ θ + x sin ⁡ θ (16) x'=x\cos\theta-y\sin\theta\\ y'=y\cos\theta+x\sin\theta\tag{16} x′=xcosθ−ysinθy′=ycosθ+xsinθ(16) 写成矩阵形式有: [ x ′ y ′ ] = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] [ x y ] (17) \begin{bmatrix}x'\\y'\end{bmatrix}=\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}\tag{17} [x′y′​]=[cosθsinθ​−sinθcosθ​][xy​](17) 令: R = [ cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ] R=\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix} R=[cosθsinθ​−sinθcosθ​] (17)可以写成: P ′ = R P (18) P'=RP\tag{18} P′=RP(18) 因为只涉及到一个坐标系,所以这个矩阵坐标不加任何字母,这个矩阵可以帮助我们计算旋转之后点的坐标,他也被称为旋转矩阵,和坐标系旋转表达式一模一样,对于三维的点实际旋转的旋转矩阵,这里就不作进一步推导。

四、旋转矩阵的意义

旋转矩阵的含义有三个:

  • 描述坐标系之间的关系,坐标三个主轴向另一个坐标系三个主轴投影;
  • 同点在不同坐标系的转换左乘矩阵;
  • 点旋转后在同一坐标系的转换左乘矩阵;

两个坐标系若只存在旋转关系,那么这个关系可以用旋转矩阵来表示,这个关系具有方向性,也就是 { A } \{A\} {A}坐标系到 { B } \{B\} {B}不等于 { A } \{A\} {A}到 { B } \{B\} {B},但是存在以下关系: B A R = A B R − 1 (19) ^A_BR=^B_AR^{-1}\tag{19} BA​R=AB​R−1(19) 而且由于旋转矩阵是一个单位正交矩阵,所以有: B A R = A B R T (20) ^A_BR=^B_AR^T\tag{20} BA​R=AB​RT(20) 在实际使用中,应该明确这个方向性,假如你已知 { B } \{B\} {B}坐标系下的点 B P ^BP BP要求在 { B } \{B\} {B}下的点,那么旋转矩阵的 θ \theta θ变量值,应该是 { A } \{A\} {A}坐标系沿着哪个方向旋转多少角度,如果是顺时针 ,那么这个值应该是负数,反之则是一个正数。

Tips:旋转矩阵中角度 θ \theta θ的正负?答:如果是旋转的是坐标系,那么应该 θ \theta θ的大小是旋转的角度,旋转的正负则是顺时针为正逆时针为负;如果旋转的是点, θ \theta θ的大小则是旋转前后向量夹角,此时顺时针为负,逆时针为正。

20221208 修改了推导上的错误

关注
打赏
1658157489
查看更多评论
立即登录/注册

微信扫码登录

0.0413s