Dessine des approximations de fractales définies par des L-systèmes. Couleurs disponibles : “blue”, “red”, “green”, “yellow”, “brown”, “black”, “white”, “pink”, “orange”, “purple” and “grey”.
from turtle import * def remplace(chaine,regles): return ''.join(regles[caractere] for caractere in chaine) def dessin(position=(0,0),rang=5, longueur=100,angle=0, couleur=(0,0,0), vitesse=10): reset() speed(vitesse) penup() color(couleur) goto(*position) left(angle) pendown() # Courbe du C # regles={"F":"+F-F+", # "+":"+","-":"-"} # red=0.5**.05 # longueur*=red**rang # mouvements={"F":"forward(%f)"%longueur, # "+":"left(45)", # "-":"right(90)"} # chaine="F" # Courbe de Peano # regles={"F":"F-F+F+F+F-F-F-F+F", # "+":"+","-":"-"} # red=1/3 # longueur*=red**rang # mouvements={"F":"forward(%f)"%longueur, # "+":"left(90)", # "-":"right(90)"} # chaine="F" # Courbe de Von Koch # regles={"A":"A+A-A+A", # "+":"+","-":"-"} # red=1/3 # longueur*=red**rang # chaine="A" # mouvements={"A":"forward(%f)"%longueur, # "+":"right(60)", # "-":"left(120)"} # Courbe de Sierpinski regles={"A":"B-A-B","-":"-", "B":"A+B+A","+":"+"} red=0.5 longueur*=red**rang chaine="A" mouvements={"A":"forward(%f)"%longueur, "B":"forward(%f)"%longueur, "+":"left(60)", "-":"right(60)"} # Courbe du dragon # regles={"A":"AGB","B":"CGB", # "C":"AGD","D":"CGD", # "G":"G"} # chaine="A" # red=0.5**0.5 # longueur*=red**rang # mouvements={"A":"right(90)", # "B":"right(90)", # "C":"left(90)", # "D":"left(90)", # "G":"forward(%f)"%longueur} # forward(longueur) se plaint que longueur est inexistant for _ in range(rang): chaine=remplace(chaine,regles) for mot in chaine: exec(mouvements[mot])