import sys, math, random from OpenGL.GLUT import * from OpenGL.GL import * from OpenGL.GLU import * points = [] for i in range(0,41): angle = (i/40.0) * math.pi * 2 x,y = math.sin(angle), math.cos(angle) r,g,b = random.uniform(0,1), random.uniform(0,1), random.uniform(0,1) points.append([x,y,r,g,b]) wheelScale = 10.0 wheelRot = 0 wheelTrans = [50,50] def drawWheel(): glBegin(GL_TRIANGLE_FAN) glColor3f(1,1,1) glVertex2f(0,0) for p in points: glColor3fv(p[2:]) glVertex2fv(p[0:2]) glEnd() def draw(): glClear(GL_COLOR_BUFFER_BIT) glLoadIdentity() glTranslatef(wheelTrans[0], wheelTrans[1], 0) glRotatef(wheelRot, 0, 0, 1) glScalef(wheelScale, wheelScale, wheelScale) drawWheel() glFlush() def reshape(w,h): glViewport(0,w,0,h) glViewport(0, 0, w, h) glMatrixMode(GL_PROJECTION) glLoadIdentity() gluOrtho2D(0, w, 0, h) glMatrixMode(GL_MODELVIEW) def keyboard(key, x, y): global wheelScale, wheelRot, wheelTrans if key == chr(27): sys.exit(0) elif key == 'w': wheelTrans[1] += 5 elif key == 's': wheelTrans[1] -= 5 elif key == 'a': wheelTrans[0] -= 5 elif key == 'd': wheelTrans[0] += 5 elif key == GLUT_KEY_UP: wheelScale += 2 elif key == GLUT_KEY_DOWN: wheelScale -= 2 elif key == GLUT_KEY_LEFT: wheelRot += 10 elif key == GLUT_KEY_RIGHT: wheelRot -= 10 glutPostRedisplay() glutInit([]) glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB) glutInitWindowSize(400, 400) glutInitWindowPosition(0,0) glutCreateWindow(sys.argv[0]) glutDisplayFunc(draw) glutReshapeFunc(reshape) glutKeyboardFunc(keyboard) glutSpecialFunc(keyboard) glutMainLoop()