一步步推导由欧拉角到旋转矩阵的计算过程

本文详细解析了从二维到三维空间直角坐标系的旋转变换过程,包括旋转矩阵的推导与合并,以及如何使用欧拉角进行三维坐标变换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了便于理解,我们先来做一道简单的数学题:

如图,坐标系OX1Y1OX_1Y_1OX1Y1经过逆时针旋转θ\thetaθ角变换为坐标系OX2Y2OX_2Y_2OX2Y2,P点坐标由(x1,y1)(x_1,y_1)(x1,y1)(x2,y2)(x_2,y_2)(x2,y2)
:怎样用用x1,y1,θx_1,y_1,\thetax1,y1,θ表示x2,y2x_2,y_2x2,y2

由图可得:
a=y1−b=y1−x1tanθ(1) a=y_1-b=y_1-x_1tan\theta\tag{1} a=y1b=y1x1tanθ(1)
x2=c+d=asinθ+x1cosθ(2) x_2 = c + d = asin\theta + \frac{x_1}{cos\theta} \tag{2} x2=c+d=asinθ+cosθx1(2)
y2=acosθ(3) y_2 = a cos\theta \tag{3} y2=acosθ(3)
将(1)式代入(2)、(3)式并化简得:
x2=x1cosθ+y1sinθ(4) x_2 = x_1cos\theta+y_1sin\theta \tag{4} x2=x1cosθ+y1sinθ(4)
y2=−x1sinθ+y1cosθ(5) y_2 = -x_1sin\theta + y_1cos\theta \tag{5} y2=x1sinθ+y1cosθ(5)
(4)、(5)式的矩阵形式表示:
[x2y2]=[cosθsinθ−sinθcosθ][x1y1](6) \left[ \begin{matrix} x_2 \\ y_2 \\ \end{matrix} \right]=\\ \left[ \begin{matrix} cos\theta & sin\theta\\ -sin\theta & cos\theta \end{matrix} \right] \left[ \begin{matrix} x_1 \\ y_1 \end{matrix} \right] \tag{6} [x2y2]=[cosθsinθsinθcosθ][x1y1](6)
该式子展开即与(4)、(5)式形式完全相同。

(这个过程希望大家亲手用笔算一下,只是一个简单的几何问题,并没有难以理解的地方,只有深刻理解了这个转换过程才能理解接下来的三维空间直角坐标系)

三维坐标系

其实对于三维空间直角坐标系的旋转变换,形式上和二维空间中的一样,只是二维坐标系中我们只需要旋转一次,而三维坐标系中我们需要旋转3次。即:
(1) 绕 XXX 轴旋转 εX\varepsilon_XεX 角。
(2) 绕 YYY 轴旋转 εY\varepsilon_YεY 角。
(3) 绕 ZZZ 轴旋转 εZ\varepsilon_ZεZ 角。
此处εX,εY,εZ\varepsilon_X,\varepsilon_Y,\varepsilon_ZεX,εY,εZ即为三维空间直角坐标变换的三个旋转角,也称为欧拉角

下面进行公式推导

(1) 绕 XXX 轴旋转 εX\varepsilon_XεX 角。

即:X坐标不变,Y,Z坐标变换,如图:

现在类比一下我们之前推导的二维坐标系中的情况
不看X轴,把这里的Y、Z轴看成之前的X、Y轴,这里的εX\varepsilon_XεX看之前的θ\thetaθ
得:
[y2z2]=[cosεXsinεX−sinεXcosεX][y1z1](7) \left[ \begin{matrix} y_2 \\ z_2 \\ \end{matrix} \right]=\\ \left[ \begin{matrix} cos\varepsilon_X & sin\varepsilon_X\\ -sin\varepsilon_X & cos\varepsilon_X \end{matrix} \right] \left[ \begin{matrix} y_1 \\ z_1 \end{matrix} \right] \tag{7} [y2z2]=[cosεXsinεXsinεXcosεX][y1z1](7)
加上没有变化的xxx:
[x2y2z2]=[1000cosεXsinεX0−sinεXcosεX][x1y1z1](8) \left[ \begin{matrix} x_2\\ y_2 \\ z_2 \\ \end{matrix} \right]=\\ \left[ \begin{matrix} 1 & 0 & 0\\ 0 & cos\varepsilon_X & sin\varepsilon_X\\ 0 & -sin\varepsilon_X & cos\varepsilon_X \end{matrix} \right] \left[ \begin{matrix} x_1 \\ y_1 \\ z_1 \end{matrix} \right] \tag{8} x2y2z2=1000cosεXsinεX0sinεXcosεXx1y1z1(8)
(7)式和(8)式的展开形式其实一样,仅仅多了一个x2=x1x_2=x_1x2=x1
到这里,我们找到了第一个旋转矩阵:
R1(εX)=[1000cosεXsinεX0−sinεXcosεX](9) R_1(\varepsilon_X)= \left[ \begin{matrix} 1 & 0 & 0\\ 0 & cos\varepsilon_X & sin\varepsilon_X\\ 0 & -sin\varepsilon_X & cos\varepsilon_X \end{matrix} \right] \tag{9} R1(εX)=1000cosεXsinεX0sinεXcosεX(9)
至此,完成了第一次旋转操作

(2) 绕 YYY 轴旋转 εY\varepsilon_YεY

与前面同理,找到第二个旋转矩阵:
R2(εY)=[cosεY0−sinεY010sinεYcosεY0](10) R_2(\varepsilon_Y)= \left[ \begin{matrix} cos\varepsilon_Y & 0 &-sin\varepsilon_Y\\ 0 & 1 &0\\ sin\varepsilon_Y& cos\varepsilon_Y& 0 \end{matrix} \right] \tag{10} R2(εY)=cosεY0sinεY01cosεYsinεY00(10)

(3) 绕 ZZZ 轴旋转 εZ\varepsilon_ZεZ

与前面同理,找到第三个旋转矩阵:
R3(εZ)=[cosεZsinεZ0−sinεZcosεZ0001](11) R_3(\varepsilon_Z)= \left[ \begin{matrix} cos\varepsilon_Z & sin\varepsilon_Z &0\\ -sin\varepsilon_Z &cos\varepsilon_Z &0\\ 0& 0& 1 \end{matrix} \right] \tag{11} R3(εZ)=cosεZsinεZ0sinεZcosεZ0001(11)

现在,我们分别找到了绕三个轴旋转的旋转矩阵

(4) 合并三次旋转

令:R0=R1(εX)R2(εY)R3(εZ)R_0 = R_1(\varepsilon_X)R_2(\varepsilon_Y)R_3(\varepsilon_Z)R0=R1(εX)R2(εY)R3(εZ)
有:
[X2Y2Z2]=R1(εX)R2(εY)R3(εZ)[X1Y1Z1]=R0[X1Y1Z1](12) \left[ \begin{matrix} X_2\\ Y_2\\ Z_2 \end{matrix} \right] =\\ R_1(\varepsilon_X)R_2(\varepsilon_Y)R_3(\varepsilon_Z) \left[ \begin{matrix} X_1\\ Y_1\\ Z_1 \end{matrix} \right]=\\ R_0 \left[ \begin{matrix} X_1\\ Y_1\\ Z_1 \end{matrix} \right] \tag{12} X2Y2Z2=R1(εX)R2(εY)R3(εZ)X1Y1Z1=R0X1Y1Z1(12)
将(9)、(10)、(11)式代入(12)式得:
R0=[cosεYcosεZcosεYsinεZ−sinεY−cosεXsinεZ+sinεXsinεYcosεZcosεXcosεZ+sinεXsinεYsinεZsinεXcosεYsinεXsinεZ+cosεXsinεYcosεZ−sinεXcosεZ+cosεXsinεYsinεZcosεXcosεY](13) R_0=\\ \left[ \begin{matrix} cos\varepsilon_Ycos\varepsilon_Z & cos\varepsilon_Ysin\varepsilon_Z & -sin\varepsilon_Y\\ -cos\varepsilon_Xsin\varepsilon_Z+sin\varepsilon_Xsin\varepsilon_Ycos\varepsilon_Z & cos\varepsilon_Xcos\varepsilon_Z+sin\varepsilon_Xsin\varepsilon_Ysin\varepsilon_Z & sin\varepsilon_Xcos\varepsilon_Y\\ sin\varepsilon_Xsin\varepsilon_Z+cos\varepsilon_Xsin\varepsilon_Ycos\varepsilon_Z & -sin\varepsilon_Xcos\varepsilon_Z+cos\varepsilon_Xsin\varepsilon_Ysin\varepsilon_Z & cos\varepsilon_Xcos\varepsilon_Y\\ \end{matrix} \right] \tag{13} R0=cosεYcosεZcosεXsinεZ+sinεXsinεYcosεZsinεXsinεZ+cosεXsinεYcosεZcosεYsinεZcosεXcosεZ+sinεXsinεYsinεZsinεXcosεZ+cosεXsinεYsinεZsinεYsinεXcosεYcosεXcosεY(13)
到这里,我们的计算工作就结束了,最终求出的R0R_0R0就是我们所需要的旋转矩阵

(PS:大家知道,矩阵乘法没有交换律,所以我们进行三次旋转的顺序不同,最终得到的旋转矩阵也不一样,这里用的是X-Y-Z的的旋转顺序。)

可参考《大地测量学》P44(武汉大学出版社) 第二版

评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值