Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/05/2009, 18:16
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 2 meses
Puntos: 1360
Pygame: Pequeño graficador polar

Aquí esta, como lo prometí. Un pequeño graficador pero esta vez con funciones polares. Ya se que exisisten herramientas como GNU/Plot que nos simplifican la vida a la hora de graficar, pero nunca esta demas hacer un programita de estos para agarrar practica.

main.py
Código python:
Ver original
  1. #!/usr/bin/env python
  2. #coding: UTF-8
  3. import pygame
  4. import math
  5. from math import sin, cos, sinh, cosh, tan, tanh, pi, e, degrees, exp, log, log10, pow, radians, sqrt
  6. from pygame import K_LEFT, K_RIGHT, K_UP, K_DOWN, K_ESCAPE
  7.  
  8. blue = (0, 0, 255)
  9. black = (0, 0, 0)
  10.  
  11. def init():
  12.     pygame.init()
  13.  
  14.     size = width, height = 640, 480
  15.     screen = pygame.display.set_mode(size)
  16.     pygame.display.set_caption("Graficadora polar")
  17.  
  18.     return screen
  19.  
  20. def translate((t, r)):
  21.     x = r*cos(radians(t))
  22.     y = r*sin(radians(t))
  23.     x += 320
  24.     y += 240
  25.     return (x, y)
  26.    
  27. screen = init()
  28.  
  29. dt = 0.5
  30. t = 0
  31. def r(t):
  32.     t = radians(t)
  33.     return 200*sin(4*t)
  34.        
  35. while 1:
  36.     for event in pygame.event.get():
  37.         if event.type == pygame.QUIT:
  38.             exit()
  39.    
  40.     keyboard = pygame.key.get_pressed()
  41.     if keyboard[K_ESCAPE]:
  42.         exit()
  43.    
  44.     try:
  45.         start_pos = (int(t), int(r(t)))
  46.         end_pos = (int(t + dt), int(r(t + dt)))
  47.         t += dt
  48.     except ZeroDivisionError:
  49.         break
  50.     if t > 360:
  51.         t = 0
  52.     pygame.draw.line(screen, blue, translate(start_pos), translate(end_pos))
  53.     pygame.display.flip()