def chaos_game(n, iterations, r, name, random=False):
    zofka = SvgTurtle(500, 800)
    points = n_square_points(n)
    if random:
        numbers = [x-100 for x in range(200)]
        for point in points:
            point[0] += choice(numbers)
            point[1] += choice(numbers)
    for point in range(len(points)):
        zofka.line(points[point][0], points[point][1], points[point-1][0], points[point-1][1])
    for x in range(iterations):
        point = choice(points)
        t = SvgTurtle(point[0], point[1])
        position = zofka.position()
        if position[0] > point[0]:
            posx = point[0] + abs(position[0] - point[0]) * r
        else:
            posx = position[0] + abs(position[0] - point[0]) * (1-r)
        if position[1] > point[1]:
            posy = point[1] + abs(position[1] - point[1]) * r
        else:
            posy = position[1] + abs(position[1] - point[1]) * (1-r)

        zofka.set_pos(posx, posy)
        zofka.self_point()
    zofka.save(name+".svg")
def n_square_points(n):
    zofka = SvgTurtle(550, 850)
    points = []
    angle = (1 - 2 / n) * 180
    for x in range(n):
        zofka.forward(400)
        zofka.left(180 - angle)
        points.append(list(zofka.position()))
    return points
Beispiel #3
0
def pentagram_absolute():
    zofka = SvgTurtle(500, 500)
    angle = (1 - 2 / 5) * 180
    positions = []
    for x in range(5):
        zofka.forward(200)
        zofka.left(180-108)
        positions.append(zofka.position())
    for x in range(5):
        zofka.line(positions[x][0], positions[x][1], positions[x-1][0], positions[x-1][1])
    for x in range(5):
        zofka.line(positions[x][0], positions[x][1], positions[x - 2][0], positions[x - 2][1])
    zofka.save("absolute_pentragram.svg")
Beispiel #4
0
def triangles():
    zofka = SvgTurtle(500, 500)
    length = 30
    zofka.left(90)
    for x in range(15):
        positions = []
        for x in range(3):
            zofka.forward(length, write=False)
            positions.append(zofka.position())
            zofka.left(180)
            zofka.forward(length, write=False)
            zofka.right(60)
        positions.append(positions[0])
        for x in range(3):
            zofka.line(positions[x][0], positions[x][1], positions[x+1][0], positions[x+1][1])
        length += 30
    zofka.save("triangles.svg")