欧拉角内旋外旋对应的旋转矩阵顺序为什么是反的(内旋的旋转矩阵链式乘法推导)
之前提到过,欧拉角内旋与外旋对应的旋转矩阵的顺序是反的,这篇文章介绍原因。
推导
首先我们定义一些变量,方便后边进行描述:
- (original)P : 原始坐标系下的 P 点坐标;
- (original)RA : 原始坐标系到 A 坐标系的旋转矩阵;
下面从一个例子引入:
将原坐标系及其中一点 (original)P1 =(1,0,0)T 绕 Z 轴旋转 45°,得到点在原坐标系下的新位置 (original)P2 ,同时得到新的坐标系 A,以及 (original)P2 在坐标系 A 中的坐标位置 (A)P2,具体如下图所示
旋转后的 P 点在 A 坐标系中表示为 (A)P2,坐标 (1,0,0)T与原坐标系中旋转前的 P 点 (original)P1 的坐标(1,0,0)T相同,如果我们用同样的旋转矩阵 (original)RA 乘以 (A)P2 =(1,0,0)T, 我们得到的结果与 (original)P2 相同,也就是得到了这个点在原坐标系下旋转后的坐标,这个很关键,后边推导会利用这一点。
我们可以通过下边这张图总结一下
- 左边的箭头:在原坐标系下,使用旋转矩阵 (original)RA 将点 (original)P1 旋转到了 (original)P2
- 右边的箭头:对于坐标系 A 中的一个点 (A)P2,我们可以把他的坐标转换成原坐标系下的位置,方法就是用得到这个点所在坐标系的那个矩阵(original)RA 去乘以这个坐标,也就是在对他做同样的旋转变换,即:
(original)P2 = (original)RA * (A)P2
有了上边的基础,我们就可以看下多次旋转的链式乘法的推导了,下面是多次旋转的例子:
我们先绕 Z 轴旋转 45°,得到坐标系 A, 再绕新的坐标系的 Z 轴继续旋转 45°,得到坐标系 B,如下图所示:
同样的,可以用下边这张图总结一下:
我们把一个原始坐标系下的点 P 经过两次旋转后得到 B 坐标系下的该点坐标 BP3 = (1, 0, 0)T,这个点的坐标与原坐标系下原始点 (original)P1 的坐标一样,我们使用 A 坐标系 到 B 坐标系的变换矩阵去乘它,就得到了 A 坐标系下该点的坐标 AP3,在使用 (original)RA 乘以他,就得到了原始坐标系下该点的坐标值,过程如下图所示:
这就是为什么内旋时,旋转矩阵要倒着写的原因了。
参考
- https://dominicplein.medium.com/extrinsic-intrinsic-rotation-do-i-multiply-from-right-or-left-357c38c1abfd