sawine@0
|
1 |
import algorithm
|
sawine@0
|
2 |
|
sawine@0
|
3 |
models = {}
|
sawine@0
|
4 |
|
sawine@0
|
5 |
def createModel(name):
|
sawine@0
|
6 |
models[name] = Model(name)
|
sawine@0
|
7 |
|
sawine@0
|
8 |
def addModel(model):
|
sawine@0
|
9 |
models[model.name] = model
|
sawine@0
|
10 |
|
sawine@0
|
11 |
def deleteModel(name):
|
sawine@0
|
12 |
if name in models:
|
sawine@0
|
13 |
del models[name]
|
sawine@0
|
14 |
return True
|
sawine@0
|
15 |
return False
|
sawine@0
|
16 |
|
sawine@0
|
17 |
# event = (type,value)
|
sawine@0
|
18 |
eventTypes = ("view", "model", "server")
|
sawine@0
|
19 |
|
sawine@0
|
20 |
class Model(object):
|
sawine@0
|
21 |
def __init__(self, name):
|
sawine@0
|
22 |
self.name = name
|
sawine@0
|
23 |
self.cells = {}
|
sawine@0
|
24 |
self.observers = {}
|
sawine@0
|
25 |
for t in eventTypes:
|
sawine@0
|
26 |
self.observers[t] = []
|
sawine@0
|
27 |
self.resolution = (0,0)
|
sawine@0
|
28 |
self.range = (complex(0,0), complex(0,0))
|
sawine@0
|
29 |
def dispatch(self, event):
|
sawine@0
|
30 |
for o in self.observers:
|
sawine@0
|
31 |
o[0].sendto("%s" % (event), o[1])
|
sawine@0
|
32 |
def register(self, socket, observer, eventType):
|
sawine@0
|
33 |
self.observers[eventType].append((socket, observer))
|
sawine@0
|
34 |
def setResolution(self, x, y):
|
sawine@0
|
35 |
self.resolution = (x,y)
|
sawine@0
|
36 |
def setRange(self, begin, end):
|
sawine@0
|
37 |
self.range = (begin, end)
|
sawine@0
|
38 |
def update(self, max_iter):
|
sawine@0
|
39 |
m = algorithm.Mandelbrot(self.range, self.resolution)
|
sawine@0
|
40 |
self.cells = m.resolve(max_iter)
|
sawine@0
|
41 |
|
sawine@0
|
42 |
|