“欧拉角”就是“先绕某个轴转、再绕另一个轴转、再绕第三个轴转”这三次旋转的角度;
“旋转矩阵”就是把这三次旋转合成后的一次大旋转,用一个3×33\times 33×3矩阵来表示。
两者是一一对应(除了奇异情况)

下面我会从基础一路推到公式推导和互相转换,尽量写到“看完就能自己推一遍”。


一、3D 旋转与旋转矩阵的基本概念

在三维空间中,一个点的坐标可以写成列向量:

p=[x y z] \mathbf{p} = \begin{bmatrix} x \ y \ z \end{bmatrix} p=[x y z]

一个“纯旋转”是一个线性变换,它满足:

  1. 长度不变(保持向量模长)
  2. 夹角不变(保持角度)

这样的线性变换可以写成矩阵乘法:

p′=Rp \mathbf{p}' = R \mathbf{p} p=Rp

其中RRR就是一个3×33\times 33×3的旋转矩阵。
满足两个关键条件:

  1. 正交:

R⊤R=I R^\top R = I RR=I

  1. 行列式为111

det⁡(R)=1 \det(R) = 1 det(R)=1

所有这样的矩阵构成的集合叫做SO(3)SO(3)SO(3)(三维特殊正交群)。

欧拉角的意义就是:
用三个实数(三个角度)来参数化SO(3)SO(3)SO(3)里的一个矩阵RRR


二、绕坐标轴的“基本旋转矩阵”

我们先规定右手坐标系,坐标轴分别为X,Y,ZX,Y,ZX,Y,Z
定义三个“基本旋转”:

  • XXX轴旋转角度ϕ\phiϕ(通常叫 roll)
  • YYY轴旋转角度θ\thetaθ(通常叫 pitch)
  • ZZZ轴旋转角度ψ\psiψ(通常叫 yaw)

对应的三个基本旋转矩阵分别是:

1. 绕XXX轴旋转ϕ\phiϕRx(ϕ)R_x(\phi)Rx(ϕ)

Rx(ϕ)=[100 0cos⁡ϕ−sin⁡ϕ 0sin⁡ϕcos⁡ϕ] R_x(\phi) = \begin{bmatrix} 1 & 0 & 0 \ 0 & \cos\phi & -\sin\phi \ 0 & \sin\phi & \cos\phi \end{bmatrix} Rx(ϕ)=[100 0cosϕsinϕ 0sinϕcosϕ]

含义:XXX坐标不变,只在YYYZZZ平面内转一圈。


2. 绕YYY轴旋转θ\thetaθRy(θ)R_y(\theta)Ry(θ)

Ry(θ)=[cos⁡θ0sin⁡θ 010 −sin⁡θ0cos⁡θ] R_y(\theta) = \begin{bmatrix} \cos\theta & 0 & \sin\theta \ 0 & 1 & 0 \ -\sin\theta & 0 & \cos\theta \end{bmatrix} Ry(θ)=[cosθ0sinθ 010 sinθ0cosθ]

含义:YYY坐标不变,只在XXXZZZ平面内转。


3. 绕ZZZ轴旋转ψ\psiψRz(ψ)R_z(\psi)Rz(ψ)

Rz(ψ)=[cos⁡ψ−sin⁡ψ0 sin⁡ψcos⁡ψ0 001] R_z(\psi) = \begin{bmatrix} \cos\psi & -\sin\psi & 0 \ \sin\psi & \cos\psi & 0 \ 0 & 0 & 1 \end{bmatrix} Rz(ψ)=[cosψsinψ0 sinψcosψ0 001]

含义:ZZZ坐标不变,只在XXXYYY平面内转。

关键点
任意一个三维旋转,都可以写成某个顺序的这三种基本旋转之积,比如
R=Rz(ψ)Ry(θ)Rx(ϕ)R = R_z(\psi) R_y(\theta) R_x(\phi)R=Rz(ψ)Ry(θ)Rx(ϕ)
这三个角ϕ,θ,ψ\phi,\theta,\psiϕ,θ,ψ就是一种欧拉角(更准确说是 Tait–Bryan 角)表示。


三、什么是“欧拉角”?——就是“先转、再转、再转”的顺序规则

欧拉角的核心:

  1. 选定一个旋转轴序列,比如Z→Y→XZ\to Y\to XZYX,或者Z→X→ZZ\to X\to ZZXZ等;
  2. 按照这个固定顺序,依次绕这些轴旋转三个角度;
  3. 合成后的总旋转就是一个旋转矩阵RRR
  4. 这三个角度就是欧拉角

注意有两个常见概念:

  • Proper Euler 角:三个旋转中,头尾绕的是“同一个轴”(比如Z!−!X!−!ZZ!-!X!-!ZZ!!X!!Z
  • Tait–Bryan 角:三个轴互不相同(比如Z!−!Y!−!XZ!-!Y!-!XZ!!Y!!X,也就是常说的 yaw–pitch–roll)

在机器人/计算机视觉/无人机里最常用的是 Tait–Bryan 的Z!−!Y!−!XZ!-!Y!-!XZ!!Y!!X顺序(yaw–pitch–roll)。


四、一定要说清楚:“先后顺序”和“内禀/外禀”

这也是你问题里“先转”的关键所在。

1. 外禀(extrinsic)旋转

  • 每次都绕固定的世界坐标轴
  • 比如:先绕世界XXX轴,再绕世界YYY轴,再绕世界ZZZ

2. 内禀(intrinsic)旋转

  • 每次都绕物体自身当前的坐标轴
  • 比如:先绕自身ZZZ轴,再绕当前YYY轴,再绕当前XXX

数学上,有一个漂亮的结论:

“内禀 Z!−!Y!−!XZ!-!Y!-!XZ!!Y!!X 顺序 == 外禀 X!−!Y!−!ZX!-!Y!-!ZX!!Y!!Z 逆序”

所以通常我们只要牢牢记住矩阵乘法的顺序就行:

  • 如果写成右乘向量p′=Rp\mathbf{p}' = R\mathbf{p}p=Rp

    • “先绕XXX再绕YYY再绕ZZZ” → 矩阵R=RzRyRxR = R_z R_y R_xR=RzRyRx
    • “最后发生的旋转,排在矩阵乘积的最左边”

下面我们选一个在工程里最常用的约定:
内禀Z!−!Y!−!XZ!-!Y!-!XZ!!Y!!X,也就是航天里的 yaw–pitch–roll


五、例子:ZYX 欧拉角(yaw–pitch–roll) → 旋转矩阵

我们设:

  • 滚转角(roll):ϕ\phiϕ,绕XXX
  • 俯仰角(pitch):θ\thetaθ,绕YYY
  • 偏航角(yaw):ψ\psiψ,绕ZZZ

采用**内禀Z→Y→XZ\to Y\to XZYX**顺序(相当于外禀X→Y→ZX\to Y\to ZXYZ逆序),
通常写:

R(ϕ,θ,ψ)=Rz(ψ),Ry(θ),Rx(ϕ) R(\phi,\theta,\psi) = R_z(\psi), R_y(\theta), R_x(\phi) R(ϕ,θ,ψ)=Rz(ψ),Ry(θ),Rx(ϕ)

第一步:写出三个基本矩阵

刚才已经给出了,这里只写一遍方便观察:

Rx(ϕ)=[1000cos⁡ϕ−sin⁡ϕ0sin⁡ϕcos⁡ϕ] R_x(\phi) = \begin{bmatrix} 1 & 0 & 0\\ 0 & \cos\phi & -\sin\phi \\ 0 & \sin\phi & \cos\phi \end{bmatrix} Rx(ϕ)= 1000cosϕsinϕ0sinϕcosϕ

Ry(θ)=[cos⁡θ0sin⁡θ010−sin⁡θ0cos⁡θ] R_y(\theta) = \begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix} Ry(θ)= cosθ0sinθ010sinθ0cosθ

Rz(ψ)=[cos⁡ψ−sin⁡ψ0sin⁡ψcos⁡ψ0001] R_z(\psi) = \begin{bmatrix} \cos\psi & -\sin\psi & 0 \\ \sin\psi & \cos\psi & 0 \\ 0 & 0 & 1 \end{bmatrix} Rz(ψ)= cosψsinψ0sinψcosψ0001


第二步:先算 Ry(θ)Rx(ϕ)R_y(\theta) R_x(\phi)Ry(θ)Rx(ϕ)

Ry(θ)Rx(ϕ)=[cos⁡θ0sin⁡θ010−sin⁡θ0cos⁡θ][1000cos⁡ϕ−sin⁡ϕ0sin⁡ϕcos⁡ϕ ] R_y(\theta)R_x(\phi)= \begin{bmatrix} \cos\theta & 0 & \sin\theta \\ 0 & 1 & 0 \\ -\sin\theta & 0 & \cos\theta \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & \cos\phi & -\sin\phi \\ 0 & \sin\phi & \cos\phi\ \end{bmatrix} Ry(θ)Rx(ϕ)= cosθ0sinθ010sinθ0cosθ 1000cosϕsinϕ0sinϕcosϕ 

逐项相乘(我写结果,细节你可以自己按行乘列验证):

Ry(θ)Rx(ϕ)=[cos⁡θsin⁡θsin⁡ϕsin⁡θcos⁡ϕ0cos⁡ϕ−sin⁡ϕ−sin⁡θcos⁡θsin⁡ϕcos⁡θcos⁡ϕ] R_y(\theta)R_x(\phi) = \begin{bmatrix} \cos\theta & \sin\theta\sin\phi & \sin\theta\cos\phi \\ 0 & \cos\phi & -\sin\phi \\ -\sin\theta & \cos\theta\sin\phi & \cos\theta\cos\phi \end{bmatrix} Ry(θ)Rx(ϕ)= cosθ0sinθsinθsinϕcosϕcosθsinϕsinθcosϕsinϕcosθcosϕ


第三步:再左乘 Rz(ψ)R_z(\psi)Rz(ψ) 得到总矩阵

R=Rz(ψ),Ry(θ),Rx(ϕ)=[cos⁡ψ−sin⁡ψ0sin⁡ψcos⁡ψ0001][cos⁡θsin⁡θsin⁡ϕsin⁡θcos⁡ϕ0cos⁡ϕ−sin⁡ϕ−sin⁡θcos⁡θsin⁡ϕcos⁡θcos⁡ϕ] R = R_z(\psi),R_y(\theta),R_x(\phi)= \begin{bmatrix} \cos\psi & -\sin\psi & 0 \\ \sin\psi & \cos\psi & 0 \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} \cos\theta & \sin\theta\sin\phi & \sin\theta\cos\phi \\ 0 & \cos\phi & -\sin\phi \\ -\sin\theta & \cos\theta\sin\phi & \cos\theta\cos\phi \end{bmatrix} R=Rz(ψ),Ry(θ),Rx(ϕ)= cosψsinψ0sinψcosψ0001 cosθ0sinθsinθsinϕcosϕcosθsinϕsinθcosϕsinϕcosθcosϕ

同样逐项相乘,最后得到:

R(ϕ,θ,ψ)=[cos⁡ψcos⁡θcos⁡ψsin⁡θsin⁡ϕ−sin⁡ψcos⁡ϕcos⁡ψsin⁡θcos⁡ϕ+sin⁡ψsin⁡ϕsin⁡ψcos⁡θsin⁡ψsin⁡θsin⁡ϕ+cos⁡ψcos⁡ϕsin⁡ψsin⁡θcos⁡ϕ−cos⁡ψsin⁡ϕ−sin⁡θcos⁡θsin⁡ϕcos⁡θcos⁡ϕ] R(\phi,\theta,\psi) = \begin{bmatrix} \cos\psi\cos\theta & \cos\psi\sin\theta\sin\phi - \sin\psi\cos\phi & \cos\psi\sin\theta\cos\phi + \sin\psi\sin\phi \\ \sin\psi\cos\theta & \sin\psi\sin\theta\sin\phi + \cos\psi\cos\phi & \sin\psi\sin\theta\cos\phi - \cos\psi\sin\phi \\ -\sin\theta & \cos\theta\sin\phi & \cos\theta\cos\phi \end{bmatrix} R(ϕ,θ,ψ)= cosψcosθsinψcosθsinθcosψsinθsinϕsinψcosϕsinψsinθsinϕ+cosψcosϕcosθsinϕcosψsinθcosϕ+sinψsinϕsinψsinθcosϕcosψsinϕcosθcosϕ

这就是ZYX(yaw–pitch–roll)欧拉角到旋转矩阵的关系

给它一个更紧凑的记号:设

  • cϕ=cos⁡ϕ, sϕ=sin⁡ϕc_\phi = \cos\phi,\ s_\phi = \sin\phicϕ=cosϕ, sϕ=sinϕ
  • cθ=cos⁡θ, sθ=sin⁡θc_\theta = \cos\theta,\ s_\theta = \sin\thetacθ=cosθ, sθ=sinθ
  • cψ=cos⁡ψ, sψ=sin⁡ψc_\psi = \cos\psi,\ s_\psi = \sin\psicψ=cosψ, sψ=sinψ

则:

R=[cψcθcψsθsϕ−sψcϕcψsθcϕ+sψsϕsψcθsψsθsϕ+cψcϕsψsθcϕ−cψsϕ−sθcθsϕcθcϕ] R = \begin{bmatrix} c_\psi c_\theta & c_\psi s_\theta s_\phi - s_\psi c_\phi & c_\psi s_\theta c_\phi + s_\psi s_\phi \\ s_\psi c_\theta & s_\psi s_\theta s_\phi + c_\psi c_\phi & s_\psi s_\theta c_\phi - c_\psi s_\phi \\ -s_\theta & c_\theta s_\phi & c_\theta c_\phi \end{bmatrix} R= cψcθsψcθsθcψsθsϕsψcϕsψsθsϕ+cψcϕcθsϕcψsθcϕ+sψsϕsψsθcϕcψsϕcθcϕ

从欧拉角到旋转矩阵的核心:
按顺序写出绕各轴的基本矩阵,再按“最后发生的旋转排在最左边”的原则相乘,就得到旋转矩阵。
每个矩阵元素都是欧拉角三角函数的组合。


六、反过来:从旋转矩阵 RRR 求欧拉角 (ϕ,θ,ψ)(\phi,\theta,\psi)(ϕ,θ,ψ)

设上面的矩阵记为:

R=[r11r12r13r21r22r23r31r32r33] R = \begin{bmatrix} r_{11} & r_{12} & r_{13} \\ r_{21} & r_{22} & r_{23} \\ r_{31} & r_{32} & r_{33} \end{bmatrix} R= r11r21r31r12r22r32r13r23r33

根据我们推出来的形式,有:

  • r31=−sin⁡θr_{31} = -\sin\thetar31=sinθ
  • r32=cos⁡θsin⁡ϕr_{32} = \cos\theta\sin\phir32=cosθsinϕ
  • r33=cos⁡θcos⁡ϕr_{33} = \cos\theta\cos\phir33=cosθcosϕ
  • r21=sin⁡ψcos⁡θr_{21} = \sin\psi\cos\thetar21=sinψcosθ
  • r11=cos⁡ψcos⁡θr_{11} = \cos\psi\cos\thetar11=cosψcosθ

在一般(不退化)情况下,cos⁡θ≠0\cos\theta \neq 0cosθ=0,我们可以这样解:

1. 求θ\thetaθ(pitch)

r31=−sin⁡θ r_{31} = -\sin\theta r31=sinθ

得到

θ=arcsin⁡(−r31) \theta = \arcsin(-r_{31}) θ=arcsin(r31)

或者写成

θ=−arcsin⁡(r31) \theta = -\arcsin(r_{31}) θ=arcsin(r31)

(两种写法等价)


2. 求ϕ\phiϕ(roll)

r32r_{32}r32r33r_{33}r33

r32=cos⁡θsin⁡ϕ,r33=cos⁡θcos⁡ϕ r_{32} = \cos\theta\sin\phi,\quad r_{33} = \cos\theta\cos\phi r32=cosθsinϕ,r33=cosθcosϕ

cos⁡θ≠0\cos\theta \neq 0cosθ=0时,两边同时除以cos⁡θ\cos\thetacosθ

r32cos⁡θ=sin⁡ϕ,r33cos⁡θ=cos⁡ϕ \frac{r_{32}}{\cos\theta} = \sin\phi,\quad \frac{r_{33}}{\cos\theta} = \cos\phi cosθr32=sinϕ,cosθr33=cosϕ

于是可以用atan2⁡\operatorname{atan2}atan2函数(考虑象限):

ϕ=atan2⁡(r32, r33) \phi = \operatorname{atan2}(r_{32},\ r_{33}) ϕ=atan2(r32, r33)


3. 求ψ\psiψ(yaw)

r21r_{21}r21r11r_{11}r11

r21=sin⁡ψcos⁡θ,r11=cos⁡ψcos⁡θ r_{21} = \sin\psi\cos\theta,\quad r_{11} = \cos\psi\cos\theta r21=sinψcosθ,r11=cosψcosθ

同样除以cos⁡θ\cos\thetacosθ

r21cos⁡θ=sin⁡ψ,r11cos⁡θ=cos⁡ψ \frac{r_{21}}{\cos\theta} = \sin\psi,\quad \frac{r_{11}}{\cos\theta} = \cos\psi cosθr21=sinψ,cosθr11=cosψ

于是:

ψ=atan2⁡(r21, r11) \psi = \operatorname{atan2}(r_{21},\ r_{11}) ψ=atan2(r21, r11)


4. 汇总:ZYX 欧拉角反解公式(一般情况)

cos⁡θ≠0\cos\theta \neq 0cosθ=0时(也就是θ≠±π2\theta \neq \pm \frac{\pi}{2}θ=±2π):

θ=arcsin⁡(−r31) \theta = \arcsin(-r_{31}) θ=arcsin(r31)

ϕ=atan2⁡(r32, r33) \phi = \operatorname{atan2}(r_{32},\ r_{33}) ϕ=atan2(r32, r33)

ψ=atan2⁡(r21, r11) \psi = \operatorname{atan2}(r_{21},\ r_{11}) ψ=atan2(r21, r11)

注意:

  • 这里的反解是假定你使用的旋转矩阵就是
    R=Rz(ψ)Ry(θ)Rx(ϕ)R = R_z(\psi)R_y(\theta)R_x(\phi)R=Rz(ψ)Ry(θ)Rx(ϕ)
  • 如果顺序不同(比如R=RxRyRzR = R_x R_y R_zR=RxRyRz),整个元素对应关系都会变,反解公式也要按新顺序重新推。

七、“万向节锁”(Gimbal Lock)——欧拉角的坑

前面假设cos⁡θ≠0\cos\theta \neq 0cosθ=0,即θ≠±π2\theta \neq \pm\frac{\pi}{2}θ=±2π
θ=±π2\theta = \pm\frac{\pi}{2}θ=±2π时,会发生:

  • cos⁡θ=0\cos\theta = 0cosθ=0
  • 你会发现矩阵里有一些信息“合并”到一起,导致不同的(ϕ,ψ)(\phi,\psi)(ϕ,ψ)组合能产生同一个RRR

这就是所谓的万向节锁现象:
三个转轴中,有两个轴变得共线,少了一个自由度。

在这种情况下,我们只能选一种约定来处理,例如:

  • θ=+π2\theta = +\frac{\pi}{2}θ=+2π时,固定ϕ=0\phi = 0ϕ=0,把所有绕XXXZZZ的旋转合到ψ\psiψ里;
  • 或者反过来固定ψ=0\psi = 0ψ=0,由r12,r13r_{12},r_{13}r12,r13之类的元素反求ϕ\phiϕ

但是无论哪种约定,说明一个事实:

欧拉角与旋转矩阵不是“全局一一对应”的,
在某些姿态(奇异点)上,一组RRR对应无穷多组(ϕ,θ,ψ)(\phi,\theta,\psi)(ϕ,θ,ψ)

这也是为什么在很多高精度/优化场景中,更喜欢用四元数或直接操作RRR,而不是欧拉角。


八、换一个“先转顺序”会怎样?

刚才我们用的是:

R=Rz(ψ)Ry(θ)Rx(ϕ) R = R_z(\psi)R_y(\theta)R_x(\phi) R=Rz(ψ)Ry(θ)Rx(ϕ)

如果你改成先绕XXX再绕YYY再绕ZZZ(外禀),矩阵就变成:

R′=Rx(α)Ry(β)Rz(γ) R' = R_x(\alpha)R_y(\beta)R_z(\gamma) R=Rx(α)Ry(β)Rz(γ)

那么R′R'R的每一个元素都会是α,β,γ\alpha,\beta,\gammaα,β,γ的不同组合。
推导方式完全一样:写出Rx,Ry,RzR_x,R_y,R_zRx,Ry,Rz,按顺序相乘即可。
关键是:顺序一变,矩阵形式就完全不同。

所以在工程里,大家讲“欧拉角”的时候,一定会同时说清楚顺序,例如:

  • ZYX(yaw–pitch–roll)
  • XYZ(roll–pitch–yaw)
  • ZXZ、ZYZ 等等
    不说顺序就说欧拉角,是不完整甚至是错误的。

九、欧拉角与“刚体位姿变换矩阵”的关系

在机器人、计算机视觉里,经常用4×44\times 44×4的齐次变换矩阵表示刚体位姿:

T=[Rt 0⊤1] T = \begin{bmatrix} R & \mathbf{t} \ \mathbf{0}^\top & 1 \end{bmatrix} T=[Rt 01]

其中:

  • RRR3×33\times 33×3的旋转矩阵(刚才欧拉角那一套的结果)
  • t=[tx ty tz]\mathbf{t} = \begin{bmatrix} t_x \ t_y \ t_z \end{bmatrix}t=[tx ty tz] 是平移向量

欧拉角只负责旋转部分

  1. 给定欧拉角(ϕ,θ,ψ)(\phi,\theta,\psi)(ϕ,θ,ψ),先按顺序求出RRR
  2. 再把RRR填进TTT的左上角,配上平移t\mathbf{t}t

T(ϕ,θ,ψ,t)=[R(ϕ,θ,ψ)t 0⊤1] T(\phi,\theta,\psi,\mathbf{t}) = \begin{bmatrix} R(\phi,\theta,\psi) & \mathbf{t} \ \mathbf{0}^\top & 1 \end{bmatrix} T(ϕ,θ,ψ,t)=[R(ϕ,θ,ψ)t 01]


十、关系小结

你问“欧拉角与先转变换矩阵之间的关系”,可以总结成以下几个层次:

  1. 旋转矩阵层面

    • 任意三维旋转可以用一个3×33\times 33×3的旋转矩阵RRR表示,满足
      R⊤R=I,det⁡(R)=1 R^\top R = I,\quad \det(R)=1 RR=I,det(R)=1
  2. 基本旋转层面

    • 绕三个坐标轴的基本旋转矩阵Rx(⋅),Ry(⋅),Rz(⋅)R_x(\cdot), R_y(\cdot), R_z(\cdot)Rx(),Ry(),Rz()可以显式写出;
  3. 欧拉角定义层面

    • 选定一个旋转轴序列(比如 ZYX),
    • 按这个顺序做三次基本旋转,
    • 三个角度(ϕ,θ,ψ)(\phi,\theta,\psi)(ϕ,θ,ψ)就是欧拉角;
    • 总旋转矩阵就是这些基本矩阵的乘积:
      R(ϕ,θ,ψ)=Rz(ψ)Ry(θ)Rx(ϕ) R(\phi,\theta,\psi) = R_z(\psi)R_y(\theta)R_x(\phi) R(ϕ,θ,ψ)=Rz(ψ)Ry(θ)Rx(ϕ)
  4. 从欧拉角到矩阵

    • 展开上述乘积,得到矩阵元素是sin⁡,cos⁡\sin,\cossin,cos的组合:
      R=[cψcθcψsθsϕ−sψcϕcψsθcϕ+sψsϕsψcθsψsθsϕ+cψcϕsψsθcϕ−cψsϕ−sθcθsϕcθcϕ] R = \begin{bmatrix} c_\psi c_\theta & c_\psi s_\theta s_\phi - s_\psi c_\phi & c_\psi s_\theta c_\phi + s_\psi s_\phi \\ s_\psi c_\theta & s_\psi s_\theta s_\phi + c_\psi c_\phi & s_\psi s_\theta c_\phi - c_\psi s_\phi \\ -s_\theta & c_\theta s_\phi & c_\theta c_\phi \end{bmatrix} R= cψcθsψcθsθcψsθsϕsψcϕsψsθsϕ+cψcϕcθsϕcψsθcϕ+sψsϕsψsθcϕcψsϕcθcϕ
  5. 从矩阵到欧拉角

    • 反过来从rijr_{ij}rij中解出(ϕ,θ,ψ)(\phi,\theta,\psi)(ϕ,θ,ψ)
      θ=arcsin⁡(−r31),ϕ=atan2⁡(r32,r33),ψ=atan2⁡(r21,r11) \theta = \arcsin(-r_{31}),\quad \phi = \operatorname{atan2}(r_{32}, r_{33}),\quad \psi = \operatorname{atan2}(r_{21}, r_{11}) θ=arcsin(r31),ϕ=atan2(r32,r33),ψ=atan2(r21,r11)
    • θ=±π2\theta = \pm\frac{\pi}{2}θ=±2π时会出现奇异(万向节锁)。
  6. 顺序的重要性

    • 换了旋转顺序(比如 XYZ, ZXY, ZXZ 等),
    • 总矩阵的形式与反解公式都会改变;
    • 因此说“欧拉角”必须指定具体顺序。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐