Снежинка Коха
Классический фрактал, построенный из кривых Коха. Три кривые соединяются в форме треугольника и образуют снежинку.
Разбор
Перемещаем черепаху в начальную позицию и запускаем построение снежинки с глубиной 4 и стороной 180:
использовать Черепаха
алг
нач
поднять хвост
влево(90)
назад(150)
вправо(90)
опустить хвост
снежинка(4, 180.0)
кон
Алгоритм снежинка рисует три кривые Коха, поворачивая после каждой на $120°$. Вместе они образуют замкнутый треугольник:
алг снежинка(цел order, вещ side)
нач
цел i
нц для i от 0 до 2
кох(order, side)
влево(120)
кц
кон
Алгоритм кох строит одну кривую Коха рекурсивно. Базовый случай ($n = 0$) --- просто прямая линия. На каждом уровне рекурсии отрезок делится на три части, а средняя заменяется «треугольным выступом»:
- Рисуем первую треть.
- Поворачиваем на $60°$ вправо и рисуем вторую треть (подъём).
- Поворачиваем на $120°$ влево и рисуем третью треть (спуск).
- Поворачиваем на $60°$ вправо и рисуем последнюю треть.
алг кох(цел n, вещ len)
нач
если n = 0 то
опустить хвост
вперед(len)
иначе
кох(n - 1, len / 3.0)
вправо(60)
кох(n - 1, len / 3.0)
влево(120)
кох(n - 1, len / 3.0)
вправо(60)
кох(n - 1, len / 3.0)
все
кон
На каждом уровне длина отрезка делится на 3, а количество отрезков умножается на 4. Поэтому периметр на каждом шаге увеличивается в $4/3$ раза и при бесконечной глубине стремится к бесконечности, тогда как площадь остаётся конечной.
Полная программа
использовать Черепаха
алг
нач
поднять хвост
влево(90)
назад(150)
вправо(90)
опустить хвост
снежинка(4, 180.0)
кон
алг снежинка(цел order, вещ side)
нач
цел i
нц для i от 0 до 2
кох(order, side)
влево(120)
кц
кон
алг кох(цел n, вещ len)
нач
если n = 0 то
опустить хвост
вперед(len)
иначе
кох(n - 1, len / 3.0)
вправо(60)
кох(n - 1, len / 3.0)
влево(120)
кох(n - 1, len / 3.0)
вправо(60)
кох(n - 1, len / 3.0)
все
кон