Мы можем обобщить вышеизложенное для произвольной системы IFS и сказать, что «Игра в Хаос» создаст то же изображение, что и суперкопир1. Это верно для любой начальной точки и для любого разумного множества вероятностей, однако при надлежащем подборе вероятностей аттрактор выполнит свою работу быстрее. Например, папоротник на рис. 9.31 был сделан при помощи «Игры в Хаос» и преобразований из уравнения (9.6). Были использованы следующие вероятности: рг, = 0,01, рг2 = 0,07, рг3 = 0,07, рг4 - 0,85 {вероятности для папоротника}. (9.8)

Листинг 9.6. Псевдокод для «Игры в Хаос»

void chaosGame(Affine aff[], double рг[]. int N) {

RealPoint P - {0.0.0.0}:

1 Этот результат известен как эргодическая теорема Элтона (Elton 's ergodic theorem). Ее доказательство, требующее привлечения серьезной математики, представлено в работе [Barnsley, 10].

9.5. Создание изображений с использованием системы итерируемых функций

// set some initial point

// задаем какую-нибудь начальную точку

int index;
do{

index - chooseAffine(pr. N); // choose the next affine // выбираем следующее аффинное преобразование Р - transform(aff[index]. Р); drawRealDot(P): // draw the dot // рисуем точку } whi led bored):

}

В листинге 9.6 приведена схема функции chaosGame(), которая «играет в Хаос». Эта функция рисует аттрактор системы IFS, N преобразований которой записаны в массив äff []. Вероятности, которые надлежит использовать, находятся в массиве рг[]. При каждой итерации одно из N аффинных отображений случайно выбирается с помощью функции chooseAffine() и используется для преобразования предыдущей точки в последующую. Детали реализации функции chooseAffineO рассматриваются в тематическом задании 9.3, где создается проект для рисования нескольких любопытных аттракторов.

На рис. 9.33 приводятся еще два примера. На рис. 9.33, а показан аттрактор системы IFS дракона: Т, = {.824074, .281482, -.212346, .864198, -1.882290, -0.110607}, рг, = .787473; Т2 = {.088272, .520988, -.463889, -.377778, 0.785360, 8.095795}, рг2 = .212527.


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