Загрузил gora1222

Домашнее задание: L-системы и фракталы в Ultra Fractal

Домашнее задание №1
Модели и программная реализация построения фракталов
Часть 1.
В первой части задания необходимо реализовать алгоритм построения
самоподобных фракталов на основе L-систем. Для заданной формулы (которая
состоит из аксиомы, порождающего правила, начального угла, угла поворота,
количества шагов) написать на любом языке программирования (Python,
C++,…) программу, которая строила бы заданный комплект L-систем. Список
фракталов для реализации определяется вариантом.
В целях самопроверки рекомендуется визуализировать тот же перечень
фракталов в ПО «MKokh» (дистрибутив можно скачать со страницы курса на
учебном портале).
1. Дракон Хартера-Хайвея
аксиома: FX
новое правило: F
новое значение X: X + YF +
новое значение Y: – FX – Y
количество шагов построения: 17
начальный угол ():
XY угол ():
13

24
1

2
2. Ковер Серпинского
аксиома: FXF– – FF – – FF
новое правило: FF
новое значение X: – – FXF + + FXF + + FXF – –
количество шагов построения: 17
начальный угол (): 0
XY угол ():
1

3
3. Кривая Гильберта, заполняющая плоскость
аксиома: X
новое правило: F
новое значение X: – YF + XFX + FY –
новое значение Y: + XF – YFY – FX +
количество шагов построения: 6
начальный угол (): 0
XY угол ():
1

2
4. Кривая Госпера, заполняющая плоскость
аксиома: XF
новое правило: F
новое значение X: X + YF + + YF – FX – – FXFX – YF +
новое значение Y: – FX + YFYF + + YF + FX – – FX – Y
количество шагов построения: 6
начальный угол (): 0
1
XY угол (): 
3
5. Кривая Серпинского, заполняющая плоскость
аксиома: F
новое правило: F – F + F + F +F – F – F – F + F
количество шагов построения: 6
1
начальный угол (): 
4
1
XY угол (): 
2
6. Куст
аксиома: F
новое правило: – F + F + [ + F – F – ] – [ – F + F + F ]
количество шагов построения: 6
начальный угол (): 0
1
XY угол (): 
8
7. Мозаика Хагерти
аксиома: F – F – F – F
новое правило: F – B + F – F – F – FB – F + B – F + F + F + FB + FF
новое значение B: BBBB
количество шагов построения: 2
начальный угол (): 0
1
XY угол (): 
2
8. Остров
аксиома: F – F – F – F
новое правило: F + F – F – FFF + F +F – F
количество шагов построения: 2
начальный угол (): 0
1
XY угол (): 
2
9. Снежинка
аксиома: [ F ] + [ F ] + [ F ] + [ F ] + [ F ] + [ F ]
новое правило: F [ + + F ] [ – F F ] F F [ + F ] [ – F ] F F
количество шагов построения: 3
начальный угол (): 0
1
XY угол (): 
3
10. Снежинка Коха
аксиома: F + + F + + F
новое правило: F – F + + F – F
количество шагов построения: 2
начальный угол (): 0
1
XY угол (): 
3
11. Кривая Пеано
аксиома: F
новое правило: F – F + F + F + F – F – F – F + F
количество шагов построения: 2
начальный угол (): 0
1
XY угол (): 
3
12. Сорняк
аксиома: F
новое правило: F [ + F ] F [ – F ] F
количество шагов построения: 3
начальный угол (): 3 
2
1
XY угол (): 
7
13. Цветок
аксиома: F [ + F + F ] [ – F – F ] [ + + F ] [ – – F ] F
новое правило: F F [ + + F ] [ + F ] [ F ] [ – F ] [ – – F ]
количество шагов построения: 2
начальный угол (): 3 
2
1
XY угол (): 
16
14. Цепочка
аксиома: F+F+F+F
новое правило: F+B-F-FFF+F+B-F
новое значение B: BBB
количество шагов построения: 3
начальный угол (): 0
XY угол ():
1

2
Часть 2.
Во второй части задания необходимо запрограммировать формулу фрактала
из вариантов ниже, с помощью макроязыка программы «Ultra Fractal».
Формула фрактала дана в математическом виде, дано описание всех
параметров формулы и приведены начальные значения всех параметров.
Задано условие окончания построения фрактала.
Фрактал №1
формула:
a  z apwr C
za
zprw
C
переменные:
z
начальное значение переменной:
z = 0
параметры:
С = #pixel – предопределенная переменная, возвращающая комплексные
координаты пикселя, обрабатываемого в данный момент.
apwr – параметр, определяющий степень, в которую возводится z.
Значение по умолчанию = 3.
zpwr – параметр, определяющий степень, в которую возводится a.
Значение по умолчанию = 2.
bailout – параметр, задающий условие окончания построения и
ограничивающий главную переменную определенным значением. Значение по
умолчанию = 4.
условие окончания вычислений: | z |  @bailout
Фрактал №2
формула:
zz
(z4 * C  z  C)
4 * z3 * C
переменные:
z
начальное значение переменной:
z = #pixel
параметры:
z – предопределенная переменная, являющаяся основной переменной в
формуле любого фрактала. Формула фрактала должна быть построена таким
образом, что значение этой переменной должно изменяться на каждой
итерации.
#pixel – предопределенная переменная, возвращающая комплексные
координаты пикселя, обрабатываемого в данный момент.
bailout – параметр, задающий условие окончания построения и
ограничивающий главную переменную определенным значением. Значение по
умолчанию = 4.
условие окончания вычислений:
| z |  4
Фрактал №3
формула:
z  z Exponent  ZCoeff * z  seed
переменные:
z, Seed, Zcoef, Exponent
начальное значение переменной:
z = #pixel
Seed = (0, 0)
Zcoef = (1, 0)
Exponent = 2 (min =2, max = 10)
параметры:
z – предопределенная переменная, являющаяся основной переменной в
формуле любого фрактала. Формула фрактала должна быть построена таким
образом, что значение этой переменной должно изменяться на каждой
итерации.
#pixel – предопределенная переменная, возвращающая комплексные
координаты пикселя, обрабатываемого в данный момент.
ZСoeff – комплексный коэффициент при переменой z. Может изменяться
пользователем.
Seed – комплексная свободная переменная. Может изменяться
пользователем.
bailout – параметр, задающий условие окончания построения и
ограничивающий главную переменную определенным значением. Значение по
умолчанию = 4.
описание построения:
Вычисления производятся циклически, начиная с произвольной точки z=С.
Значение z вычисляется рекуррентно. Процесс является итерационным и
продолжается до тех пор, пока выполняется ограничение на z.
условие окончания вычислений:
| z |  @bailout
Фрактал №4
формула:
fz  coeff 1* z power1  coeff 2 * z power2  1
f 1z  coeff 1* power1* z power11  coeff 2 * power 2 * z power2 1
f 2 z  coeff 1* power1* ( power1  1) * z power12  coeff 2 * power 2 * ( power 2  1) * z power2 2
z  z  (2 * fz * f 1z ) /( 2 * f 1z 2  fz * f 2 z )  seed
переменные:
zold, fz, f1z, f2z
начальное значение переменной:
все начальные значения переменных = (0, 0) – все переменные
комплексные
параметры:
z – предопределенная переменная, являющаяся основной переменной в
формуле любого фрактала. Формула фрактала должна быть построена таким
образом, что значение этой переменной должно изменяться на каждой
итерации.
Seed – параметр, выступающий в формуле в качестве свободного члена.
Также он определяет форму фрактала. Значение по умолчанию – (0,0)комплексное.
Power1 – параметр, использующийся в формулах в качестве степени.
Значение по умолчанию – (4,0)
Power2 – параметр, использующийся в формулах в качестве степени.
Значение по умолчанию – (2,0)
Coeff1 – параметр, использующийся в формулах как коэффициент. Значение
по умолчанию – (1,0)
Coeff2 – параметр, использующийся в формулах как коэффициент. Значение
по умолчанию – (-2,0)
bailout – параметр задает область в которой должны находится значения
z. Значение по умолчанию – 0.00001
условие окончания вычислений: | z – zold | > @bailout
описание построения:
Вычисления производятся циклически, начиная с произвольной точки z.
Сначала вычисляются вспомогательные параметры fz, f1z, f2z через
начальное значение переменной z, а на их основе вычисляется следующее
значение переменной z. Процесс является итерационным и продолжается до
тех пор, пока выполняется ограничение на z.
Фрактал №5
формула:
newz  z power1  z power2 * seed  induct * y
yz
z  newz
переменные:
y, newz, z
начальное значение переменной:
y = (0,0)
newz = (0,0)
z = #pixel
все переменные комплексные
параметры:
z – предопределенная переменная, являющаяся основной переменной в
формуле любого фрактала. Формула фрактала должна быть построена таким
образом, что значение этой переменной должно изменяться на каждой
итерации.
Seed – параметр, выступающий в формуле в качестве коэффициента.
Определяет форму кривых. Значение по умолчанию – (0.56667,0).
Power1 – параметр, использующийся в формулах в качестве степени
(первичная экспонента). Значение по умолчанию – (2,0)
Power2 – параметр, использующийся в формулах в качестве степени
(вторичная экспонента). Значение по умолчанию – (0,0)
Induct – параметр, который определяет насколько сильно влияет предыдущая
итерация на следующую. Значение по умолчанию – (-0.5, 0).
bailout – параметр задает область в которой должны находится значения
z. Значение по умолчанию – 1.0e20
условие окончания вычислений: | z | < @bailout