Ich muss bis nächste Woche ein Programm schreiben mit dem man eine Sierpinski Kurve zeichnen kann. Nur leider ist es so schwer dass ichs einfach nicht hin bekomme. Ich hab unter Wikipedia (http://de.wikipedia.org/wiki/Sierpi%C5%84ski-Kurve) nach geschaut wie das ganze funktionieren soll. Dort is auch schon ein Beispiel in Java geschrieben.
Also hoffentlich könnt ihr mir helfen.
Bis jetzt hab ich nur dass zusammengebracht:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import Image
import ImageDraw
import random
import sys
class SierpinskiKurve:
global dist0
dist0 = 128
global dist
dist = 128
bild = "Kurve.pdf"
groesse = (800, 800)
global image
image = Image.new("1", groesse, color=255)
level = 3
def lineRel(deltaX, deltaY):
zahler = 0
if zahler == 0:
xx = 2 * dist
yy = dist
zahler = 1
x = 2 * dist
y = dist
draw = ImageDraw.Draw(image)
draw.line ( (x, y) , x + deltaX, y + deltaY )
xx += deltaX
yy += deltaY
def sierpA (level):
if (level > 0):
sierpA(level-1)
lineRel(+dist,+dist)
sierpB(level-1)
lineRel(+2*dist,0)
sierpD(level-1)
lineRel(+dist,-dist)
sierpA(level-1)
def sierpB (level):
if (level > 0):
sierpB(level-1)
lineRel(-dist,+dist)
sierpC(level-1)
lineRel(0,+2*dist)
sierpA(level-1)
lineRel(+dist,+dist)
sierpB(level-1)
def sierpC (level):
if (level > 0):
sierpC(level-1)
lineRel(-dist,-dist)
sierpD(level-1)
lineRel(-2*dist,0)
sierpB(level-1)
lineRel(-dist,+dist)
sierpC(level-1)
def sierpD (level):
if (level > 0):
sierpD(level-1)
lineRel(+dist,-dist)
sierpA(level-1)
lineRel(0,-2*dist)
sierpC(level-1)
lineRel(-dist,-dist)
sierpD(level-1)
dist = dist0
for i in range(0,level):
dist /= 2
sierpA(level)
lineRel(+dist,+dist)
sierpB(level)
lineRel(-dist,+dist)
sierpC(level)
lineRel(-dist,-dist)
sierpD(level)
lineRel(+dist,-dist)
image.save(bild)
print 'saved as: %s' % bild
sg.show()
bild = SierpinskiKurve()
Edit (Leonidas): Nikolas hat recht - Thread verschoben.