Hola, estoy realizando con Python y OpenGL un programilla para dibujar el fractal de Mandlebrot. Resulta que para el código trabajo con variables complejas, y estas me están dando algún que otro problema, creo que se debe a la naturaleza de Python o a que yo me estoy obcecando en algo que no se escribe así.
Pongo el código del programa, no es largo:
Código:
#! /usr/bin/env/python
import sys
from OpenGL.GL import *
from OpenGL.GLU import *
from OpenGL.GLUT import *
from OpenGL.GLE import *
from Numeric import *
def fractal():
x1 = 0.0
x2 = 10.0
y1 = 0.0
y2 = 10.0
p = 0.0
q = 0.0
k = 1
incrementop = (x2-x1)/(300.0-1.0)
incrementoq = (y2-y1)/(300.0-1.0)
while p<300.0:
while q<300.0:
po = x1 + p*incrementop
qo = y1 + q*incrementoq
z = complex(0.0, 0.0)
z1 = complex(po, qo)
while k<=40:
z = z*z + z1
print z
print abs(z)
if abs(z)>2:
glColor(1.0, 0.0, 0.0)
glVertex(po,qo)
k = k+1
q = q+1
p = p+1
def inicia():
# seleccionamos el color de fondo de ventana como negro
glClearColor (0.0, 0.0, 0.0, 1.0)
# Creamos la vista (proyeccion ortogonal)
glMatrixMode(GL_PROJECTION)
glLoadIdentity()
glOrtho(-170.0, 170.0, -170.0, 170.0, -170.0, 170.0)
def ver():
glClearColor(0.0,0.0,0.0,0.0)
fractal()
glutSwapBuffers()
return
glutInit(sys.argv)
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)
glutInitWindowSize(400,400)
glutInitWindowPosition(100, 100)
glutCreateWindow("Fractal Mandlebrot")
inicia()
glutDisplayFunc(ver)
glutMainLoop()
Bien, la duda que tengo es que el valor de la variable compleja z siempre me da 0j, es decir, me da cero; cuando hago correr el programa, lo cual es totalmente absurdo.
Me gustaría que alguien me diese alguna luz de porqué pasa eso.
Aunque el código pueda parecer algo complicado es bastante sencillo, y el problema lo tengo en la línea que pone:
z = z*z+z1
Gracias