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



有没有一种直接的方法可以从以下输入构造旋转矩阵?

假设有一个标准的垂直参考: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

给定在XYZ坐标系中定义的点,将它们转换为具有3x3旋转矩阵的X'Y'Z坐标系。通常,局部a轴、b轴和c轴的分量排列在世界坐标中的列中表示该系统的local->world变换,使得

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

和反向变换(使用矩阵转置)

| 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 |

是的,从标识到任何其他转换的转换是另一个转换。通常你不称这些东西为旋转矩阵,因为它们表示任何任意变换。仅靠旋转可能无法实现转换,因为转换可能镜像到一个或两个平面。

请注意,当您使用列向量时,完全有可能也使用行向量,在这种情况下,您的结果只是转置,乘法顺序相反。从数学上讲,这是一回事。因此,请检查您的系统

最新更新