Фракталы: L-Systems

Попалась под руку книга: “Фракталы и хаос в динамических системах”. Пока только начал ее читать, но сразу же захотелось применить знания из нее. В этой книге все начинается с описание L-систем. Я уже сталкивался с ними, когда-то давно. С их помощью я хотел генерировать карту, похожую на ту, которая в игре цивилизация. Тогда мне L-системы показались очень сложными, и я оставил эту идею, сделав генерацию на основе шума Перлина. Теперь же, после этой книги, L-системы, для меня, стали очень простыми. Я проникся этим и решил попробовать написать простое рисование таких фракталов.
Вот что получилось:


Tiny L-System – wonderfl build flash online


Все свелось к простой обработке строк и черепашьей графике. Если в двух словах работа алгоритма построения L-системы работает следующем образом. У вас есть начальная аксиома – это последовательность символов, которая может быть достаточно проста, но не всегда. У вас есть список правил. Их все можно описать фразой: этот символ заменить на эту последовательность. Ну и конечно у вас есть алфавит, который вы используете и в правилах и в аксиоме. Алфавит достаточно простой и может состоять из произвольного количества букв и цифр, а так же специальных знаков. Для генерации основной последовательности важны только правила. Обычно задается количество итераций, сколько раз правила применяются на строку. Вот тут, тут или тут можно почитать про это и без книги.
Вторым шагом является рисование полученной последовательности команд с помощь “Черепашей графики“. Наша черепаха обрабатывает эти команды следующим образом: F – идти в перед и рисовать, b – идти в перед и не рисовать, ‘-‘ и ‘+’ повернуть против часовой или по часовой на заданный угол, ‘[‘ – положить в стек текущие значения координат и угол направления черепашки, ‘]’ – извлечь последние координаты черепахи и угол ее поворота.
Вот так, все просто. Единственное, что смущает почему выбрали b в качестве движения вперед без рисования. Я бы выбрал для этого букву f, мне кажется так было бы понятней. Причем в некоторых формулах присутствует B – которое означает двигаться назад с рисованием. Видимо для этого было какое-то логично объяснение.

This entry was posted in Фракталы and tagged , , . Bookmark the permalink.