Exploring transformation orders
Assuming you typed in your code in the same order that I did, then you’d have your transformations listed like this within the Object.py
code:
glTranslatef(pos.x, pos.y, pos.z)
glScalef(scale.x, scale.y, scale.z)
glRotated(rot_angle, rot_axis.x, rot_axis.y, rot_axis.z)
But did you wonder why they were in that order? Why don’t you place the glRotated()
line first in this list, like this:
glRotated(rot_angle, rot_axis.x, rot_axis.y, rot_axis.z)
glTranslatef(pos.x, pos.y, pos.z)
glScalef(scale.x, scale.y, scale.z)
Now, run the project. What happens when you rotate the cube?
It goes off the screen, right? However, it appears to be slightly rotating. Hold down the right-arrow key for a while. The cube will go off the right-hand side of the window, and then eventually come back from the left-hand side, as illustrated in Figure 12.8:
Figure 12.8: The cube spinning around the viewer’s head
What’...