algorithm.py
author Eugen Sawin <sawine@me73.com>
Sun, 13 Jun 2010 00:18:09 +0200
changeset 0 a99535269d60
child 1 0ebb73fd094a
permissions -rw-r--r--
Initial.
sawine@0
     1
def isDivergent(f):
sawine@0
     2
	if f == float("inf") or f == float("-inf"):
sawine@0
     3
		return True
sawine@0
     4
	return False
sawine@0
     5
sawine@0
     6
class Cell(object):
sawine@0
     7
	def __init__(self, c, value, iterations):
sawine@0
     8
		self.c = c
sawine@0
     9
		self.value = value
sawine@0
    10
		self.iterations = iterations
sawine@0
    11
		
sawine@0
    12
class Mandelbrot(object):
sawine@0
    13
	def __init__(self, range, resolution):
sawine@0
    14
		self.range = range
sawine@0
    15
		self.resolution = resolution
sawine@0
    16
	def iterate(self, z, c):
sawine@0
    17
		return z * z + c
sawine@0
    18
	def test(self, c, max_iter):
sawine@0
    19
		z = [0]
sawine@0
    20
		for i in xrange(max_iter):
sawine@0
    21
			z.append(self.iterate(z[-1], c))
sawine@0
    22
			if isDivergent(z[-1].real) or isDivergent(z[-1].imag):
sawine@0
    23
				break
sawine@0
    24
		return z
sawine@0
    25
		
sawine@0
    26
	def resolve(self, max_iter):
sawine@0
    27
		cells = {}
sawine@0
    28
		x_diff = (self.range[1].real - self.range[0].real) / self.resolution[0]
sawine@0
    29
		y_diff = (self.range[1].imag - self.range[0].imag) / self.resolution[1]
sawine@0
    30
		c_diff = complex(x_diff, y_diff)
sawine@0
    31
		
sawine@0
    32
		for y in xrange(self.resolution[1]):
sawine@0
    33
			for x in xrange(self.resolution[0]):	
sawine@0
    34
				c = self.range[0] + c_diff * complex(x, y)
sawine@0
    35
				print c
sawine@0
    36
				print self.test(c, max_iter)
sawine@0
    37
					
sawine@0
    38
	
sawine@0
    39