Сайт Алексея Озерицкого

Искусственный интеллект, суперкомпьютерные системы, параллельные вычисления, численные методы, алгоритмы

Fractal

  1. Сборка
  2. Язык описания фракталов
  3. Примеры фракталов
  4. Лицензия

Эта программа создана по мотивам Fractint и предназначена для построения фракталов с помощью черепашьей графики:

No-touch     Fern

Скачать fractal-2013-12-08.tar.bz2 (42 Кб)

Скачать описание языка построения фракталов в форме Бекуса-Наура (3,24 Кб)
Скачать файл с примерами фракталов (10 Кб)

Сборка

Для сборки Fractal необходимо установить пакет cmake.

Выполните следующие команды:

tar xvf fractal-xxxx-xx-xx.tar.gz
cd fractal-xxxx-xx-xx
cmake -DCMAKE_BUILD_TYPE=Release
make

Также возможна сборка в cmake и в Windows:

cmake -G "Visual Studio 10 Win64"

Язык описания фракталов

Синтаксис:

имя_фрактала { описание фрактала }

Параметры описания:

alpha Начальный угол. Если не задан — считается равным нулю.
theta Задает угол смещения в радианах.
angle Задает угол смещения в градусах.
axiom Задает аксиому.
+ или - Увеличить или уменьшить угол на theta радиан.
! Инвертировать значения + или -.
[ и ] Начало и конец ветви.
F или D Рисовать вперед на шаг.
G или M Пройти на шаг вперед без рисования.
CЧИСЛО* Задает текущий цвет равный ЧИСЛУ.
>ЧИСЛО* Увеличивает текущий цвет на ЧИСЛО.
<ЧИСЛО* Уменьшает текущий цвет на ЧИСЛО.
| Увеличивает угол на 180°.
\ЧИСЛО* Увеличивает угол на ЧИСЛО градусов.
/ЧИСЛО* Уменьшает угол на ЧИСЛО градусов.
@ЧИСЛО* Умножает текущий шаг на ЧИСЛО.
@qЧИСЛО* Умножает текущий шаг на квадратный корень из ЧИСЛА.
@IЧИСЛО* Умножает текущий шаг на 1/ЧИСЛО.
@IqЧИСЛО или @qIЧИСЛО* Умножает текущий шаг на квадратный корень из 1/ЧИСЛО.
; Комментарий до конца строки.
; order ЧИСЛО* Задать порядок текущего фрактала равным ЧИСЛУ.

* Допустимо указывать только целые числа.

Любые другие символы, не указанные в таблице, могут быть использованы как имена переменных. Имя переменной может состоять только из одного символа!

В одном файле может быть описано сразу несколько фракталов. При генерации изображений создаются файлы с названиями вида имя_фрактала.png.

Пример описания фрактала

Koch2 { ; Adrian Mariano
; from The Fractal Geometry of Nature by Mandelbrot
  Angle 12
  Axiom F---F---F---F
  F=-F+++F---F+
  }

Koch3 { ; Adrian Mariano
; from The Fractal Geometry of Nature by Mandelbrot
  Angle 4
  Axiom F-F-F-F
  F=F-F+F+FF-F-F+F
  }

Изображения генерируются с помощью этой команды:

../bin/lsystem.exe -l 5 < scripts/snoopy.ls

Примеры фракталов

astral-1 astral-2 citric-circles fractal-rose gothic-outline grown-feather grown-fern grown-fern-star grown-grass grown-lawn grown-maple koch-fireworks koch-levitation koch-star-ring mandelbrot-set no-touch-basic no-touch-double no-touch-full no-touch-inside no-touch-insight penta-spread penta-thesis rip-around seahorse shaded-paper sierp-square sierp-trigon-1 sierp-trigon-2 sierp-trigon-3 sign snowflake-1 snowflake-2 snowflake-3 snowflake-4 twelve-stones