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
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")
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")