您似乎对转换顺序有疑问。与数值乘法不同,矩阵乘法不是可交换的。3D应用程序对转换顺序非常敏感。
用英语讲:
如果
x和
y是数字,则
x * y=
y * x
但是,如果
x和
y是 矩阵 ,则
x * y≠
y * x!
考虑到这一点,让我们看看您在做什么。
test.mul(rotX, rotY);
为了可视化此乘法发生的情况,想象一下您的脑海中出现了一条直线。我们称这个为
LineUp。现在,低头看着键盘,想象一下
LineUp与您一起倾斜。现在将头旋转90度
LineUp。那就是你的旋转矩阵正在发生的事情。疯了吧?
现在让我们像这样反转乘法:
test.mul(rotY, rotX);
因此,坐直并向前看,然后转头/身体/椅子。现在往下看。
LineUp首先在真实轴上旋转,然后应用上/下变换。好玩吗
考虑矩阵变换的一种好方法就像必须按顺序排列的指令集。
- 向右转。(
rotY
) - 抬头 (
rotX
) - 移至计算机(
translate
) - …等等
更改一个操作的顺序会以滑稽和令人发指的方式更改所有后续指令。
您要构建的是一台相机,因此我强烈建议您阅读如何构建相机。
理解矩阵变换的一项重要工作是建立一个太阳系,其中包括绕月运行的卫星和旋转的行星。这将是令人大开眼界并且非常有用的内容。



