我正在尝试围绕轴旋转立方体,我正在做的是:
glTranslatef(0.0f, 0.0f, -60.0f);
glRotatef(angle, 0.0f, 1.0f, 0.0f);
我期待它移动到-60并围绕y轴旋转,但是它只是在-60坐标处自动旋转。当我这样写的时候:
glRotatef(angle, 0.0f, 1.0f, 0.0f);
glTranslatef(0.0f, 0.0f, -60.0f);
我得到了我需要但我不明白为什么? 他们为什么要反对? 有人可以解释一下。
答案 0 :(得分:4)
应用变换时,它将在本地应用。把它想象成一个你正在四处走动的坐标系。您从表示视图的坐标系开始,然后相对于自身转换该坐标系。因此,在第一种情况下,您将沿坐标系的Z轴平移坐标系-60,然后围绕新原点的新Y轴旋转坐标系。然后,您绘制的任何内容都将在新的坐标系中绘制。
这实际上提供了一种在习惯之后考虑转换的简单方法。您不必记住两个独立的坐标系:一个用于应用变换的坐标系,另一个用于绘制几何的坐标系。