2015-12-21 1640 views

回答

5

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

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 

请注意,这是相对容易的,因为初始矩阵由标准基的基本向量组成。一般来说,这是更困难的,并涉及basis transformation,这基本上可以通过Gaussian elimination完成,但在数值上可能很难。

+1

注意,对于旋转矩阵应该减去M的所有列平移向量,所以'R = X_X - X X_Y - x x_z - x ...'等等 – MBo

+0

我对使用的符号不熟悉; 't'是否表示涉及翻译?这是有道理的,但最初的问题只需要旋转。 – Codor

+1

我认为是的,作者的[R | t]意味着旋转+翻译(注意非零原点)。矩阵M对于纯旋转情况是正确的,对于R + t,有必要使用相对坐标 – MBo