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 |
|