三维旋转表示方法(欧拉角与旋转矩阵相互转化推导)

本文详细解释了欧拉角在描述物体旋转时的应用,介绍了内旋和外旋的概念,并通过推导展示了如何用z-y-x顺序的外旋计算内旋效果。此外,还讨论了在特定情况下(万向节锁GimbalLock)处理欧拉角矩阵的问题,以及如何从旋转矩阵中推导欧拉角。内容涉及计算机图形学中的基本旋转理论。
摘要由CSDN通过智能技术生成
三维旋转表示方法(欧拉角与旋转矩阵相互转化推导)
欧拉角

欧拉角一般用来形容飞机或者车船这些物体,一般以绕车头或机头方向旋转的角度叫做横滚角 roll, 绕着飞机顶部向上的轴旋转的角度叫做偏航角 yaw, 绕着飞机机身横向轴旋转的叫做俯仰角 pitch,这种方式的好处是理解起来比较直观,这里需要注意的是,欧拉角并不是和xyz轴固定绑定的,是人为规定的,后面我们只说绕 xyz 轴旋转多少角度,不再说横滚角、偏航角、俯仰角这些名词了。

内旋与外旋

首先,介绍两个概念:
内旋:以上次旋转后的坐标为参考系继续旋转。
外旋:始终以世界坐标为参考系进行旋转。

再介绍一个规律:

内旋以 x-y-z 顺序绕轴旋转的结果,等于 外旋以 z-y-x 的顺序绕轴旋转,下边是一个例子,两个旋转的结果一致。

  1. 内旋,绕 X 轴旋转 30 度,旋转后以当前坐标为参考系绕 Y 轴旋转了 45 度,之后又同样的绕 Z 轴旋转 60 度。
  2. 外旋,绕 Z 轴旋转 60 度, 再绕世界坐标系的 Y 轴旋转 45 度,再绕世界坐标系的 X 轴旋转 30 度。

所以,当我们想以内旋方式,描述一个物体的旋转时,可以通过计算相反顺序的外旋来表示。

旋转公式推导

通过一个例子来说明推导过程,将一个点 X0 = (x0, y0, z0) 以内旋的方式,按照 z-y-x 的顺序分别旋转 w, v, u 度数。

因为内旋的结果与外旋相反顺序的旋转结果一致,所以我们可以按照外旋的计算方法,以 x-y-z 的顺序进行计算。

首先,绕 x 轴旋转 u 度,得到旋转后的点 X1 = (x1, y1, z1), 按照二维旋转的推导方式,可以得到下边的公式。

绕 x 轴旋转 u 度

下面是推导过程,忘记的可以参看上次发的二维旋转的推导文章

推导绕 x 轴旋转 u 度

然后,绕 y 轴旋转 v 度,得到旋转后的点 X2 = (x2, y2, z2)。

绕 y 轴旋转 v 度

下边是推导过程

推导绕 y 轴旋转 v 度

最后,绕 z 轴旋转 w 度,得到旋转后的点 X3 = (x3, y3, z3)。

绕 z 轴旋转 w 度

欧拉角度推导旋转矩阵

将上边的三次旋转分别写成矩阵形式。

绕 x 轴旋转 u 度的矩阵:
绕 x 轴旋转 u 度

绕 y 轴旋转 v 度的矩阵:
绕 y 轴旋转 v 度

绕 z 轴旋转 w 度的矩阵:
绕 z 轴旋转 w 度

将三个矩阵乘在一起,可以得到一个最终的旋转矩阵,其中c()代表cos(),s()代表sin():
最终的旋转矩阵

旋转矩阵推导欧拉角

通过旋转矩阵对应元素的意义,可以推导出相应的欧拉角。

欧拉角

其中,矩阵元素对应关系如下:

矩阵元素对应关系

万向节锁 Gimbal Lock

当 v 为 +90 度或 -90 度的时候,cos(v) 为 0,r11,r21,r32,r33 都是 0,因为 0 不可以做分母,所以上边从矩阵推导欧拉角的时候就会出现问题。

因此在从矩阵推导欧拉角的时候,我们需要判断 v 是否是 +90 / -90 度:

如果 v 是 -90 度,r31 是 1, u + w = tan-1(-r12 / -r13);

如果 v 是 +90 度,r31 是 -1, u - w = tan-1(r12 / r13)。

其中令 u 或者 w 为 0, 就可以求出另一个角度。

参考
  1. GAMES101-现代计算机图形学入门-闫令琪 Lecture 04 Transformation Cont.
  2. https://danceswithcode.net/engineeringnotes/rotations_in_3d/rotations_in_3d_part1.html
  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值