banner
IWSR

IWSR

我永远喜欢志喜屋梦子!

欧拉角与万向锁

说明#

  • 前置阅读:三维图形基本几何变换的矩阵推导
  • 对于在三维空间里的一个参考系,任何坐标系的取向,都可以用三个欧拉角来表现。(三个欧拉角变换可以描述当前物体的姿态)
  • 俯仰(绕 z 轴旋转)、偏航(绕 y 轴旋转)、滚动(绕 x 轴旋转)了解下就行
  • 由于线性变换不符合交换律,那么旋转顺序的不同便会影响结果,下文以动态欧拉角(z-y-x)分析

动态欧拉角#

在 [三维图形基本几何变换的矩阵推导](https://github.com/IWSR/BLOG/issues/2) 中已经推导出了分别绕 X、Y、Z 轴旋转的旋转矩阵即

Rzγ=(cosγsinγ00sinγcosγ0000100001)R_{z}γ = \begin{pmatrix} cosγ & -sinγ & 0 & 0 \\ sinγ & cosγ & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}
Ryβ=(cosβ0sinβ00100sinβ0cosβ00001)R_{y}β = \begin{pmatrix} cosβ & 0 & sinβ & 0 \\ 0 & 1 & 0 & 0 \\ -sinβ & 0 & cosβ & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}
Rxα=(10000cosαsinα00sinαcosα00001)R_{x}α = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & cosα & -sinα & 0 \\ 0 & sinα & cosα & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}

那么如果按动态欧拉角的变换顺序,我们将得到变换矩阵 R=RxαRyβRzγR=R_{x}αR_{y}βR_{z}γ

R=RxαRyβRzγ=(cosβcosγcosαsinγ+sinαsinβcosγsinαsinγ+cosαsinβcosγ0cosβsinγcosαcosγ+sinαsinβsinγsinαcosγ+cosαsinβsinγ0sinβsinαcosβcosαcosβ00001)R= R_{x}αR_{y}βR_{z}γ = \begin{pmatrix} \cos β\cos γ & -\cos α\sin γ + \sin α\sin β\cos γ & \sin α \sin γ+ \cos α \sin β \cos γ & 0 \\ \cos β\sin γ & \cos α\cos γ + \sin α\sin β\sin γ & -\sin α \cos γ+ \cos α \sin β \sin γ & 0 \\ -\sin β & \sin α\cos β & \cos α\cos β & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}

万向锁#

一旦选择 ±90° 作为 pitch 角,就会导致第一次旋转和第三次旋转等价,整个旋转表示系统被限制在只能绕竖直轴旋转,丢失了一个表示维度。

上面那段引言用人话说就是当 β 为 ±90° 时,绕 x 旋转与绕 z 轴旋转在结果上会等效。

万向锁这个问题如果直接使用变换矩阵 R 来解释的话会很直观,就如下面我们把 β = 90° 代入方程并化简

R=RxαRy90°Rzγ=(10000cosαsinα00sinαcosα00001)(0010010010000001)(cosγsinγ00sinγcosγ0000100001)=(0010sin(α+γ)cos(α+γ)00cos(α+γ)sin(α+γ)000001)R = R_{x}αR_{y}90°R_{z}γ = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & cosα & -sinα & 0 \\ 0 & sinα & cosα & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 0 & 0 & 1 & 0 \\ 0 & 1 & 0 & 0 \\ -1 & 0 & 0 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} cosγ & -sinγ & 0 & 0 \\ sinγ & cosγ & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} = \begin{pmatrix} 0 & 0 & 1 & 0 \\ sin(α + γ) & cos(α + γ) & 0 & 0 \\ -cos(α + γ) & sin(α + γ) & 0 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix}

很容易发现影响变换矩阵 R 的变量为 α + γ,而在几何上则体现为绕 x 轴的旋转表现与绕 z 轴等效,举例说明则是

Rx30°Ry90°Rz50°=Rx0°Ry90°Rz80°R_{x}30°R_{y}90°R_{z}50° = R_{x}0°R_{y}90°R_{z}80°

这里需要强调一下,本文中的旋转顺序为 z-y-x,上面的例子可描述为物体绕 z 轴旋转 80°、绕 y 轴旋转 90°、绕 x 轴旋转 0° 其姿态与绕 z 轴旋转 80°、绕 y 轴旋转 90°、绕 x 轴旋转 0° 相同。也就是产生万向锁时,空间中物体可通过多种不同的旋转方式转变为某一个特定姿态,即变换与其结果并非一一对应,而这在工程上的体现便是动画插帧会变得极其诡异。

Dec-05-2022 17-25-40
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。