如何求两个坐标系之间的旋转矩阵?

问题描述 投票:0回答:4

有两个坐标系。我们知道原点的 3D 坐标以及第二坐标系相对于第一坐标系的轴的 3D 向量。那么如何找到将第一坐标系变换到第二坐标系的旋转矩阵呢?

math matrix geometry computer-vision
4个回答
16
投票

所描述的问题可以通过以下方式解决。让

M = m_11 m_12 m_13
    m_21 m_22 m_23
    m_31 m_32 m_33

表示所需的旋转矩阵。我们需要

 1 0 0 * M + t = x_x x_y x_z
 0 1 0           y_x y_y y_z
 0 0 1           z_x z_y z_y

其中

t
表示翻译;我们看到这个矩阵等式可以通过从左边乘以单位矩阵来解决,单位矩阵是其自身的逆矩阵;因此我们得到以下等式。

 M + t = x_x x_y x_z
         y_x y_y y_z
         z_x z_y z_y

可以通过从两边减去

t
来重新排列以获得所需的矩阵
M
,如下所示。

 M = x_x x_y x_z - t = x_x-t_x x_y-t_y x_z-t_z 
     y_x y_y y_z       y_x-t_x y_y-t_y y_z-t_z
     z_x z_y z_y       z_x-t_x z_y-t_y z_z-t_z

请注意,这相对容易,因为初始矩阵由标准基的基本向量组成。一般来说,它比较困难,涉及基变换,基本上可以通过高斯消元法来完成,但在数值上可能很困难。


1
投票

我认为基础的改变可以帮助你维基链接。它很容易实现。


0
投票

旋转矩阵就是 -

R = [x_x, y_x, z_x; x_y,y_y,y_z; z_x,z_y,z_z]

原因是一个坐标系相对于任何其他坐标系的旋转矩阵的列就是第一个坐标系相对于另一个坐标系的轴的列。

所以,如果要计算B坐标系相对于A坐标系的旋转矩阵R,R的列就是A中B的轴。


-2
投票

设 A 为定义两个坐标系之间关系的 4x4 矩阵。

那么两者之间的角度为:

θ = arcos(迹线(A)/2.0)

© www.soinside.com 2019 - 2024. All rights reserved.