Домашнее задание №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 za zprw C переменные: z начальное значение переменной: z = 0 параметры: С = #pixel – предопределенная переменная, возвращающая комплексные координаты пикселя, обрабатываемого в данный момент. apwr – параметр, определяющий степень, в которую возводится z. Значение по умолчанию = 3. zpwr – параметр, определяющий степень, в которую возводится a. Значение по умолчанию = 2. bailout – параметр, задающий условие окончания построения и ограничивающий главную переменную определенным значением. Значение по умолчанию = 4. условие окончания вычислений: | z | @bailout Фрактал №2 формула: zz (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 power11 coeff 2 * power 2 * z power2 1 f 2 z coeff 1* power1* ( power1 1) * z power12 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 yz 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