Skip to content

欧拉角与万向锁 #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
IWSR opened this issue Nov 24, 2022 · 0 comments
Open

欧拉角与万向锁 #4

IWSR opened this issue Nov 24, 2022 · 0 comments

Comments

@IWSR
Copy link
Owner

IWSR commented Nov 24, 2022

欧拉角与万向锁

说明

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

动态欧拉角

在 [三维图形基本几何变换的矩阵推导](#2) 中已经推导出了分别绕 X、Y、Z轴旋转的旋转矩阵即

$$ R_{z}γ = \begin{pmatrix} cosγ & -sinγ & 0 & 0 \\ sinγ & cosγ & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} $$

$$ R_{y}β = \begin{pmatrix} cosβ & 0 & sinβ & 0 \\ 0 & 1 & 0 & 0 \\ -sinβ & 0 & cosβ & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} $$

$$ R_{x}α = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & cosα & -sinα & 0 \\ 0 & sinα & cosα & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} $$

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

$$ 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 = 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 轴等效,举例说明则是

$$ 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

@IWSR IWSR changed the title 欧拉角与万向锁(施工中) 欧拉角与万向锁 Dec 5, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant