Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Фракталы на основе метода IFS



Эту группу составляют фракталы, которые генерируются согласно методу "систем итеративных функций" – IFS (Iterated Functions Systems).

Данный метод может быть описан как последовательный итеративный расчет координат новых точек в пространстве:

где Fx и Fy – функции преобразования координат, например аффинного преобразования. Эти функции и определяют форму фрактала. В случае аффинного преобразования необходимо найти соответствующие числовые значения коэффициентов. Примером такого фрактала является построение изображения листа папоротника (рис. 24).

Для начала итераций необходимо задать стартовые координаты линии – точки 1 и 2. На каждом шаге итераций рассчитываются координаты других точек.

Точка ^ 3 получается поворотом точки 2 относительно центра в точкеaна угол 1:
x3=(x2-x1) acos -(y2-y1) asin +x1,
y3=(x2-x1) asin +(y2-y1) acos +y1.

=0, то ствол и все ветви прямые.aЕсли

Находим точку 4. От нее будут распространяться ветви. Пусть соотношение длин отрезков 1-4 и 1-3 равно k (0< k <1). Тогда координаты точки 4: x4=x1(1-k)+kx3, y4=y1(1-k)+ky3.

Задаем длину и угол наклона ветвей, которые выходят из точки 4.

Найдем координаты точки 5: параметр k 1 – соотношение длин отрезков 4-5 и 4-3 (0< k 1<1):

x5=x4(1-k1)+k1x3,

y5=y4(1-k1)+k1y3.

Точка 6 получается поворотом точки 5 относительно точки 4, а точкаbна угол 7):b– на угол (-

x6=(x5-x4) bcos -(y5-y4) bsin +x4;
y6=(x5-x4) bsin +(y5-y4) bcos +y4;
x7=(x5-x4) bcos +(y5-y4) bsin +x4;
y7=-(x5-x4) bsin +(y5-y4) bcos +y4.

После расчета опорных точек на каждом шаге рисуется отрезок 1-4. В зависимости от номера итерации цвет отрезка можно изменять.

,b, aТаким образом, фрактал задается как последовательность аффинных преобразований координат точек. Величины k, k 1 – это параметры, которые описывают вид фрактала в целом. Они представляют собой константы на протяжении всего итеративного процесса. Это дает возможность в итерациях использовать только операции сложения, вычитания и умножения, если вычислить заранее значения:

A= acos; B= asin; C=(1-k); D=k;
E=1-k1; F=k1; G= bcos; H= bsin.

Опишем рекурсивный алгоритм в виде процедуры ШАГ.
ШАГ(x1, y1, x2, y2, num)
Если (x1-x2)2+(y1-y2)2>lmin, то
Вычисляем координаты точек 3-7:
x3=(x2-x1)A ­- (y2-y1)B + x1
y3=(x2-x1)B + (y2-y1)A + y1
x4=x1C + x3D
y4=y1C + y3D
x5=x4E + x3F
y5=y4E + y3F
x6=(x5-x4)G - (y5-y4)H + x4
y6=(x5-x4)H + (y5-y4)G + y4
x7=(x5-x4)G + (y5-y4)H + x4
y7=-(x5-x4)H + (y5-y4)G + y4
Рисуем отрезок (x1, y1 - x4, y4)
ШАГ(x4, y4, x3, y3, num)
ШАГ(x4, y4, x6, y6, num+1)
ШАГ(x4, y4, x7, y7, num+1)

Для того чтобы нарисовать фрактал, необходимо вызвать процедуру ШАГ, установив соответствующие значения ее аргументов: ШАГ(x1,y1,x2,y2,0). Параметр num показывает степень детализации расчета дерева. Это значение можно использовать для прекращения итеративного процесса.

Завершение циклов итерации в нашем алгоритме происходит тогда, когда длина ветви становится меньше некоторой величины lmin.





Дата публикования: 2015-09-17; Прочитано: 609 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...