Advertisement
Guest User

vicsek

a guest
Feb 29th, 2012
1,557
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.31 KB | None | 0 0
  1. from Tkinter import *
  2. from functools import partial
  3.  
  4. def onCanvasClick(event,canvas,i):
  5.     if i>4:
  6.         canvas.create_rectangle(0,0,729,729, outline='black', fill='black')
  7.         canvas.bind('<ButtonPress>', partial(onCanvasClick,canvas=canvas,i=0))
  8.     else:
  9.         vicsek(0,0,729,729,canvas,i+1)
  10.         canvas.bind('<ButtonPress>', partial(onCanvasClick,canvas=canvas,i=i+1))
  11. def vicsek(x1,y1,x2,y2,canvas,i):
  12.     if i>0 :
  13.         lx1=x1 + (x2-x1)/3
  14.         lx2=x1 + 2*(x2-x1)/3
  15.         ly1=y1 + (y2-y1)/3
  16.         ly2=y1 + 2*(y2-y1)/3
  17.         canvas.create_rectangle(x1,y1,lx1,ly1, outline='white', fill='white')
  18.         canvas.create_rectangle(lx2,y1,x2,ly1, outline='white', fill='white')
  19.         canvas.create_rectangle(x1,ly2,lx1,y2, outline='white', fill='white')
  20.         canvas.create_rectangle(lx2,ly2,x2,y2, outline='white', fill='white')
  21.         vicsek(lx1,y1,lx2,ly1,canvas,i-1)
  22.         vicsek(x1,ly1,lx1,ly2,canvas,i-1)
  23.         vicsek(lx1,ly1,lx2,ly2,canvas,i-1)
  24.         vicsek(lx2,ly1,x2,ly2,canvas,i-1)
  25.         vicsek(lx1,ly2,lx2,y2,canvas,i-1)
  26.  
  27. window = Tk()
  28. window.title('Vicsek Fractal')
  29. canvas = Canvas(window, width=729, height=729,bg='black')
  30. canvas.pack()
  31. i=0
  32. vicsek(0,0,729,729,canvas,0)
  33. canvas.bind("<ButtonPress>", partial(onCanvasClick,canvas=canvas,i=i))
  34. window.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement