如何在两个坐标系之间找到旋转矩阵?

Uda*_*aya 21 math geometry matrix computer-vision

有两个坐标系.我们知道原点的3D坐标和第二坐标系的轴相对于第一坐标系的3D矢量.那么我们如何才能找到将第一个坐标系转换为第二个坐标系的旋转矩阵?

在此输入图像描述

Cod*_*dor 8

所描述的问题可以如下解决.让

M = m_11 m_12 m_13
    m_21 m_22 m_23
    m_31 m_32 m_33
Run Code Online (Sandbox Code Playgroud)

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

 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
Run Code Online (Sandbox Code Playgroud)

where t表示翻译; 我们看到这个矩阵相等可以通过从左边乘以单位矩阵来解决,单位矩阵是自身的倒数; 因此我们获得了以下平等.

 M + t = x_x x_y x_z
         y_x y_y y_z
         z_x z_y z_y
Run Code Online (Sandbox Code Playgroud)

这可以通过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
Run Code Online (Sandbox Code Playgroud)

注意,这是相对容易的,因为初始矩阵由标准基础的基本向量组成.通常,它更加困难并且涉及基础变换,其基本上可以通过高斯消除来完成,但是在数值上可能是困难的.