所描述的问题可以通过以下方式解决。让
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
请注意,这相对容易,因为初始矩阵由标准基的基本向量组成。一般来说,它比较困难,涉及基变换,基本上可以通过高斯消元法来完成,但在数值上可能很困难。
我认为基础的改变可以帮助你维基链接。它很容易实现。
旋转矩阵就是 -
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的轴。
设 A 为定义两个坐标系之间关系的 4x4 矩阵。
那么两者之间的角度为:
θ = arcos(迹线(A)/2.0)