FRACTALS

ѕ даРЪвРЫРе
іРЫХаХп ШЧЮСаРЦХЭШЩ даРЪвРЫЮТ
їаЮУаРЬЬл ФЫп ЯЮбваЮХЭШп даРЪвРЫЮТ
БблЫЪШ ЭР ФагУШХ бРЩвл Ю даРЪвРЫРе
ЅРЯШиШ бТЮШ ТЯХзРвЫХЭШп



 
 

LOGO
Предыдущая Следующая

изображения-аттрактора с помошью IFS

Существуют два алгоритма построения фрактального изображения-аттрактора с помощью IFS. Один из них - это прямое применение теоремы о сжимающих отображениях, а другой - применение так называемой «Игры хаоса».

*і Ух 1 *2 Уг 1

*з Уз 1J

52_Фракталы и вей влеты для сжатия изображений в лейст^

2.4.3.1. Детерминистический алгоритм

Детерминистический алгоритм для построения изображен^ являющегося аттрактором IFS, напрямую применяет теоре^, о сжимающих отображениях к любому начальному изобра жению В є #(Х). Алгоритм строит последовательность щ бражений Д„, многократно применяя IFS-отображен^

(2.4.2) K^W^B)

Напомним, что отображение W, применяемое к множеству g определяется как

W(fl)=w,(B)uw2(fl)u...U^(B)

Если мы положим До = В, то (2.4.2) может быть записано! виде итерационного процесса:

По теореме о сжимающих отображениях, Ап сходится к А -аттрактору данной IFS.

Листинг 2.4.1 показывает, как этот итерационный процесс реализуется на языке Си в прилагаемой к книге программе (Этот листинг содержит часть кода программы. Полное описание переменных, структур и функций вы найдете в исходном коде вместе с прилагаемой к книге программой). Для хранения двоичных изображений, получаемых в результате

Итераций, введены Два Массива - oldJLmage И new__image Массив old_image соответствует Ап.\ в (2.4.3), a new_image соответствует Ап. Каждый из этих массивов состоит из единиц и нулей, где единица означает пиксел двоичного изобря жения. Каждый из этих массивов размещается динамически чтобы соответствовать размерам экрана: nrowe х ncoi* Чтобы обрабатывать эти изображения с помощью IFS, на^ необходимо перейти от массива изображения к плоское^1 X-Y. Эта плоскость - не что иное, как сетка X-Y, изобра женная на Рис. 2.4.1.

2. Системы итерируемых функций

53

ШШиг 2.4.1.

iter do {

На Рис. 2.4.3 показано, как работает итерационный процесс. Каждый ненулевой элемент массива oid_image отображается в точку с координатами (х, у) на плоскости X-Y. Затем над этой точкой выполняется каждое из аффинных преобразований из IFS. Число функций преобразования обозначено в программе как no__of__fne. Идентификатор coeff_iiBt - это список указателей, каждый из которых указывает на структуру coeff_Btruct, которая содержит аффинные коэффициенты. Новая точка (xnew,ynew) строится на экране дисплея с помощью функции xy__to_window_coior. Цвет точки был выбран, когда задавалось преобразование. Затем точка (xnew,ynew) отображается обратно в массив с именем new_image. Для завершения итерации массив new__image копируется в массив


Предыдущая Следующая


Галерея фракталов

 

Hosted by uCoz