Предыдущая Следующая
изображения-аттрактора с помошью 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 копируется в массив Предыдущая Следующая
|