旋转矩阵更容易理解与记忆的推导,从2D到3D

摘要

旋转矩阵更容易理解与记忆的推导,从2D到3D


声明:本文推导适用于右手坐标系。
旋转角度说明:本文说的绕x轴旋转 θ \theta θ度指的是顺着x轴负方向看过去,逆时针旋转 θ \theta θ度。若想获得顺时针旋转的旋转矩阵,只需要把 θ \theta θ改为 − θ -\theta θ即可。(个人觉得3D空间中要想准确描述旋转而不造成混淆,至少要说明三点:旋转轴,朝向,在该朝向下是顺时针还是逆时针旋转。)

2D旋转矩阵

2D旋转矩阵推导公式网上都有,不再赘述。参考这里,有
在这里插入图片描述
由上述推导可得2D空间中,从X轴向Y轴旋转 θ \theta θ度的旋转矩阵为:
[ X ′ Y ′ ] = [ c o s θ − s i n θ s i n θ c o s θ ] [ X Y ] \begin{bmatrix} X' \\ Y' \end{bmatrix}= \begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{bmatrix} \begin{bmatrix} X \\ Y \end{bmatrix} [XY]=[cosθsinθsinθcosθ][XY]
注意:上述公式相当于3D空间中,绕Z轴旋转 θ \theta θ度的公式,即顺着Z轴负方向看过去逆时针旋转 θ \theta θ度。也相当于把X轴旋转向Y轴的公式。
后面的3D旋转矩阵全都以此为基础变形,无非是移动一下元素位置。

3D旋转矩阵

绕Z轴旋转 θ \theta θ度的公式

由2D旋转矩阵直接可得,不作推导:
[ X ′ Y ′ Z ′ ] = [ c o s θ − s i n θ 0 s i n θ c o s θ 0 0 0 1 ] [ X Y Z ] \begin{bmatrix} X' \\ Y' \\ Z' \end{bmatrix}= \begin{bmatrix} cos\theta & -sin\theta & 0 \\ sin\theta & cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} XYZ=cosθsinθ0sinθcosθ0001XYZ

绕Y轴旋转 θ \theta θ度的公式

可根据2D旋转矩阵直接变形得到,过程如下:
根据我们的规定,绕Y轴旋转表示逆着Y轴正方向逆时针旋转,根据右手坐标系可知,相当于从Z轴旋转向X轴,根据2D旋转矩阵,可得
[ Z ′ X ′ ] = [ c o s θ − s i n θ s i n θ c o s θ ] [ Z X ] \begin{bmatrix} Z' \\ X' \end{bmatrix}= \begin{bmatrix} cos\theta & -sin\theta \\ sin\theta & cos\theta \end{bmatrix} \begin{bmatrix} Z \\ X \end{bmatrix} [ZX]=[cosθsinθsinθcosθ][ZX]
扩展到3D旋转矩阵,为
[ Z ′ X ′ Y ′ ] = [ c o s θ − s i n θ 0 s i n θ c o s θ 0 0 0 1 ] [ Z X Y ] \begin{bmatrix} Z' \\ X' \\ Y' \end{bmatrix}= \begin{bmatrix} cos\theta & -sin\theta & 0 \\ sin\theta & cos\theta & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} Z \\ X \\ Y \end{bmatrix} ZXY=cosθsinθ0sinθcosθ0001ZXY
调整一下右边坐标顺序,公式变形为
[ Z ′ X ′ Y ′ ] = [ − s i n θ 0 c o s θ c o s θ 0 s i n θ 0 1 0 ] [ X Y Z ] \begin{bmatrix} Z' \\ X' \\ Y' \end{bmatrix}= \begin{bmatrix} -sin\theta & 0 & cos\theta \\ cos\theta & 0 & sin\theta \\ 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} ZXY=sinθcosθ0001cosθsinθ0XYZ
再调整一下左边坐标顺序,公式变形为
[ X ′ Y ′ Z ′ ] = [ c o s θ 0 s i n θ 0 1 0 − s i n θ 0 c o s θ ] [ X Y Z ] \begin{bmatrix} X' \\ Y' \\ Z' \end{bmatrix}= \begin{bmatrix} cos\theta & 0 & sin\theta \\ 0 & 1 & 0 \\ -sin\theta & 0 & cos\theta \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} XYZ=cosθ0sinθ010sinθ0cosθXYZ
这就是我们所要求的绕Y轴旋转 θ \theta θ度的公式。

绕X轴旋转 θ \theta θ度的公式

同理,也可从2D旋转矩阵直接变形得到
[ X ′ Y ′ Z ′ ] = [ 1 0 0 0 c o s θ − s i n θ 0 s i n θ c o s θ ] [ X Y Z ] \begin{bmatrix} X' \\ Y' \\ Z' \end{bmatrix}= \begin{bmatrix} 1 & 0 & 0 \\ 0 & cos\theta & -sin\theta \\ 0 & sin\theta & cos\theta \end{bmatrix} \begin{bmatrix} X \\ Y \\ Z \end{bmatrix} XYZ=1000cosθsinθ0sinθcosθXYZ

相关/参考链接

旋转矩阵公式推导
旋转矩阵推导 | 推荐读这个,首先它清楚的定义了顺时针旋转到底是怎么转,只有定义清楚了,旋转才不会混淆。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值