Example #1
0
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
Example #2
0
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
Example #3
0
def polycircle(n=12):
    t = Turtle('polycircle')

    for x in xrange(n):
        t.polygon(n, 20)
        t.left(360/n)
    t.save()
Example #4
0
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()
Example #5
0
File: kvet.py Project: durcak/v122
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()
Example #6
0
File: kvet.py Project: durcak/v122
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()
Example #7
0
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)