fractal
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revisionLast revisionBoth sides next revision | ||
fractal [2011/04/12 23:10] – created cedric | fractal [2011/04/12 23:47] – cedric | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Fractal landscape ====== | ||
+ | Surface generated using a stochastic algorithm was my speciality when I studied fractals. | ||
+ | |||
+ | A rapport and a presentation about landscape fractals (in french). | ||
+ | {{: | ||
+ | {{: | ||
+ | |||
+ | |||
+ | ====== Iterated function system ====== | ||
+ | |||
+ | In mathematics, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | You can download the source code above: hg clone [[https:// | ||
<code ocaml> | <code ocaml> | ||
#load " | #load " | ||
Line 125: | Line 140: | ||
{pb= 0.75; kf= [|0.167; 0.287; -0.287; 0.167; 0.5; 0.287|]}; | {pb= 0.75; kf= [|0.167; 0.287; -0.287; 0.167; 0.5; 0.287|]}; | ||
{pb= 1.0; kf= [|0.333; 0.0; 0.0; 0.333; 0.667; 0.0|]}]};; | {pb= 1.0; kf= [|0.333; 0.0; 0.0; 0.333; 0.667; 0.0|]}]};; | ||
+ | </ | ||
+ | |||
+ | ====== 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 = 2200, 2000 | ||
+ | #w ,h = 2560, 2400 | ||
+ | |||
+ | class Mandelbrot(object): | ||
+ | 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, | ||
+ | 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() | ||
</ | </ |