fractal
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
fractal [2011/04/12 23:28] – cedric | fractal [2011/04/12 23:45] – [Mandelbrot] cedric | ||
---|---|---|---|
Line 141: | Line 141: | ||
====== Mandelbrot ====== | ====== Mandelbrot ====== | ||
- | <code python> | ||
- | try: | ||
- | import Numeric as nm | ||
- | except: | ||
- | print " | ||
- | print "from --> http:// | ||
- | raise SystemExit | ||
- | import Tkinter as tk | ||
- | import Image # PIL | ||
- | import ImageTk # PIL | ||
- | # set width and height of window | ||
- | w ,h = 640, 600 | ||
- | #w ,h = 1280, 1200 | ||
- | #w ,h = 2560, 2400 | ||
- | class Mandelbrot(object): | + | {{:mandelbrot-python.png|}} |
- | def __init__(self): | + | |
- | """ | + | |
- | Create window | + | |
- | """ | + | |
- | self.root = tk.Tk() | + | |
- | self.root.title(" | + | |
- | self.create_image() | + | |
- | self.create_label() | + | |
- | # start event loop | + | |
- | self.root.mainloop() | + | |
- | + | ||
- | def draw(self, x1, x2, y1, y2, maxiter=30): | + | |
- | """ | + | |
- | Draw the Mandelbrot set. | + | |
- | """ | + | |
- | xx = nm.arange(x1, | + | |
- | yy = nm.arange(y2, y1, (y1-y2)/ | + | |
- | q = nm.ravel(xx+yy[:, | + | |
- | z = nm.zeros(q.shape, | + | |
- | output = nm.resize(nm.array(0, | + | |
- | for iter in range(maxiter): | + | |
- | z = z*z + q | + | |
- | done = nm.greater(abs(z), | + | |
- | q = nm.where(done, | + | |
- | z = nm.where(done, | + | |
- | output = nm.where(done, | + | |
- | output = (output + (256*output) + (256**2)*output) * 8 | + | |
- | # convert output to a string | + | |
- | self.mandel = output.tostring() | + | |
- | + | ||
- | def create_image(self): | + | |
- | """" | + | |
- | Create the image from the draw() string | + | |
- | """ | + | |
- | self.im = Image.new(" | + | |
- | # you can experiment with these x and y ranges | + | |
- | self.draw(-2.13, | + | |
- | self.im.fromstring(self.mandel, | + | |
- | + | ||
- | def create_label(self): | + | |
- | """ | + | |
- | Put the image on a label widget | + | |
- | """ | + | |
- | self.image = ImageTk.PhotoImage(self.im) | + | |
- | self.label = tk.Label(self.root, | + | |
- | self.label.pack() | + | |
- | + | ||
- | + | ||
- | if __name__ == ' | + | |
- | test = Mandelbrot() | + | |
- | </code | + |