Heute lernte ich in der Schule einiges über das Sierpinski-Dreieck. Danach hatten wir einen "Sierpinski-Dreiecks-Generator" mit Visual Basic geschrieben. Das hatte mir dann nicht besonders gefallen, also habe ich das Skript in Python neu geschrieben und noch etwas optimiert. Ist zwar nicht viel und ich wüsste nicht, wem es etwas nutzen könnte, trotzdem poste ich es mal (das Unterforum heisst ja nicht umsonst "Codesnippets").


Code: Alles auswählen
#!/usr/bin/env python
#-*- coding: utf-8 -*-
import Image
import ImageDraw
import random
import sys
# Gegebene Daten
groesse = (800, 800)
image = Image.new("1", groesse, color=255)
data = ((0,image.size[1]),
(image.size[0],image.size[1]),
(image.size[0]/2, 0)
)
x, y = (0.4 * image.size[0], 0.8 * image.size[1])
math = ['x, y = (x/2, (image.size[1] + y)/2)',
'x, y = (((image.size[0]/2)+x)/2, y/2)',
'x, y = ((image.size[0]+x)/2, (image.size[1]+y)/2)']
anzahl = 10000
draw = ImageDraw.Draw(image)
def dreieck(image):
draw.line((data[0], data[1]),fill=0)
draw.line((data[1], data[2]),fill=0)
draw.line((data[0], data[2]),fill=0)
return True
def punkte(image):
draw.point((x,y), fill=0)
for i in range(anzahl):
b = random.randrange(0,3)
exec math[b]
draw.point((x,y), fill=0)
dreieck(image)
punkte(image)
image.show()