Как нарисовать фрактал в Python Turtle

Введение в фракталы

Фракталы — это удивительные математические структуры, которые обладают свойством самоподобия. Это значит, что при увеличении масштаба фрактал будет выглядеть так же, как и в исходном размере. Они встречаются в природе, например, в облаках, горах и даже в растениях. В этой статье мы рассмотрим, как создать фрактал с помощью библиотеки Turtle в Python.

Что такое Turtle?

Turtle — это графическая библиотека для Python, которая позволяет рисовать с помощью черепашки, перемещающейся по экрану. Она идеально подходит для обучения программированию и визуализации различных концепций, включая фракталы.

Установка Python и Turtle

Перед тем как начать, убедитесь, что у вас установлен Python. Вы можете скачать его с официального сайта python.org. Библиотека Turtle входит в стандартную библиотеку Python, поэтому вам не нужно устанавливать её отдельно.

Создание простого фрактала

Давайте начнем с создания простого фрактала — дерева. Мы будем использовать рекурсию для рисования ветвей дерева. Вот базовый код для начала:

import turtle

def draw_branch(branch_length):
    if branch_length > 5:
        turtle.forward(branch_length)
        turtle.right(20)
        draw_branch(branch_length - 15)
        turtle.left(40)
        draw_branch(branch_length - 15)
        turtle.right(20)
        turtle.backward(branch_length)

turtle.left(90)
turtle.up()
turtle.backward(100)
turtle.down()
turtle.color("brown")
turtle.speed(0)
draw_branch(75)
turtle.done()

Этот код создает простое дерево, используя рекурсивную функцию draw_branch. Давайте разберем его подробнее.

Как работает код

В функции draw_branch мы проверяем, если длина ветки больше 5. Если это так, мы рисуем ветку, поворачиваем черепашку вправо на 20 градусов, а затем вызываем функцию снова, уменьшая длину ветки на 15. После этого мы поворачиваем черепашку влево на 40 градусов и снова вызываем функцию для рисования другой ветки. Наконец, мы возвращаемся назад, чтобы нарисовать ветку в исходном положении.

Примечание

Обратите внимание, что рекурсия — это мощный инструмент, но её нужно использовать с осторожностью, чтобы избежать переполнения стека.

Настройка внешнего вида

Вы можете настроить внешний вид дерева, изменяя цвет и скорость рисования. Например, чтобы сделать дерево более реалистичным, можно добавить листья:

def draw_leaf():
    turtle.color("green")
    turtle.begin_fill()
    turtle.circle(5)
    turtle.end_fill()

# Внутри draw_branch добавьте вызов draw_leaf() перед возвратом
if branch_length <= 15:
    draw_leaf()

Теперь, когда длина ветки меньше или равна 15, мы будем рисовать листья. Это добавит больше жизни вашему фракталу!

Создание более сложных фракталов

Теперь, когда вы освоили основы, давайте попробуем создать более сложный фрактал — фрактал Серпинского. Это треугольный фрактал, который создается путем деления равностороннего треугольника на меньшие треугольники.

def draw_sierpinski_triangle(order, size):
    if order == 0:
        for _ in range(3):
            turtle.forward(size)
            turtle.left(120)
    else:
        draw_sierpinski_triangle(order - 1, size / 2)
        turtle.forward(size / 2)
        draw_sierpinski_triangle(order - 1, size / 2)
        turtle.backward(size / 2)
        turtle.left(60)
        turtle.forward(size / 2)
        turtle.right(60)
        draw_sierpinski_triangle(order - 1, size / 2)
        turtle.left(60)
        turtle.backward(size / 2)
        turtle.right(60)

turtle.speed(0)
turtle.penup()
turtle.goto(-200, -150)
turtle.pendown()
draw_sierpinski_triangle(3, 400)
turtle.done()

В этом коде мы используем рекурсию для рисования треугольников. Чем выше порядок, тем больше треугольников будет нарисовано.

Важно

Не забывайте, что при увеличении порядка фрактала время рисования может значительно увеличиться.

Эксперименты с фракталами

Теперь, когда вы знаете, как рисовать фракталы, вы можете экспериментировать с различными параметрами:

  • Измените углы поворота для дерева.
  • Попробуйте разные цвета для веток и листьев.
  • Измените порядок фрактала Серпинского, чтобы увидеть, как это влияет на результат.

Заключение

Создание фракталов с помощью Turtle в Python — это не только увлекательное занятие, но и отличный способ изучить основы программирования и рекурсии. Вы можете использовать эти знания для создания более сложных графических проектов и визуализаций.

Совет по улучшению

Попробуйте добавить анимацию к вашему фракталу, изменяя цвета или размеры во время рисования.

Надеюсь, эта статья вдохновила вас на создание собственных фракталов. Удачи в ваших творческих начинаниях!