import sys import time from OpenGL.GLUT import * from OpenGL.GL import * from OpenGL.GLU import * angle0 = 0 angle1 = 90 angle2 = 0 prevTime = time.time() def drawPlanet(radius, color): glColor3fv(color) glBegin(GL_QUADS) glVertex2f(-radius, -radius) glVertex2f(radius, -radius) glVertex2f(radius, radius) glVertex2f(-radius, radius) glEnd() def draw(): global angle0 glLoadIdentity() glClear(GL_COLOR_BUFFER_BIT) drawPlanet(0.2, [0, 0, 1]) glPushMatrix() glRotatef(angle0, 1, 0, 0) glTranslatef(0.6, 0.0, 0.0) drawPlanet(0.1, [1, 0, 0]) glPopMatrix() glPushMatrix() glRotatef(angle1, 0, 1, 0) glTranslatef(0.7, 0.0, 0.0) drawPlanet(0.08, [1, 1, 0]) glPushMatrix() glRotatef(angle2, 0, 0, 1) glTranslatef(0.2, 0.0, 0.0) drawPlanet(0.03, [0.25, 1, 0.25]) glPopMatrix() glPopMatrix() glFlush() def keyboard(key, x, y): if key == chr(27): sys.exit(0) def update(): global angle0, angle1, angle2 global prevTime currentTime = time.time() deltaTime = currentTime - prevTime prevTime = currentTime angle0 = angle0 + 180 * deltaTime angle1 = angle1 + 90 * deltaTime angle2 = angle2 + 270 * deltaTime glutPostRedisplay() glutInit(sys.argv) glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) glutInitWindowSize(400, 400) glutInitWindowPosition(0,0) glutCreateWindow(sys.argv[0]) glutDisplayFunc(draw) glutKeyboardFunc(keyboard) glutIdleFunc(update) glutMainLoop()