from math import sin, cos, pi
from random import randrange
def svg_linie_als_string(x1, y1, x2, y2, farbe, dicke):
return f''
class zeichenfenster():
def __init__(self, breite, hoehe):
self.breite = breite
self.hoehe = hoehe
self.liste_strecken = []
def strecke(self, x1, y1, x2, y2, farbe, dicke=1):
self.liste_strecken.append((x1, y1, x2, y2, farbe, dicke))
def speichere_als_svg(self, name):
with open(name, 'w') as datei:
datei.write(f'\n')
##########################################################################################################
# Bündelung der Turtle-Daten und zugehörigen Methoden in einer Klasse (objektorientiertes Programmieren) #
##########################################################################################################
class Schildkroete():
def __init__(self, x=0, y=0, alpha=0, farbe=(255, 0, 0), dicke=1, stiftunten=True):
self.x = x
self.y = y
self.alpha = -alpha
self.farbe = farbe
self.dicke = dicke
self.stiftunten = stiftunten
def vorwaerts(self, distanz):
vx = distanz*cos(self.alpha*pi/180)
vy = distanz*sin(self.alpha*pi/180)
if self.stiftunten:
fenster.strecke(self.x, self.y, self.x+vx, self.y+vy, self.farbe, self.dicke)
self.x += vx
self.y += vy
def rueckwaerts(self, distanz):
self.vorwaerts(-distanz)
def links(self, winkel):
self.alpha -= winkel
def rechts(self, winkel):
self.links(-winkel)
def stifthoch(self):
self.stiftunten = False
def stiftrunter(self):
self.stiftunten = True
def setze_farbe(self, farbe):
self.farbe = farbe
def setze_dicke(self, dicke):
self.dicke = dicke
def baum(self, tiefe, laenge):
self.setze_farbe((randrange(256), randrange(256), randrange(256)))
self.vorwaerts(laenge)
if tiefe > 0:
self.links(30)
self.baum(tiefe-1, laenge/2)
self.rechts(60)
self.baum(tiefe-1, laenge/2)
self.links(30)
self.stifthoch()
self.rueckwaerts(laenge)
self.stiftrunter()
fenster = zeichenfenster(5000, 5000)
kroete = Schildkroete(2500, 5000, 90)
kroete.setze_dicke(10)
kroete.baum(9, 2000)
fenster.speichere_als_svg("output.svg")