Здавалка
Главная | Обратная связь

Рекурсивні алгоритми побудови графічних зображень. Фрактали



Мета роботи

Навчитися будувати за допомогою циклічних та рекурсивних алгоритмів такі складні графічні зображення, як фрактали.

Завдання

Розробити програму, яка на головному екрані монитора виводить, крім інформації про лабораторну роботу та виконавця, фрактали заданого виду (див. варіанти завдання). Програма повинна:

· виводити

· давати можливість змінювати глибину побудови та параметри базових фігур фракталів (координати модельних точок, розміри тощо).

Додаткове завдання (для всіх варіантів)

Розробити власну базову фігуру фракталу.

Варіанти завдань

Варіант 1. Фрактал побудови “рослиноподібних” зображень: дерева та “папороті” [1, c. 72-75, 178-180; 2, с. 125-129].

Варіант 2. Фрактал, базова фігура якого побудована як зовнішній контур квадратів у вигляді єдиної кривої [2, c. 148-151].            
         
         
         
         

Варіант 3. Крива Коші, основана на модельних трикутниках, направлених всередину [2, c. 155-157].

Варіант 4. Крива Коші, основана на модельних трикутниках, направлених назовні [2, c. 155-157].

Варіант 5. Фрактал Мінковського [2, c. 154-155] будується на основі базової фігури, яка визначена 7-а модельними точками для одиничного відрізку (0, 0) та (1, 0) [2, c. 151-154]. Побудувати фрактал для модельних точок (0.25, 0), (0.25, 0.25), (0.5, 0.25), (0.5, 0), (0.5, -0.25), (0.75, -0.25), (0.75, 0).

Розробити власну базову фігуру фракталу Мінковського, маючи на увазі, що найліпші результати отримуються, якщо відрізки прямих, які з’єднують модельні точки, мають однакову довжину.

Варіант 6. Фрактал, базова фігура якого основана на розміщенні квадратів-сателітів навколо основного квадрату [2, c. 141-144]. Параметри фракталу: сторона основного квадрата; коефіцієнт зменшення квадратів-сателітів відносно розміру основного квадрата; відстань сателітних квадратів від основного; параметр, що визначає, зафарбовувати квадрати чи ні (розробити власну текстуру зафарбування квадратів). Розглянути варіанти:

· фрактал на базі зафарбованих квадратів та на базі незафарбованих квадратів;

· відстань сателітних квадратів від основного дорівнює а) нулю; б) менше нуля; в) більше нуля.

                                                         
                                                         
                                                         
                                                         
                                                         
                                                         
                                                         
                                                         
                                                         
    а)                     б)                           в)  

Варіант 7. Фрактал, базова фігура якого основана на розміщенні колів-сателітів навколо основного кола [2, c. 137-140]. Параметри фракталу: радіус основного кола; кількість колів-сателітів на орбіті навколо основного кола; коефіцієнт зменшення для обчислення радіуса колів-сателітів відносно радіуса основного кола; коефіцієнт, на який зменшується радіус кола, на якому розміщуються центри колів-сателітів; параметр, що визначає, зафарбовувати кола чи ні (розробити власну текстуру зафарбування).

Розглянути варіанти (див. аналогічні приклади у варіанті 6):

· фрактал на базі зафарбованих колів та на базі незафарбованих колів;

· відстань сателітних колів від основного кола дорівнює а) нулю; б) менше нуля; в) більше нуля.

Варіант 8. Крива Гілберта [2, c. 129-133] основана на зображенні літери П, побудованої на трьох сторонах квадрата (Н1). Криві Гілберта порядків 1-го, 2-го, …, позначаються як Н1, Н2, … Н2 будується як літера П, частки якої замінені меншими за розміром літер П, що з’єднані трьома зв’язками (виділені жирним). Кожна сторона меншої літери П має таку саму довжину, що й зв’язка, – у 3 рази менше сторони квадрата, в який вписується Н2. Далі для побудови Н3 використовують дану процедуру до кожної з 4-х літер П, з яких складається Н2.

         
         
         

а) Н1 б) Н2

Варіант 9. Крива дракона [2, c. 134-137] отримується послідовною побудовою кривої, складеної з відрізків, для яких напрямок повороту кожного з них змінюється на 90º вліво або вправо в кінці кожного відрізка прямої лінії і (і = 1, 2, …). Позначимо як Т(і) – код і-го відрізка прямої, код 1 – для повороту вліво, код 3 – для повороту вправо. Тоді функцію Т можна визначити за формулою:

Т(і) = Т(і / 2) якщо і – парне;

Т(і) = і mod 4 якщо і – непарне,

де / – ділення націле, mod – залишок від ділення націле.

Наприклад, з малюнку видно, що

Т(1)=1, Т(2)=3, Т(3)=3, Т(4)=1, Т(5)=1, Т(6)=3, Т(7)=3.

       
   
   
       

Розробити також криву дракона з галтелями (з округленими кутами).

Варіант 10. Базова фігура фракталу визначена трьома модельними точками для одиничного відрізку прямої (0, 0) та (1, 0) [2, c. 151-154]. Наприклад, на рисунку наведена базова фігура з трьома модельними точками (0.45, 0), (0.5, 0,45), (0.45, 0,55). Базову фігуру фракталу використати на сторонах: а) трикутника; б) квадрата.

Варіант 11. Фрактал Мандельброта [1, c. 70-71, 169-172], що породжується циклом ітерації згідно формули:

,

де k = 0, 1, …, n. Величини zk – це комплексні числа, zk = xk + i yk, причому xk, yk – це координати зображення. Для кожної точки зображення ітерації виконувати обмежену кількість разів (n) або доти, доки | zk | £ 2. Цикл ітерацій можна виконувати в діапазоні х = (-2.2, 2) та y = (-1.2, 1.2).

Варіант 12. Фрактал Джулія [1, c. 71], що породжується циклом ітерації згідно формули:

,

де k = 0, 1, …, n. Величини zk, с – це комплексні числа, zk = xk + i yk, де xk, yk – це координати зображення. Умова завершення ітерацій | zk | > 2 – тобто така сама, як для фракталу Мандельброта.

Варіант 13. Фрактал Ньютона [1, c. 71-72], що породжується циклом ітерації згідно формули:

,

де k = 0, 1, …, n. Величини zk, с – це комплексні числа, zk = xk + i yk, де xk, yk – це координати зображення. Умова завершення ітерацій є наближення | z4 –1 | до нуля.

Контрольні питання

1. Чим відрізняються циклічні та рекурсивні алгоритми? Наведіть приклади використання циклічних та рекурсивних алгоритмів для побудови графічних зображень.

2. Що таке фрактали? Властивості фракталів. Де використовують фрактали?

3. Які є види фракталів?

4. Опишіть технологію побудови фракталів.

Література

1. Порєв В.М. Комп’ютерна графіка. – К.: “Корнійчук”, 2000. – С. 70-75, 169-172, 178-180.

2. Аммерал Л. Программирование графики на Турбо Си. Пер. с англ. – М.: «Сол Систем», 1992. – С. 121-157.

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.