home *** CD-ROM | disk | FTP | other *** search
/ MacHack 2000 / MacHack 2000.toast / pc / The Hacks / MacHacksBug / Python 1.5.2c1 / Extensions / Numerical / Demo / mandelbrot.py < prev    next >
Encoding:
Python Source  |  2000-06-23  |  650 b   |  28 lines

  1. #!/usr/bin/env python
  2. #
  3. # Mandelbrot ASCII-art using Numeric Python 1.0beta1
  4. #
  5. # Rob Hooft, 1996. Distribute freely.
  6.  
  7. from Numeric import *
  8.  
  9. def draw(LowX, HighX, LowY, HighY, stepx=80, stepy=24, maxiter=30):
  10.     xx=arange(LowX,HighX,(HighX-LowX)/stepx)
  11.     yy=arange(HighY,LowY,(LowY-HighY)/stepy)*1j
  12.     c=ravel(xx+yy[:,NewAxis])
  13.     z=zeros(c.shape,Complex)
  14.     output=resize(array(['_'],'c'),c.shape)
  15.     for iter in range(maxiter):
  16.         z=z*z+c
  17.         finished=greater(abs(z),2.0)
  18.         c=where(finished,0+0j,c)
  19.         z=where(finished,0+0j,z)
  20.         output=where(finished,chr(66+iter),output)
  21.     return output.tostring()
  22.  
  23.  
  24. if __name__ == "__main__":
  25.     print draw(-2.1, 0.7, -1.2, 1.2)
  26.  
  27.  
  28.