Foros del Web » Programando para Internet » Python »

Pygame: Pequeño graficador

Estas en el tema de Pygame: Pequeño graficador en el foro de Python en Foros del Web. Este es un pequeño graficador, que trabaja en una resolución fija, la verdad es que es un programita muy simple. Espero subir otro parecido pero ...
  #1 (permalink)  
Antiguo 03/05/2009, 17:27
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Pygame: Pequeño graficador

Este es un pequeño graficador, que trabaja en una resolución fija, la verdad es que es un programita muy simple. Espero subir otro parecido pero para coordenadas polares. La función esta dentro del código, se llama f(x).
También pueden leer la funcion y utilizar la función eval. Claro no olviden validar antes de usar la función eval.

main.py
Código python:
Ver original
  1. #!/usr/bin/env python
  2. #coding: UTF-8
  3. import pygame
  4. from pygame import K_LEFT, K_RIGHT, K_UP, K_DOWN, K_ESCAPE
  5.  
  6. blue = (0, 0, 255)
  7. black = (0, 0, 0)
  8.  
  9. def init():
  10.     pygame.init()
  11.  
  12.     size = width, height = 640, 480
  13.     screen = pygame.display.set_mode(size)
  14.     pygame.display.set_caption("Graficadora")
  15.  
  16.     return screen
  17.  
  18. def translate((x, y)):
  19.     return (x + 320, 240 - y)
  20. screen = init()
  21.  
  22. dx = 0.5
  23. x = 0
  24. def f(x):
  25.     return x**2 / 100
  26.        
  27. while 1:
  28.     for event in pygame.event.get():
  29.         if event.type == pygame.QUIT:
  30.             exit()
  31.    
  32.     keyboard = pygame.key.get_pressed()
  33.     if keyboard[K_ESCAPE]:
  34.         exit()
  35.    
  36.     try:
  37.         start_pos = (int(x), int(f(x)))
  38.         end_pos = (int(x+dx), int(f(x+dx)))
  39.         x += dx
  40.     except ZeroDivisionError:
  41.         break
  42.     if x > 640:
  43.         x = 0
  44.     pygame.draw.line(screen, blue, translate(start_pos), translate(end_pos))
  45.     pygame.display.flip()
  #2 (permalink)  
Antiguo 04/05/2009, 20:14
 
Fecha de Ingreso: septiembre-2008
Ubicación: Nuñez, Capital Federal
Mensajes: 423
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Pygame: Pequeño graficador

buenas! muy interesante el codigo!!...

te comento que aprovecho doblemente el codigo por lo siguiente: estoy estudiando ingenieria en informatica, y estoy en un curso introductorio de python, asique algunas partes me sirven. Y por otro lado, estoy en un curso de Analisis Matematico II, en cual necesito de estos "applets" para poder ver las graficas de las funciones que estudiamos.

Ahora, te pregunto: por ejemplo, intente cambiar el valor de la funcion por el de, ejemplo, sin(x) importando el modulo math y llamando en la funcion a math.sin(x), pero me sale un linea recta: indudablemente, algo estoy haciendo mal! todos sabemos que el seno es una funcion oscilante. Como puedo, entonces, modificar el valor de la funcion?

Y preguntas al margen: solo sirve para funciones de una variable, no es cierto? digamos que una funcion f(x,y) no la graficaria, no? Y por ende, no logra hacer dibujos 3D?... en caso negativo, algun applet graficador hecho con python que me puedan recomendar??


Desde ya, muchas gracias y felicitaciones por tu aporte!

Pablo.
  #3 (permalink)  
Antiguo 05/05/2009, 08:05
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Pygame: Pequeño graficador

locoxchacho,
Ten en cuenta que sen(x), si bien es una función oscilante, tiene recorrido entre -1 y 1. Eso hace que, siendo que (si no vi mal) en el programa de razpeitia 1 = 1 px, el gráfico sea solamente una recta (algunos pixeles en -1, algunos en 1, y la mayoría en 0)

Tendrás que cambiar la escala del gráfico, o quizás graficar algo como 100sen(x).


Saludos.
  #4 (permalink)  
Antiguo 05/05/2009, 15:30
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Pygame: Pequeño graficador

Algo que probablemente les de dolores de cabeza es que si oscila de 0 a 360, tendrán que cambiar los grados a radianes, pero para eso eso esta la función radians en el modulo math.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:54.