import sys import time from random import * from math import * from OpenGL.GLUT import * from OpenGL.GL import * from OpenGL.GLU import * class Circle: def __init__(self, x, y, radius, color): self.x = x self.y = y self.radius = radius self.color = color def draw(self): glColor3fv(self.color) glBegin(GL_TRIANGLE_FAN) glVertex2f(self.x, self.y) for i in range(0,30): glVertex2f(self.x + cos(radians(i*12.0)) * self.radius, self.y + sin(radians(i*12.0)) * self.radius) glEnd() c = Circle(-10, 0, 5, [1,0,0]) d = Circle(4, 3, 3, [0,1,0]) objects = [c,d] def draw(): glClear(GL_COLOR_BUFFER_BIT) glLoadIdentity() for o in objects: o.draw() glutSwapBuffers() def keyboard(key, x, y): if key == chr(27): sys.exit(0) elif key == ' ': objects.append(Circle(0, uniform(-10,10), 1, [random(), random(), random()])) def update(dummy): glutTimerFunc(16, update, 0) for o in objects: o.x += uniform(-0.1,0.1) c.x = sin(time.time()) * 10 glutPostRedisplay() glutInit(sys.argv) glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB) glutInitWindowSize(400, 400) glutInitWindowPosition(0,0) glutCreateWindow(sys.argv[0]) glutDisplayFunc(draw) glutKeyboardFunc(keyboard) glutTimerFunc(0, update, 0) glMatrixMode(GL_PROJECTION) gluOrtho2D(-10,10,-10,10) glMatrixMode(GL_MODELVIEW) glutMainLoop()