【发布时间】:2026-02-04 04:25:01
【问题描述】:
好的,我知道当我调用 glRotatef() 时它会这样做,
C = C * M
其中“C”是堆栈上的当前矩阵,“M”是由 glRotatef() 计算的矩阵。但是,这会导致对象围绕其局部轴旋转。 如果我想围绕其全局轴旋转对象,我必须这样做
C = M * C
例如,如果我想绕全局 x 旋转,然后是全局 y,然后是全局 z。会是
C = Mz * My* Mx * C
我已经对其进行了测试,并且可以正常工作。我想知道为什么我们必须为全局旋转进行预乘,反之亦然。
在我的例子中,“C”是模型视图矩阵。 请注意,我不是在谈论矩阵与向量的预乘法。我知道所有列专业 - 行专业的东西。我想知道将转换前/后乘以另一个 matrix4x4 的后果。
【问题讨论】:
-
这些只是说明你必须为全局旋转进行预乘,我想知道你为什么这样做而不是相反。我认为这与基础变换和空间的内部表示有关。 OGL 是如何知道“自从预乘以来我必须围绕全局轴旋转”
-
@Rabbid76:这是一道数学题,但它专门针对图形编程。
标签: c++ opengl matrix rotation