转换矩阵平移矩阵旋转矩阵关系以及python实现旋转矩阵四元数欧拉角之间转换

Posted 非晚非晚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转换矩阵平移矩阵旋转矩阵关系以及python实现旋转矩阵四元数欧拉角之间转换相关的知识,希望对你有一定的参考价值。

文章目录


由于在平时总是或多或少的遇到平移旋转的问题,每次都是现查资料,然后查了忘,忘了继续查,这次弄明白之后干脆写一篇文章,给人方便同时于己方便,后续如有扩充或变动也方便添加。

1. 转换矩阵、平移矩阵、旋转矩阵之间的关系

假设有两个向量 a 1 = ( x 1 , y 1 , z 1 ) a_1 = (x_1, y_1, z_1) a1=(x1,y1,z1) a 2 = ( x 2 , y 2 , z 2 ) a_2 = (x_2, y_2, z_2) a2=(x2,y2,z2),它们的转换关系为:

a 1 = R ∗ a 2 + T a_1 = R * a_2 + T a1=Ra2+T
这里 R R R就是它的旋转矩阵 T T T就是它的平移矩阵。使用齐次方式表示如下:

( a 1 1 ) = ( R T 0 1 ) ∗ ( a 2 1 ) \\beginpmatrix a_1\\\\ 1 \\endpmatrix= \\beginpmatrix R&T\\\\ 0&1 \\endpmatrix* \\beginpmatrix a_2\\\\1 \\endpmatrix (a11)=(R0T1)(a21)
使用元素值替换后,表示如下:
( x 1 y 1 z 1 1 ) = ( r 11 r 12 r 13 t 1 r 21 r 22 r 23 t 2 r 31 r 32 r 33 t 3 0 0 0 1 ) ∗ ( x 2 y 3 z 2 1 ) \\beginpmatrix x_1\\\\y_1\\\\z_1\\\\1 \\endpmatrix= \\beginpmatrix r_11&r_12&r_13&t_1\\\\ r_21&r_22&r_23&t_2\\\\ r_31&r_32&r_33&t_3\\\\ 0&0&0&1 \\endpmatrix* \\beginpmatrix x_2\\\\y_3\\\\z_2\\\\1 \\endpmatrix x1y1z11 = r11r21r310r12r22r320r13r23r330t1t2t31 x2y3z21
在仿射变换中的转换矩阵表示先线性变换再平移。在这里转换矩阵表示如下:
转换矩阵 = ( r 11 r 12 r 13 t 1 r 21 r 22 r 23 t 2 r 31 r 32 r 33 t 3 0 0 0 1 ) 转换矩阵= \\beginpmatrix r_11&r_12&r_13&t_1\\\\ r_21&r_22&r_23&t_2\\\\ r_31&r_32&r_33&t_3\\\\ 0&0&0&1 \\endpmatrix 转换矩阵= r11r21r310r12r22r320r13r23r330t1t2t31
平移矩阵表示如下:
平移矩阵 T = ( t 1 t 2 t 3 )

以上是关于转换矩阵平移矩阵旋转矩阵关系以及python实现旋转矩阵四元数欧拉角之间转换的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV从仿射矩阵得到旋转量平移量缩放量

如何使用现代 OpenGL 的 GLM 或 JOML 矩阵正确转换(平移、旋转、缩放)对象

闫令琪GAMES101笔记 变换

矩阵的平移旋转与缩放

相机姿态估计:如何解释旋转和平移矩阵?

模型矩阵分解