如何表示4x4矩阵旋转?

Mar*_*ram 10 math matrix

给定x,y,z旋转矩阵的以下定义,我如何将其表示为一个完整的矩阵?只需乘以x,y和矩阵?

X轮换:

[1 0 0 0]
[0 cos(-X Angle) -sin(-X Angle) 0]
[0 sin(-X Angle) cos(-X Angle) 0]
[0 0 0 1]
Run Code Online (Sandbox Code Playgroud)

Y轮换:

[cos(-Y Angle) 0 sin(-Y Angle) 0]
[0 1 0 0]
[-sin(-Y Angle) 0 cos(-Y Angle) 0]
[0 0 0 1]
Run Code Online (Sandbox Code Playgroud)

Z轮换:

[cos(-Z Angle) -sin(-Z Angle) 0 0]
[sin(-Z Angle) cos(-Z Angle) 0 0]
[0 0 1 0]
[0 0 0 1] 
Run Code Online (Sandbox Code Playgroud)

编辑:我有一个单独的旋转类,其中包含x,y,z浮点值,我稍后将其转换为矩阵,以便与其他平移/缩放/旋转结合使用.

从这里的答案来看,我可以假设,如果我做了类似的事情:

旋转; rotation.SetX(45); rotation.SetY(90); rotation.SetZ(180);

那么旋转应用的顺序实际上非常重要吗?或者可以安全地假设在使用旋转类时,您接受它们是以x,y,z顺序应用的吗?

Ign*_*ams 7

是的,依次乘以三个矩阵将构成它们.

编辑:

将乘法应用于矩阵的顺序将决定旋转将应用于该点的顺序.

P × (X × Y × Z)     Rotations in X, Y, then Z will be performed
P × (Y × X × Z)     Rotations in Y, X, then Z will be performed
P × (Z × X × Y)     Rotations in Z, X, then Y will be performed
Run Code Online (Sandbox Code Playgroud)