Примеры фигур Turtle на Python


Давайте научимся рисовать при помощи Turtle - здесь вы можете потренироваться на интерактивном демо-тренажёре, а также получить кучу примеров простых и сложных фигур.

Основы рисования на Python

Важно

Перед началом работы обязательно изучите главу Turtle.

Те же фигуры (квадрат, домик, снежинка) в браузереp5.js или SVG — рисунки кодом.

Для окон, кнопок и форм (Turtle использует Tkinter как бэкенд) — Tkinter и GUI и галерея окон и виджетов с разбором.

Для веб-интерфейса в браузере — React — компоненты-рецепты, Vue и Svelte — готовые компоненты.

Для мобильного UI на Dart — Flutter и готовые виджеты с разбором.

Для работы с файлами и текстом — Python — работа с файлами и текстом.

Для 2D-игр — Pygame и мини-игры на Pygame с разбором кода.

Для трёхмерной графики — Panda3D и примеры фигур Panda3D.

Для задач ЕГЭ и олимпиадалгоритмы на Python или шаблоны C++.


Обязательные элементы

Не забудьте, что базовая программа с turtle должна содержать следующий шаблон:


import turtle # импорт модуля

t = turtle.Turtle() # создание черепашки как экземпляра класса


turtle.done() # чтобы окно не закрылось сразу

Стартовые фигуры

Квадрат

image.png


Равносторонний треугольник

image-1.png


import turtle

t = turtle.Turtle()

for i in range(3):
    t.forward(100)
    t.left(120)

turtle.done()

Домик

image-2.png


Простой красный цветок

image-3.png


Цветок из кругов

image-4.png


Простая снежинка

image-5.png


Многослойный цветок

image-6.png


Фрактальное дерево с рекурсией

image-7.png


Сердце

image-8.png


Квадрат из точек

image-19.png


Шахматная сетка из точек

image-20.png


Сетка квадратов

image-21.png


Примеры фигур

1. Базовые многоугольники

1.1. Равносторонний треугольник

image-1.png


1.2. Прямоугольник (включая квадрат как частный случай)

image-9.png


1.3. Правильный n-угольник

image-10.png

Обобщённая функция. Поддерживает вписанные и описанные окружности как опции.

Примечание. При mode='radius' фигура центрируется относительно начала координат (0, 0), что удобно для композиций.


2. Звёздчатые и составные фигуры

2.1. Звезда с n лучами (школьный вариант: "звезда без самопересечений" — неверно; здесь реализуется классическая звезда Шлефли)

image-11.png

Примеры вызова:

draw_star(5, 100)       # Пентаграмма
draw_star(7, 120, 2)    # Гептаграмма {7/2}
draw_star(8, 100, 3)    # Октаграмма {8/3}

2.2. Снежинка Коха (итеративная реализация для устойчивости при глубине > 5)

См. часть 2 (фракталы). Здесь — заготовка.


3. Цветочные и радиальные узоры

3.1. Простой цветок из окружностей

image-12.png


3.2. Цветок с лепестками-дугами ("роза")

image-13.png

Параметр 60 определяет "остроту" лепестка: при <60 — заострённые, при >60 — раскрытые.


4. 3D-иллюзии (изометрические проекции)

Важно: turtle не поддерживает 3D-рендеринг. Приводятся алгоритмы изометрической проекции — 2D-отображение 3D-структур.


4.1. Изометрический куб

image-14.png


4.2. Изометрическая пирамида (тетраэдр)

image-15.png


5. Фракталы

5.1. Дерево Пифагора (итеративная реализация через стек)

image-16.png

Рекурсивная версия может вызвать переполнение стека при depth > 8. Итеративная позволяет контролировать память.


5.2. Снежинка Коха (итеративный генератор строк Л-системы)


6. Параметрические кривые

6.1. Спираль Архимеда

image-17.png


6.2. Полярная роза

image-18.png

  • При k чётном — 2k лепестков, при нечётном — k.

7. Динамические композиции и анимации (без time.sleep, через ontimer)

Все примеры в этом разделе используют turtle.ontimer — корректный путь для анимации в Turtle без блокировки интерфейса.


7.1. Анимированная спираль с плавным изменением параметров

Параметр b_step < 0 создаёт "схлопывающуюся" спираль. При b_step > 0 — расширяющуюся до выхода за границы.


7.2. Вращающийся цветок (симуляция вращения через смещение фазы)


8. Сложные фракталы (глубина ≥ 6, оптимизированные)

8.1. Кривая дракона (итеративная, без рекурсии, через битовую последовательность)

Сложность: O(2ⁿ) по времени, O(1) по памяти. Поддерживает iterations ≤ 16 на обычном ПК (при length = 3).


8.2. Треугольник Серпинского через итеративный метод "хаотических игр"

Требует import random. При points ≥ 10⁴ чётко проявляется структура. Цвет и размер точек параметризуемы.


9. Геометрические узоры (орнаменты, паркеты, замощения)

9.1. Замощение плоскости шестиугольниками ("улей")


9.2. Орнамент "греческий ключ" (меандр), параметризуемый

При turns = 4 получается классический зигзагообразный орнамент. При turns = 6 — шестиугольный меандр.


10. Фигуры с динамической толщиной и цветом (градиенты, имитация тени)

10.1. Дуга с градиентной заливкой (аппроксимация через многоугольник)

Требует turtle.colormode(255) в основном коде. Используется для визуализации секторов, радарных диаграмм, эффектов свечения.


10.2. Симуляция объёма: круг с радиальным градиентом ("сфера")

Работает медленно при layers > 80, но визуально убедительно. Можно использовать screen.tracer(0) + screen.update() для ускорения.


11. Переиспользуемые базы

11.1. Шаблон для экспериментов: изолированное окно с настройками

Рекомендуется использовать во всех экспериментах. Позволяет избежать побочных эффектов от предыдущих сессий.


11.2. Сброс среды (чистый холст + параметры по умолчанию)

def reset_environment():
    turtle.clearscreen()
    turtle.colormode(255)
    turtle.tracer(0)
    turtle.delay(0)