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()
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 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 import math turtl = Turtle('sierpinsky') def sierpinsky(side, level): if level == 0: for a in [1,2,3]: turtl.forward(side) turtl.left(120) else: sierpinsky(side / 2, level - 1) turtl.forward(side/2) sierpinsky(side / 2, level - 1) for d in [side/2, side, side/2]: turtl.forward(d) turtl.left(120) sierpinsky(side / 2, level - 1) turtl.right(120) turtl.forward(side/2) turtl.left(120) turtl.left(90) sierpinsky(800, 5) turtl.save()
for i in xrange(n): draw.forward(a) draw.right(angle) draw.penUp() if __name__ == "__main__": draw = Turtle("test_pictures") draw.penUp() draw.setCoord(-50, -50) draw.forward(100) draw.right(90) draw.forward(50) draw.left(90) regularPolygon(draw, 100, 5) draw.resetDir() draw.right(36) star(draw, 100 * (sin(108 / 360. * 2 * pi) / sin(36 / 360. * 2 * pi)), 5) draw.resetDir() draw.forward(300) verticies = regularPolygon(draw, 100, 5) for i, vortex in enumerate(verticies[:3]): draw.addLine(vortex, verticies[(i + 2) % len(verticies)]) draw.addLine(vortex, verticies[(i + 3) % len(verticies)]) draw.setCoord(235, 50)