pátek 5. prosince 2008

Fraktál

Vygenerujte si „jednoduchý“ fraktál v Pythonu. Skript i výsledek je přiložen.
#!/usr/bin/env python

import Image,ImageDraw

def koch(iter, lines = [((10, 400), (990, 400))]):
for i in xrange(0, iter):
lines_old = lines
lines = []
for line in lines_old:
a1 = line[0][0]
a2 = line[0][1]
b1 = line[1][0]
b2 = line[1][1]
d1 = a1 + (b1 - a1) / 3
d2 = a2 + (b2 - a2) / 3
e1 = a1 + (2 * (b1 - a1)) / 3
e2 = a2 + (2 * (b2 - a2)) / 3
c1 = (a1 + b1) / 2 + (b2 - a2) / 3
c2 = (a2 + b2) / 2 - (b1 - a1) / 3
lines.append(((a1, a2), (d1, d2)))
lines.append(((d1, d2), (c1, c2)))
lines.append(((c1, c2), (e1, e2)))
lines.append(((e1, e2), (b1, b2)))
return lines

def pil_render_lines(lines,height=500,width=1000,fname="img.png"):
img = Image.new("RGB",(width,height),(255,255,255))
draw = ImageDraw.Draw(img)
for line in lines:
draw.line(line,(0,0,0))
img.save(fname,"PNG")

pil_render_lines(koch(5))


Žádné komentáře: