import pygame from pygame.locals import * from math import sin, cos from time import sleep import sys class PendulumVisualizer: def __init__(self, t, z, y, l): pygame.init() self.window = pygame.display.set_mode((640, 480)) pygame.display.set_caption("Pendulum") self.screen = pygame.display.get_surface() t_ = 0 self.frame = 0 print len(y) while True: self.input(pygame.event.get()) t_ += 1 if t_ >= len(y): sys.exit(0) self.draw_pendulum(z[t_], l, y[t_]) sleep(0.033) def draw_pendulum(self, z, l, theta): plat_width = 200 plat_height = 4 scale = 50.0 self.screen.fill((0,0,0)) zpix = 240 - z * scale pygame.draw.rect(self.screen, (255, 255, 0), pygame.Rect(320 - plat_width/2, zpix - plat_height/2, plat_width, plat_height)) pend_x = 320 + (l * scale) * sin(theta) pend_y = zpix + (l * scale) * cos(theta) pygame.draw.line(self.screen, (255, 255, 255), (320, zpix), (pend_x, pend_y), 2) pygame.draw.circle(self.screen, (255, 0, 0), (pend_x, pend_y), 10) #pygame.image.save(self.screen, "movie/%04d.png" % self.frame) self.frame += 1 pygame.display.flip() def input(self, events): for event in events: if event.type == QUIT: sys.exit(0) if __name__ == "__main__": PendulumVisualizer()