3D旋转矩阵(旋转到另一个参考系统)

时间:2013-10-27 17:27:52

标签: math matrix rotation

是否有直接方法从以下输入构造旋转矩阵?

假设有一个标准垂直参考:X[1,0,0], Y[0,1,0], Z[0,0,1]我希望旋转矩阵将其旋转以匹配另一个垂直参考X'[a1,b1,c1], Y'[a2,b2,c2], Z'[a3,b3,c3]。向量是单位向量。 矩阵是否可能如下所示?

a1, a2, a3
b1, b2, b3
c1, c2, c3

2 个答案:

答案 0 :(得分:3)

给定XYZ坐标系中定义的点,将它们转换为X'Y'Z坐标系,其中3x3旋转矩阵。通常,在世界坐标中的列中排列的本地abc轴的组件代表该系统的local->world转换,以便

| x_world |   | a1 b1 c1 | | x_local |
| y_world | = | a2 b2 c2 | | y_local |
| z_world |   | a3 b3 c3 | | z_local |

和反向转换(使用matrix transpose

| x_local |   | a1 a2 a3 | | x_world |
| y_local | = | b1 b2 b3 | | y_world |
| z_local |   | c1 c2 c3 | | z_world |

现在要在local->world个旋转矩阵XYZX'Y'Z'的任意两个坐标系之间进行转换(在您的情况下注意XYZ是3x3单位矩阵)对

point_x'y'z' = transpose(X'Y'Z') * (XYZ) * point_xyz

| x' |    | a1 b1 c1 | | x |   | a1 x + b1 y + c1 z |
| y' | =  | a2 b2 c2 | | y | = | a2 x + b2 y + c2 z |
| z' |    | a3 b3 c3 | | z |   | a3 x + b3 y + c3 z |

答案 1 :(得分:2)

是的,从身份到任何其他变换的转换是另一个变换。通常你不会将这些东西称为旋转矩阵,因为它们代表任意的变换。可能单独通过旋转可能无法实现变换,因为变换可以围绕一个或两个平面进行镜像。

请注意,在使用列向量时,完全可以使用行向量,在这种情况下,您的结果只是转置,而乘法顺序相反。在数学上它是同样的事情。所以检查你的系统