title: Julia set fractals
body: <p>I wrote a program to generate Julia set fractals. The program also allows the user to enter their value of c or let the program generate a random value. Here is the code :-</p>
  
  <pre><code>import pygame, sys, math, cmath, random
  from pygame.locals import *
  print("Julia set fractal generator")
  custom = int(input("Do you want a custom set? Yes(1); No(-1): "))
  if custom == -1:
      c = complex((random.randint(-999,1000))/1000.0,(random.randint(-999,1000))/1000.0)
  else:
      a = float(input("Real?: "))
      b = float(input("Imaginary?: "))
      c = complex(a,b)
  lim = 4
  limn = -4
  mul = 0
  iteration_detail = 100
  screen = pygame.display.set_mode((512,512),0,32)
  pygame.display.set_caption("Julia set fractal generator")
  def iterate (px_i,py_i,iters):
      itnum = 1
      z = complex(((px_i-256)/512.0)*4,((py_i-256)/512.0)*4)
      while itnum &lt;= iters:
          if z.real &gt;= lim or z.imag &gt;= lim or z.real &lt;= limn or z.imag &lt;= limn:
                  break
          z = z**2 + c
          itnum += 1
  return(z.real, z.imag, itnum)
  def pixel_color_set (iterx, itery, iterations):
      pixel_color = (0,0,0)
      if iterx &gt;= lim or itery &gt;= lim or iterx &lt;= limn or itery &lt;= limn:
          if iterations &lt; 2:
                  pixel_color = (204,0,102)
          elif iterations == 2:
                  pixel_color = (204,0,204)
          elif iterations == 3:
                  pixel_color = (102,0,204)
          elif iterations ==4:
                  pixel_color = (0,0,204)
          elif iterations ==5:
                  pixel_color = (0,102,204)
          elif iterations ==6:
                  pixel_color = (0,204,204)
          elif iterations ==7:
                  pixel_color = (0,204,102)
          elif iterations ==8:
                  pixel_color = (0,204,0)
          elif iterations ==9:
                  pixel_color = (102,204,0)
  return(pixel_color)
  def draw_pixel (px, py, color):
  return(screen.fill(color, ((px, py),(1, 1))))
  while 1:
  for event in pygame.event.get():
          if event.type == QUIT:
                  pygame.quit()
                  sys.exit()
          if event.type == KEYDOWN:
                  if event.key == K_UP:
                          mul = 0.1
                  elif event.key == K_DOWN:
                          mul = -0.1
                  if event.key == K_SPACE:
                          pygame.image.save(screen, "fractal.jpg")
          if event.type == KEYUP:
                   if event.key == K_UP:
                          mul = 0
                   elif event.key == K_DOWN:
                          mul = 0
          c += mul
  ypxl = 0
  while ypxl &lt; 512:
          xpxl = 0
          while xpxl &lt; 512:
                  ipxl = iterate(xpxl,ypxl,iteration_detail)
                  cpxl = pixel_color_set(ipxl[0], ipxl[1], ipxl[2])
                  draw_pixel(xpxl, ypxl, cpxl)
                  xpxl += 1
          ypxl += 1
  pygame.display.update()
  </code></pre>
  
  <p>The code does work but it doesn't generate fractals as expected. For example this fractal :-<br>
  <code>z = z**2 + c</code>    Where <code>c</code> is equal to
  <code>c = complex(-0.1, 0.651)</code>
  It is supposed to look like this
  <img src="https://i.stack.imgur.com/bjzU7.png" alt="From Wikipedia"></p>
  
  <p>But it looks like this<br>
  <img src="https://i.stack.imgur.com/rzbq4.jpg" alt="Generated by the program"></p>
  
  <p>What is wrong in my code? Also I am unable to make a zooming mechanism... Some help there would be appreciated.</p>