from math import * from time import * from pyglet.gl import * def lerp(a, v0, v1): return (1-a)*v0 + a*v1 class Mover: def __init__(self,radius,color,pos0,pos1,duration=1): self.radius = radius self.color = color self.pos0 = pos0 self.pos1 = pos1 self.pos = pos0 self.startTime = time() self.duration = duration def draw(self): glColor3f(self.color[0],self.color[1],self.color[2]) glPushMatrix() glTranslatef(self.pos[0], self.pos[1] ,0) glBegin(GL_TRIANGLE_FAN) glVertex2f(0,0) for angle in range(0,370,10): x = self.radius * cos(radians(angle)) y = self.radius * sin(radians(angle)) glVertex2f(x,y) glEnd() glPopMatrix() def update(self): a = (time() - self.startTime) / self.duration if a > 1: a = 1 x = lerp(a, self.pos0[0], self.pos1[0]) y = lerp(a, self.pos0[1], self.pos1[1]) self.pos = [x,y] def reset(self): self.pos = self.pos0 self.startTime = time() window = pyglet.window.Window() c = Mover(25, (0.5, 1, 0.2), (30,200), (600,400)) @window.event def on_draw(): global c glClear(GL_COLOR_BUFFER_BIT) c.draw() @window.event def on_key_press(key,modifiers): if key == pyglet.window.key.SPACE: c.reset() def update(dt): c.update() pyglet.clock.schedule_interval(update,1/60.0) pyglet.app.run()