def interpret_Lsytem2(path, forward=7, angle=60, filename=''): # goes through the path and draws turtle = Turtle(filename) turtle.left(90) states = [] instr = { 'A' : ['forward', forward], 'F' : ['forward', forward], 'B' : ['forward', forward], 'x' : ['forward', 0], 'y' : ['forward', 0], '-' : ['left', angle], '+' : ['right', angle]} for step in path: if step == '[': states.append(turtle.serialize()) elif step == ']': #state = states.pop() turtle.deserialize(states.pop()) else: getattr(turtle, instr[step][0])( instr[step][1]) if filename: turtle.save() return
def interpret_Lsytem(path, forward=7, angle=60, filename='', ignore = None): """ @param turtle The turtle to guide @param dist Distance to be made with each 'forward' @param angle Angle for 'left' and 'right' """ turtle = Turtle(filename) turtle.left(180) if ignore == None: ignore = [] stack = [] for c in path: if c == '+': turtle.right(angle) elif c == '-': turtle.left(angle) elif c == '[': stack.append(turtle.serialize()) elif c == ']': turtle.deserialize(stack.pop()) elif c not in ignore: turtle.forward(forward) if filename: turtle.save() return
def polycircle(n=12): t = Turtle('polycircle') for x in xrange(n): t.polygon(n, 20) t.left(360/n) t.save()
def triangles(side=100, step=20, n=10): t = Turtle('triangles') d = 300 for i in xrange(n): side += (3*step) t.polygon(3, side) t.right(120) t.pen_up() t.forward(step) t.left(120) t.back(step) t.pen_down() t.save()
def squares(max_levels = 15): t = Turtle('squares') d = 300 for i in range(max_levels): for i in range(4): t.forward(d) t.right(90) t.forward(d/4) t.right(90/5) d = sqrt((d/4)**2 + (d - d/4)**2) t.save()
from Turtle import Turtle import math turtle = Turtle('kvet') def step(dist, depth): if depth == 0: return turtle.forward(dist) turtle.left(45) step(2 * dist // 3, depth - 1) turtle.right(90) step(2 * dist // 3, depth - 1) turtle.left(45) turtle.pen_up() turtle.back(dist) turtle.pen_down() turtle.left(180) step(100, 7) turtle.save()
from Turtle import Turtle turtl = Turtle('c_hilbert') def step(angle=90, dist=10, level=5): if level == 0: return turtl.right(angle) step(-angle, dist, level - 1) turtl.forward(dist) turtl.left(angle) step(angle, dist, level - 1) turtl.forward(dist) step(angle, dist, level - 1) turtl.left(angle) turtl.forward(dist) step(-angle, dist, level - 1) turtl.right(angle) step(90, 15, 5) turtl.save()
from Turtle import Turtle turtl = Turtle('c_hilbert') def step(angle = 90, dist = 10, level = 5): if level == 0: return turtl.right(angle) step(-angle, dist, level - 1) turtl.forward(dist) turtl.left(angle) step(angle, dist, level - 1) turtl.forward(dist) step(angle, dist, level - 1) turtl.left(angle) turtl.forward(dist) step(-angle, dist, level - 1) turtl.right(angle) step(90,15, 5) turtl.save()
from Turtle import Turtle import math turtle = Turtle('kvet') def step(dist, depth): if depth == 0: return turtle.forward(dist) turtle.left(45) step(2*dist//3, depth - 1) turtle.right(90) step(2*dist//3, depth - 1) turtle.left(45) turtle.pen_up() turtle.back(dist) turtle.pen_down() turtle.left(180) step(100, 7) turtle.save()