<<

VYSOKEU´ CENˇ ´I TECHNICKE´ V BRNEˇ BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA INFORMACNˇ ´ICH TECHNOLOGI´I USTAV´ POCˇ ´ITACOVˇ E´ GRAFIKY A MULTIMEDI´ ´I

FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA

FRAKTALY´ V POCˇ ´ITACOVˇ E´ GRAFICE

DIPLOMOVA´ PRACE´ MASTER’S THESIS

AUTOR PRACE´ JAN HEIN´IK AUTHOR

BRNO 2007 VYSOKEU´ CENˇ ´I TECHNICKE´ V BRNEˇ BRNO UNIVERSITY OF TECHNOLOGY

FAKULTA INFORMACNˇ ´ICH TECHNOLOGI´I USTAV´ POCˇ ´ITACOVˇ E´ GRAFIKY A MULTIMEDI´ ´I

FACULTY OF INFORMATION TECHNOLOGY DEPARTMENT OF COMPUTER GRAPHICS AND MULTIMEDIA

FRAKTALY´ V POCˇ ´ITACOVˇ E´ GRAFICE IN COMPUTER GRAPHICS

DIPLOMOVA´ PRACE´ MASTER’S THESIS

AUTOR PRACE´ JAN HEIN´IK AUTHOR

VEDOUC´I PRACE´ Ing. ADAM HEROUT, Ph.D. SUPERVISOR

BRNO 2007 Abstrakt Diplomov´apr´acese zab´yv´ahistori´ıfrakt´aln´ıgeometrie a popisuje v´yvoj nauky o frakt´alech. Po poˇc´ateˇcn´ımsezn´amen´ıse z´akladn´ımipojmy jsou pops´any jednotliv´edruhy frakt´al˚ua jejich typick´epˇr´ıklady. D´alejsou uvedeny oblasti, ve kter´ych je moˇzno se s frakt´alysetkat mimo obor poˇc´ıtaˇcov´egrafiky. Pr´ace seznamuje s praktick´ymvyuˇzit´ımfrakt´aln´ıgeometrie. V textu jsou uvedeny v souˇcasn´edobˇezn´am´eprogramy a softwarov´ebal´ıky vhodn´epro zobrazov´an´ıfrakt´al˚ua jsou pops´any jejich moˇznosti.Praktickou ˇc´ast diplomov´epr´acetvoˇr´ı slajdy, demonstraˇcn´ıprogram a plak´at. Elektronick´eslajdy pˇredstavuj´ıosnovou vyuˇzitelnou pro pˇredn´aˇsky o problematice frakt´aln´ıgeometrie. Program slouˇz´ık demonstraci vybran´ych druh˚ufrakt´al˚u. Plak´atje grafick´ymshrnut´ımv´ysledk˚upr´ace.

Kl´ıˇcov´aslova Frakt´al,Juliova mnoˇzina, Mandelbrotova mnoˇzina,˚uvfrakt´al,L-syst´em, Syst´em iterovan´ych funkc´ı,Stochastick´efrakt´aly, Hausdorffova dimenze, atraktor, sobˇepodobnost, Sierpinsk´ehotroj´uheln´ık, africk´efrakt´aly, Cantorova mnoˇzina, Kochova vloˇcka, Hilbertova kˇrivka, Flame

Abstract This Master’s thesis deals with history of Fractal geometry and describes the fractal science development. In the begining there are essential Fractal science terms explained. Then description of fractal types and typical or most known examples of them are mentioned. Fractal knowledge application besides computer graphics area is discussed. Thesis informs about fractal geometry practical usage. Few present software packages or more programs which can be used for making fractal pictures are described in this work. Some of theirs capabilities are described. Thesis’ practical part consists of slides, demonstrational program and poster. Electronical slides represents brief scheme usable for fractal geometry realm lectures. Program generates selected fractal types. Thesis results are projected on poster.

Keywords Fractal, , , , L-system, Set, Stochas- tic fractal, Hausdorff dimension, , self-similarity, Sierpinski triangle, African frac- tals, , Koch flake, ,

Citace Jan Hein´ık: Frakt´alyv poˇc´ıtaˇcov´egrafice, diplomov´apr´ace, Brno, FIT VUT v Brnˇe, 2007 Frakt´alyv poˇc´ıtaˇcov´egrafice

Prohl´aˇsen´ı Prohlaˇsuji, ˇzejsem tuto diplomovou pr´acivypracoval samostatnˇepod veden´ım Ing. Adama Herouta, Ph.D. Uvedl jsem vˇsechny liter´arn´ıprameny a publikace, ze kter´ych jsem ˇcerpal.

...... Jan Hein´ık 21. kvˇetna2007

Podˇekov´an´ı R´adbych podˇekoval Ing. Adamu Heroutovi, Ph.D. za vstˇr´ıcn´ypˇr´ıstup, odborn´eveden´ıa pomoc pˇri n´avrhu struktury diplomov´epr´ace.

c Jan Hein´ık, 2007. Tato pr´ace vznikla jako ˇskoln´ı d´ılo na Vysok´emuˇcen´ı technick´emv Brnˇe,Fakultˇein- formaˇcn´ıch technologi´ı. Pr´ace je chr´anˇenaautorsk´ym z´akonem a jej´ıuˇzit´ıbez udˇelen´ıopr´avnˇen´ı autorem je nez´akonn´e,s v´yjimkou z´akonemdefinovan´ych pˇr´ıpad˚u.

Obsah

1 Uvod´ 3

2 Z´akladn´ıpojmy 4 2.1 Frakt´al ...... 4 2.1.1 Historie frakt´al˚u ...... 4 2.2 Dimenze ...... 6 2.2.1 Topologick´adimenze ...... 6 2.2.2 Hausdorffova dimenze ...... 6 2.3 Sobˇepodobnost ...... 8 2.4 Atraktor ...... 9 2.4.1 Lorenz˚uvatraktor ...... 10

3 Typy frakt´al˚u 11 3.1 Dynamick´esyst´emy ...... 11 3.1.1 Juliovy mnoˇziny ...... 12 3.1.2 Mandelbrotova mnoˇzina ...... 12 3.1.3 Newtonova frakt´aln´ımnoˇzina ...... 13 3.2 L-syst´emy ...... 14 3.2.1 Cantorova mnoˇzina ...... 16 3.2.2 Kochova vloˇcka ...... 17 3.2.3 Hilbertova kˇrivka ...... 18 3.3 IFS frakt´aly ...... 20 3.3.1 Sierpinsk´ehokobereˇcek ...... 22 3.3.2 Mengerova houba ...... 22 3.3.3 Fractal Flames ...... 23 3.4 Stochastick´efrakt´aly(nepravideln´efrakt´aly) ...... 27 3.4.1 Simulace Brownova pohybu ...... 27 3.4.2 Metoda pˇresouv´an´ıprostˇredn´ıho bodu ...... 29 3.4.3 Spektr´aln´ısynt´eza ...... 32

4 Frakt´alyv praxi 34 4.1 Biologie a l´ekaˇrstv´ı ...... 34 4.2 Poˇc´ıtaˇcov´agrafika ...... 35 4.3 Frakt´aln´ıant´eny ...... 36 4.4 Materi´aly ...... 37 4.5 Umˇen´ıa architektura ...... 38 4.5.1 Africk´efrakt´aly ...... 39 4.5.2 Betl´emsk´ahvˇezda ...... 40

1 4.6 SW pro generov´an´ıfrakt´al˚u ...... 41 4.6.1 ...... 41 4.6.2 Fractal eXtreme ...... 42 4.6.3 XaoS ...... 43 4.6.4 ...... 44

5 Algoritmy pro generov´an´ıfrakt´al˚u 45 5.1 Algoritmy dynamick´ych syst´em˚u ...... 45 5.1.1 Lorenz˚uvatraktor ...... 45 5.1.2 Juliovy mnoˇziny ...... 46 5.1.3 Mandelbrotova mnoˇzina ...... 47 5.2 Algoritmy L-syst´em˚u ...... 49 5.2.1 Kochova kˇrivka ...... 49 5.3 Algoritmy IFS ...... 50 5.3.1 Algoritmus n´ahodn´eproch´azky (RWA) ...... 50 5.3.2 Deterministick´yalgoritmus (DIA) ...... 52 5.3.3 Modifikovan´yalgoritmus n´ahodn´eproch´azky(M-RWA) ...... 54 5.3.4 Algoritmus generov´an´ıminima pixel˚u(MPA) ...... 55 5.3.5 Fractal flame ...... 56 5.4 Algoritmy stochastick´ych frakt´al˚u ...... 58 5.4.1 Simulace dif´uze ...... 58 5.4.2 Metoda pˇresouv´an´ıprostˇredn´ıho bodu ...... 60

6 V´ysledky pr´ace 62 6.1 Slajdy ...... 62 6.2 Demonstraˇcn´ıprogram ...... 64 6.2.1 Realizace ...... 65 6.2.2 Ovl´ad´an´ıprogramu ...... 67 6.2.3 Spr´avce palet ...... 69

7 Z´avˇer 71

2 Kapitola 1

Uvod´

Poprv´eje moˇzn´ese s pojmem “frakt´al”setkat v roce 1975, kdy jej ve sv´epr´aciFrakt´aly: Tvar, n´ahoda a dimenze [11] (francouzsky Les objets fractals, forme, hasard et dimen- sion) uvedl . Mnoho takov´ychto ´utvar˚u,jako napˇr. Kochova vloˇcka ˇci Sierpinsk´ehokoberec, bylo objeveno a pops´ano jiˇzdˇr´ıve, mnoh´ebyly dokonce vytvoˇreny jiˇzpˇred stalet´ımi- Africk´efrakt´aly. Pojem vych´az´ız latinsk´eho slova “fractus” (rozbit´y). Tyto sloˇzit´estruktury, vyhovuj´ıc´ıurˇcit´ymmatematick´ym poˇzadavk˚um,m˚uˇzeme nal´ezt tak´e v pˇr´ırodˇe. Pˇredstavuj´ıje snˇehov´evloˇcky, kaprad´ı,stromy, blesky, mraky, atd. Castoˇ je je- jich pozn´avac´ımznakem sobˇepodobnost, coˇzznamen´a,ˇzedan´y´utvar se jev´ıjako stejn´y v jak´emkoliv mˇeˇr´ıtkua st´alese opakuje. Pr´ace je rozdˇelenana dvˇehlavn´ıˇc´asti- teoretickou a praktickou. V teoretick´eˇc´asti pr´ace jsou vysvˇetleny z´akladn´ıpojmy jako je frakt´al,sobˇepodobnost aj. a jsou pˇribl´ıˇzeny souvislosti v´yvoje frakt´aln´ıpodstaty. D´alejsou uvedeny pˇr´ıklady frakt´aln´ıch ´utvar˚u,jejich rozˇclenˇen´ıa druhy algoritm˚u,kter´elze ke generov´an´ıobrazc˚upouˇz´ıt. V podkapitol´ach jsou uvedeny vˇzdypopisy jednotliv´ych typ˚u- Cantorova mnoˇzina,IFS frakt´aly, Mandelbrotova mnoˇzinaatd. Frakt´alyse vyskytuj´ı v mnoha oblastech techniky i kaˇzdodenn´ıch jevech. Nˇekter´ymzaj´ımavostem je vˇenov´ana vˇetˇs´ıpozornost. Napˇr´ıkladv kapitole ˇc. 4 jsou pops´any frakt´aly, kter´ese vyskytuj´ıve svˇetˇekolem n´as,at’ uˇzv pˇr´ırodˇe,nebo v nˇekter´emm z odvˇetv´ı techniky. Pˇrechod mezi teoretickou a praktickou ˇc´ast´ıpr´ace tvoˇr´ı 5. kapitola, kde jsou uvedeny algoritmy pro generov´an´ıfrakt´aln´ıch ´utvar˚u.V textu jsou uvedeny pˇr´ıklady, kdy tvarovˇe podobn´efrakt´alylze vytvoˇritodliˇsn´ymzp˚usobem. Pro zaj´ımavost jsou u nˇekter´ych al- goritm˚uuvedeny moˇznostimodifikac´ı. D´alejsou pops´any nˇekter´esoftwarov´ebal´ıky pro generov´an´ıfrakt´al˚u. Praktickou ˇc´astreprezentuje kapitola 6. C´ılemdiplomov´epr´ace bylo zpracovat informace ve formˇeelektronick´ych slajd˚uvyuˇziteln´ych jako v´yukov´ymateri´alpˇredmˇetu Poˇc´ıtaˇcov´a grafika na FIT VUT v Brnˇe.Pro ilustraci jednotliv´ych skupin frakt´al˚uje souˇc´ast´ıpr´ace tak´edemonstraˇcn´ıprogram.

3 Kapitola 2

Z´akladn´ıpojmy

2.1 Frakt´al

Frakt´alje ˇclenit´yobjekt, jehoˇzjednotliv´eˇc´asti vykazuj´ıtvarovou podobnost s celkem [16]. Tˇemito objekty se zab´yv´avˇedn´ıdiscipl´ına zvan´afrakt´aln´ıgeometrie, kter´ase zaˇcala rozv´ıjet od 60. let minul´ehostolet´ıd´ıkyBenoitu B. Mandelbrotovi. Mandelbrot v roce 1977 jako prvn´ıpouˇzilpojem frakt´ala uvedl jeho definici. Aˇckoliv bylo mnoho takov´ychto objekt˚u zn´amoa pops´anojiˇzdˇr´ıve (Kochova vloˇcka, Sierpinsk´ehotroj´uheln´ık,atd.), byly vˇetˇsinou povaˇzov´any za abnormality, a jak uv´ad´ı[12, 3], matematici je ˇradili do tzv. “Galerie mons- ter”. Tyto ´utvary se zd´aly nov´e,niˇcemu v pˇr´ırodˇeneodpov´ıdaj´ıc´ıa odporovaly geometrick´e intuici. Mnoh´ez nich byly “sobˇepodobn´e”. Pr´avˇetato vlastnost je umoˇzˇnovala popsat nejl´epe, proto je Mandelbrot vyˇclenilpro sv´evˇedeck´ezkoum´an´ıa nazval je pr´avˇe“frakt´aly”. Uk´azal,ˇze frakt´alynejsou vyj´ımkami, ale ˇzev podstatˇevˇse v pˇr´ırodˇem´afrakt´aln´ıpodstatu. D´ıky matematick´emu popisu frakt´aluje Mandelbrotovi pˇripisov´ano prvenstv´ıv t´etooblasti a podle nˇehoje pojmenov´anatak´emnoˇzina, kter´avych´az´ız jednoduch´ekomplexn´ıdefinice (bude uvedena pozdˇeji).Vykreslenou Mandelbrotovu mnoˇzinu m˚uˇzeme vidˇet na obr´azku 2.1. Frakt´altedy m˚uˇzeme, z pohledu poˇc´ıtaˇcov´egrafiky, popsat jako nekoneˇcnˇeˇclenit´y´utvar, jehoˇzˇc´ast ˇcasto vypad´apodobnˇepˇri jak´emkoliv pˇribl´ıˇzen´ıˇcirotaci jako cel´yobrazec [10]. Dalˇs´ızaj´ımavou vlastnost´ım˚uˇze b´ytnapˇr.nekoneˇcnˇevelk´yobvod, ˇci nekoneˇcnˇemal´yobsah. Matematick´adefinice frakt´aludosud nebyla uvedena. Nejv´ıce se j´ıbl´ıˇz´ıMandelbrotova specifikace: Frakt´alje moˇzina, jej´ıˇzhodnota Hausdorffovy-Besicovichovy dimenze pˇresahuje hodnotu dimenze topologick´e, uveden´av jeho knih´ach [3, 2, 12, 11]. Topo- logick´adimenze (DT ) urˇcuje rozmˇertˇelesa, jak jej zn´amez bˇeˇzn´egeometrie. DT bodu je rovna nule, pˇr´ımka m´a DT = 1, rovina DT = 2 a krychle DT = 3. Hausdorffova dimenze obvykle neb´yv´acel´eˇc´ıslo.V´ıcepodrobnost´ıbude uvedeno v kapitole 2.2.2.

2.1.1 Historie frakt´al˚u Frakt´aln´ıgeometrie je mladou, avˇsakdnes jiˇzrelativnˇerozs´ahlouvˇedn´ıdiscipl´ınou, kter´a zasahuje do mnoha obor˚u. Nejvˇetˇs´ırozvoj nastal od ˇsedes´at´ych let 20. stolet´ı, kdy se zaˇcaly vyuˇz´ıvat prvn´ıpoˇc´ıtaˇce[25]. Jak jiˇzbylo uvedeno, nejzn´amˇejˇs´ımfrakt´alemje Mandelbrotova mnoˇzina(obr´azek 2.1), dynamick´yfrakt´alleˇz´ıc´ı v komplexn´ı rovinˇe.Mandelbrot nebyl prvn´ı, kdo tento frakt´alvykreslil, jako prvn´ıho vˇsak publikoval. Pˇr´ıkladem objeven´ı frakt´aln´ı podstaty objektu d´avno pˇredMandelbrotem jsou tzv. Africk´efrakt´aly[6]. Vesnice, pal´ace nebo ˇsperky, kter´elze nal´ezt na ´uzem´ıafrick´ych st´at˚u,

4 Obr´azek 2.1: Mandelbrotova mnoˇzina splˇnuj´ıpodm´ınky pro zaˇrazen´ımezi frakt´alysv´ymtvarem ˇcistrukturou. V kapitole 4 jsou uvedeny p˚udorysn´efotografie vesnice, jej´ıˇzobydl´ıjsou uspoˇr´ad´anado frakt´aln´ıhoobrazce. S frakt´alyje moˇzn´ese setkat tak´ev oboru meteorologie a klimatologie. Vˇedcipˇri zkoum´an´ıgraf˚upˇredpovˇed´ıpoˇcas´ızjistili, ˇzevypoˇcten´ehodnoty se znaˇcnˇemˇenilyi s jen minim´aln´ı zmˇenou vstupn´ıch ´udaj˚u. Z toho vypl´yv´a,ˇze poˇcas´ı se chov´ajako chaotick´y syst´ema nelze dos´ahnout spolehliv´epˇredpovˇedichov´an´ıpro delˇs´ıˇcasov´e´useky [9]. Tento probl´empopsal Edward Lorenz v roce 1963 pˇrizkoum´an´ıtˇr´ıdynamick´ych rovnic, jak je uvedeno v kapitole 2.4.1. Chaos byl v t´edobˇetak´epˇredmˇetemzkoum´an´ı na mnoha vˇedeck´ych pracoviˇst´ıch. V laboratoˇr´ıch IBM se snaˇzili vˇedci vyˇreˇsitprobl´ems n´ahodn´ymv´yskytem ˇsumu na ko- munikaˇcn´ıch link´ach mezi poˇc´ıtaˇci. Pˇri snaze o jeho odstranˇen´ıbylo vˇzdy opraveno veden´ı, ovˇsem bez ´uspˇechu. Sumˇ se st´aleobjevoval a mizel. V t´edobˇeu IBM pracoval tak´eMandel- brot. Na vytiˇstˇen´ych z´aznamech datov´ych pˇrenos˚ua chyb na veden´ıvypozoroval znaˇcnou podobnost s Cantorovou mnoˇzinou (obr´azek 3.5). Probl´em odstranili opakov´an´ımpˇrenosu zaˇsumˇen´ych dat [11, 25]. Konkr´etn´ıpˇr´ıklady jsou uvedeny v kapitole 4 na stranˇe 34.

5 2.2 Dimenze

Dimenze je hlavn´ıpojem pˇristudiu frakt´al˚u.Bˇeˇzn´ageometrick´atˇelesa lze popsat koneˇcn´ym poˇctem parametr˚u(napˇr.d´elka, plocha, poˇcet rozmˇer˚u). Vˇetˇsina bˇeˇzn´ych ´utvar˚um´ahod- notu dimenze cel´eˇc´ıslo,naz´yv´ase topologick´adimenze, kter´evyjadˇruje kolik souˇradnic potˇrebujeme k jednoznaˇcn´emu urˇcen´ıpolohy bodu v tomto ´utvaru [25, 24]. Takov´eto´utvary znaˇc´ıme jako geometricky hladk´etˇelesa. Pro frakt´aln´ıgeometrii vˇsaknen´ıtopologick´adi- menze dostateˇcn´a,proto se pˇrid´av´adimenze frakt´aln´ı - Hausdorffova (podle nˇemeck´eho profesora Felixe Haussdorfa). Tato dimenze nab´yv´aneceloˇc´ıseln´ych hodnot a ud´av´am´ıru ˇclenitosti´utvaru, viz kapitola 2.2.2.

2.2.1 Topologick´adimenze

Topologick´adimenze (DT ) je zn´am´az klasick´egeometrie. Jak jiˇzbylo ˇreˇceno dˇr´ıve, ud´av´a poˇcet parametr˚u, nutn´ypro popis polohy bodu v tˇelese [25, 24, 12]. DT bodu je rovna nule, pro popis jeho polohy v nˇemsam´emnen´ıpotˇrebaˇz´adn´y´udaj. Bod m˚uˇzeme popsat vztahem P = X. Useˇcka´ m´a DT = 1, protoˇzepotˇrebujeme jeden ´udaj pro urˇcen´ıpolohy bodu na ´useˇcce. Tot´eˇzplat´ıi pro dalˇs´ıkˇrivky, kde poloha bodu na kˇrivce je vyj´adˇrenapodobnˇejako pro napˇr.parabolu :

2 x = x0 + t (2.1)

kde t je parametrem, kter´yjednoznaˇcnˇedefinuje polohu bodu na kˇrivce. D´elka kˇrivek m˚uˇzeb´yt nekoneˇcn´a,avˇsakjejich plocha je nulov´a. DT roviny je rovna dvˇema,pro urˇcen´ıpolohy bodu na ploˇsepotˇrebujeme dva parametry, kter´ejej jednoznaˇcnˇeurˇcuj´ı.Vyj´adˇren´ım roviny ohraniˇcen´ekruˇzn´ıc´ıbudiˇz:

x = x0 + r ∗ cos α (2.2)

y = y0 + r ∗ sin α (2.3)

kde r je parametrem urˇcuj´ıc´ımpolomˇerkruˇznice, jej´ıstˇred se nach´az´ıv bodˇe[x0, y0] a α je promˇenn´yparametr α ∈ h0, 2π). Podobnˇepak m´anapˇr. krychle DT = 3. Pro z´akladn´ı geometrick´e´utvary zn´ame vztahy, ze kter´ych m˚uˇzeme vypoˇc´ıtat jejich vlastnosti, jako d´elku, plochu ˇci objem. Tyto hodnoty jsou nez´avisl´ena jednotk´ach, ve kter´ych jsou ud´any parametry tˇeles. Detailnˇeji viz [3, 24].

2.2.2 Hausdorffova dimenze Frakt´aln´ı dimenze ˇci Hausdorffova dimenze, bude oznaˇcov´ana D, ud´av´am´ıru ˇclenitosti ´utvaru. Pro frakt´aln´ıobjekty je hodnota t´eto dimenze vˇetˇs´ıneˇzhodnota DT . Pˇri mˇeˇren´ı vlastnost´ı Euklidovsk´ych ´utvar˚udost´av´ameceloˇc´ıseln´ehodnoty nez´avisle na zvolen´emmˇeˇr´ıtku, at’ uˇzzjiˇst’ujeme jejich d´elku, povrch, objem, dimenzi. Pro frakt´aln´ı obrazce vˇsaknen´ıceloˇc´ıseln´evyj´adˇren´ıdimenze dostateˇcn´e. Pˇri mˇeˇren´ıd´elky pobˇreˇz´ıostrova Korsika v roce 1961 zjistil L. Richardson zvl´aˇstnost - namˇeˇren´ahodnota byla z´avisl´ana d´elce pouˇz´ıvan´ehomˇeˇridla. C´ımv´ıceseˇ zmenˇsovalo mˇeˇridlo, t´ım vˇetˇs´ı hodnota vyˇsla, tud´ıˇzpˇri d´elcelimitnˇese bl´ıˇz´ıc´ı nule, by d´elka rostla

6 do nekoneˇcna[12, 25, 9]. Z toho vypl´yv´a,ˇze ostrov o koneˇcn´eploˇsem´anekoneˇcnoud´elku pobˇreˇz´ı.Ilustraci mˇeˇren´ıje moˇznovidˇet na obr´azku 2.2.

Obr´azek 2.2: Mˇeˇren´ıobvodu ostrova

Richardson pˇrizkoum´an´ıhranic st´at˚ua pobˇreˇz´ıostrov˚uzjistil, ˇzeodmˇeˇren´ad´elka L(G) je z´avisl´ana mˇeˇr´ıtku G. Po nˇekolika mˇeˇren´ıch vyslovil domnˇenku, ˇze L(G) m˚uˇze b´ytapro- ximov´ano funkc´ı:

L(G) = MG1−D (2.4)

AˇzMandelbrot uk´azal,ˇzed´elka pobˇreˇz´ıa ostatn´ızemˇepisn´ehranice jsou z´avisl´ena kon- stantˇeD, jeˇzvyjadˇruje Hausdorffovu dimenzi [22]. Stejn´yprobl´em, jako s obvodem ostrova, by nastal pˇrimˇeˇren´ıd´elky ˇreky, pokud by se zmˇeˇrila d´elka lev´eho a prav´eho bˇrehu a pak se zpr˚umˇerovala. Pˇripˇresn´emmˇeˇren´ıby se d´elka ˇrek bl´ıˇzilanekoneˇcnu. Pr´avˇeproto, ˇze vzd´alenost od ´ust´ık prameni je koneˇcn´a,je nutno ˇrekymˇeˇrit po dan´ych kroc´ıch, ˇcipˇr´ımov toku ˇreky. Vzorec pro v´ypoˇcet Hausdorffovy dimenze lze z´ıskat n´asleduj´ıc´ımzp˚usobem:

1 • mˇejme ´useˇcku,kterou rozdˇel´ıme na N d´ılk˚u, d´elka jednoho d´ılku bude s = N , • pro Hausdorffovu dimenzi plat´ıobecnˇe,ˇze N ∗ sD = 1,

• postupn´ymi ´upravami pˇredchoz´ıho v´yrazu dostaneme vzorec 2.5, ze kter´ehopo dosa- zen´ıdan´ych parametr˚u, dostaneme Hausdorffovu dimenzi objektu.

log N D = 1 (2.5) log s Hausdorffova dimenze je tedy ˇc´ıslo,kter´eud´av´ajakou rychlost´ıroste d´elka, obsah ˇci objem do nekoneˇcna.Liˇs´ı-li se D a DT m´alo,bude ´utvar m´aloˇclenit´y,kdeˇzto bude-li DT > D, bude ´utvar velmi ˇclenit´y.Podrobnˇejiviz [3, 24].

7 2.3 Sobˇepodobnost

Sobˇepodobnost je jednou z hlavn´ıch vlastnost´ıfrakt´alu. D´ase ˇr´ıci, ˇze sobˇepodobnost zna- men´aopakov´an´ısebe sama napˇr.se zmˇenou mˇeˇr´ıtka, posunut´ım, rotac´ınebo zkosen´ım. V matematice se setk´av´ame s oznaˇcen´ım invariance v˚uˇcizmˇenˇemˇeˇr´ıtka. Tato vlastnost tak´enapom´ah´aidentifikaci frakt´al˚uv pˇr´ırodˇe. Napˇr´ıklad kapradinu m˚uˇzeme povaˇzovat za sloˇzeninu nekoneˇcn´eho poˇctuvˇetviˇcek ˇci l´ıstk˚u,kter´epo zvˇetˇsen´ıvypadaj´ıopˇet jako kap- radina, viz obr´azek 2.3.

Obr´azek 2.3: Frakt´aln´ıkapradina

Definice sobˇepodobn´emnoˇziny zn´ı takto [25]: Sobˇepodobn´amnoˇzina A n-dimenzio- n´aln´ıho Euklidovsk´ehoprostoru En je takov´amnoˇzina, pro n´ıˇzexistuje koneˇcnˇemnoho n n kontrahuj´ıc´ıch zobrazen´ı φ1, ..., φn (zobrazen´ız E do E ), kter´ezmenˇs´ıvzd´alenost mezi body leˇz´ıc´ımi v En takov´ych, ˇzeA vznikne jako:

n [ A = Φi(A) (2.6) i=0

2 3 Pro E a E se m˚uˇzeu zobrazen´ı φi jednat o tzv. line´arn´ı transformace, kdy se mˇen´ı i mˇeˇr´ıtko. Tˇechto transformac´ı se pak vyuˇz´ıv´ake generov´an´ı IFS frakt´al˚u, kter´e jsou pops´any v kapitole 3.3. Mnoˇzina definovan´at´ımto zp˚usobem m´anˇekolik velmi zaj´ımav´ych vlastnost´ı:

• vznik´aopakov´an´ımsebe sama pˇriurˇcit´etransformaci (zmˇenamˇeˇr´ıtka, rotace, po- sunut´ınebo zkosen´ı).Pouˇz´ıvaj´ıse i transformace neline´arn´ı,avˇsakje d˚uleˇzit´e, aby vˇzdyˇsloo transformace, kter´ezkracuj´ıvzd´alenostmezi dvˇema r˚uzn´ymi body.

• je invariantn´ı v˚uˇci zmˇenˇemˇeˇr´ıtka. Pˇri libovoln´emzvˇetˇsen´ı, ˇcizmenˇsen´ı vypadaj´ı podobnˇe.Vlastnost vypl´yv´az definice sobˇepodobn´emnoˇziny.

• vznik´asama ze sebe, respektive vznik´aopakov´an´ımt´ehoˇzmotivu.

8 Princip opakov´an´ıpodobn´ych tvar˚uve zmenˇsen´epodobˇeje vidˇetprakticky u jak´ekoliv sloˇzit´estruktury, kter´aje generov´ana i velmi jednoduch´ymipravidly. Vˇetven´ıstrom˚uˇci c´ev a ˇzilv tˇelech ˇzivoˇcich˚u,nebo hromadˇen´ıbakt´eri´ıa ˇrasv koloni´ıch, se d´amatematicky uspokojivˇepopsat pouze frakt´aln´ı geometri´ı. Pˇripokusech o pops´an´ı pˇr´ırodn´ıch ´utvar˚u n´astroji Euklidovsk´egeometrie byly konstrukce pˇr´ıliˇskomplikovan´enebo neodpov´ıdalyre- alitˇe. Frakt´alyvˇsak slouˇz´ıi k modelov´an´ıa pochopen´ısloˇzit´ych dˇej˚u, kter´ese odehr´avaj´ı v ˇcase, tud´ıˇzse jedn´ao jevy dynamick´e. Pˇri pouˇz´ıv´an´ı pojmu sobˇepodobnosti je tˇrebasi uvˇedomit,ˇzese jedn´ao podobnost objektu pˇrizmˇenˇemˇeˇr´ıtka. Existuje mnoho geometrick´ych ´utvar˚u, kter´ejsou podobn´e(nebo shodn´e)pˇriaplikaci jin´etransformace. Napˇr´ıklad ˇctverec je invariantn´ıv˚uˇci stˇredov´emu zrcadlen´ı,kruh je invariantn´ıv˚uˇcistranov´emu zrcadlen´ıa pˇr´ımka je invariantn´ıv˚uˇci posunu ve smˇerujej´ıhovektoru. Tato invariance, pokud nen´ıdoprov´azena invarianc´ıv˚uˇci zmˇenˇe mˇeˇr´ıtka, v ˇz´adn´em pˇr´ıpadˇenedefinuje frakt´al.

2.4 Atraktor

S pojmem “atraktor” se setk´av´ame nejˇcastˇeji pˇri popisu dynamick´ych syst´em˚ua IFS syst´em˚u.Atraktor dynamick´ehosyst´emu je mnoˇzinastav˚u,do kter´ych syst´em smˇeˇruje. Je to mnoˇzina hodnot, kter´ych m˚uˇze nab´yvat stavov´yvektor dynamick´eho syst´emu po dostateˇcnˇedlouh´emˇcasov´em ´useku od inicializace syst´emu. Z geometrick´eho hlediska m˚uˇze b´yt atraktorem bod, kˇrivka nebo jakkoli rozmanit´amnoˇzinafrakt´aln´ıpodstaty. Atraktory se daj´ırozdˇelitdo nˇekolika tˇr´ıda m˚uˇzejimi b´yt[25]: • mnoˇzinapevn´ych bod˚u, • mnoˇzinaperiodick´ych bod˚u, • mnoˇzinakvaziperiodickych bod˚u, • atraktor je chaotick´y, • atraktor je podivn´y. Je-li atraktorem dynamick´eho syst´emu mnoˇzina pevn´ych bod˚u, jedn´ase o nejjednoduˇsˇs´ı pˇr´ıpad- syst´emse v nekoneˇcn´em ˇcase ust´alilv nˇejak´em stabiln´ımstavu, kter´ylze dopˇredu vypoˇc´ıtat. Je-li atraktorem mnoˇzina periodick´ych (resp. kvaziperiodick´ych) bod˚u,jde tak´eo ele- ment´arn´ıpˇr´ıpad. Syst´emse po urˇcit´edobˇeust´alil tak, ˇze osciluje mezi nˇekolika stavy. Je-li atraktor chaotick´y,znamen´ato, ˇzev´ysledn´ystav syst´emu nelze nijak dopˇredu pˇredpovˇedˇet.To m˚uˇzeb´ytzp˚usobeno tak´et´ım,ˇzeje syst´emvelmi citliv´yna poˇc´ateˇcn´ı podm´ınky. Chaotiˇcnostv tomto pˇr´ıpadˇeneznamen´an´ahodnost, protoˇzese st´alepohybujeme v r´amci deterministick´ych syst´em˚u. Podivn´yatraktor (anglicky strange attractor) je z hlediska frakt´aln´ıgeometrie pˇr´ıpadem nejzaj´ımavˇejˇs´ım. Tento typ atraktoru m˚uˇzevzniknout, je-li syst´em pops´anminim´alnˇetˇremi souvisej´ıc´ımidiferenci´aln´ımirovnicemi. Takov´ysyst´em m˚uˇzem´ıtvelmi komplikovan´yatrak- tor, kter´ysice bude vykazovat vlastnosti pravideln´eho,ale souˇcasnˇei chaotick´eho atrak- toru. Term´ınpodivn´yatraktor nen´ıpˇresnˇematematicky definov´an(definice sice existuj´ı, nezahrnuj´ıvˇsak vˇsechny typy podivn´ych atraktor˚u), ale povaˇzujeme za nˇejtakov´yatrak- tor, kter´yvykazuje stejn´evlastnosti, jak´emaj´ıfrakt´aly. Vˇsechny chaotick´eatraktory jsou souˇcasnˇepodivn´ymi atraktory, opaˇcnˇeto vˇsakneplat´ı.Pˇr´ıklad podivn´eho atraktoru m´ame na obr´azku 2.4, nebo viz [12, 25].

9 2.4.1 Lorenz˚uvatraktor Lorenz˚uvatraktor byl prvn´ım zkouman´yma popsan´ymdynamick´ymsyst´emem. Edward Lorenz jej objevil pˇri zkoum´an´ıvlastnost´ıvodn´ıho kola, kdy do n´adob um´ıstˇen´ych po ob- vodu pˇrit´ek´aa odt´ek´avoda. Proces se jevil jako jednoduch´y,avˇsakjedn´ase o chaotick´y syst´em.Projevila se u nˇejvysok´acitlivost na poˇc´ateˇcn´ıpodm´ınky, tzv. “mot´yl´ıefekt” (mal´a zmˇenapoˇc´ateˇcn´ıch hodnot zp˚usob´ıvelk´yrozd´ıl ve v´ysledku). Naplnˇen´ımn´adoby se kolo roztoˇciloa Lorenz zkoumal moˇznostipohybu kola, kter´emohou nastat v pˇr´ıpadˇe,ˇze se n´adoba nestihne naplnit cel´a,nevyteˇce cel´aatd. Pomoc´ıtˇr´ırovnic [22]: dx = σ(y − x) (2.7) dy dy = x(ρ − z) − y (2.8) dt dz = xy − βy (2.9) dt vyj´adˇril Lorenz chov´an´ısyst´emu (σ se naz´yv´aPrandtlovo ˇc´ısloa ρ je Rayleightovo ˇc´ıslo). Kdyˇzpak na poˇc´ıtaˇci nechal zobrazit graf, syst´em se d´ıkyzvolen´ymhodnot´amnechoval periodicky, ale chaoticky - nedalo se pˇredpovˇedˇetv jak´emstavu se bude syst´emnach´azet v n´asleduj´ıc´ım okamˇziku. V´ysledekje na obr´azku 2.4. Dr´ahy se na simulaci pˇrekr´yvaj´ı z d˚uvodu pouˇzit´ıkoneˇcn´ehopoˇctu desetinn´ych m´ıstpro zobrazen´ıˇc´ısel. Pokud by se pouˇzilo pˇresn´ehomodelu, tato situace by nikdy nenastala a dr´ahy by se kˇr´ıˇzily.

Obr´azek 2.4: Lorenz˚uvatraktor - graf

S podivn´ymi atraktory a dynamick´ymi syst´emy souvis´ı ´uloha poch´azej´ıc´ı z klasick´e fyziky - probl´em tˇr´ıtˇeles [25]. Ve vesm´ırum´ame tˇritˇelesa a zadan´epoˇc´ateˇcn´ıpodm´ınky syst´emu (poloha, hmotnost tˇeles, poˇc´ateˇcn´ırychlost a smˇerpohybu). Ukolem´ je analyticky vyj´adˇrit poholu tˇeles v libovoln´emokamˇziku. Byla dok´az´ananeˇreˇsitelnosttohoto probl´emu, pˇrestoˇze probl´emdvou tˇeles je jednoduch´y. D˚uvodem je pohyb tˇeles po ˇc´asteˇcnˇechaotick´ych drah´ach, kdy jsou pˇritahov´anak urˇcit´ym bod˚um, kter´ymi trajektorie proch´azej´ı.Tyto body byly nazv´any atraktory kv˚ulisv´evlast- nosti (pˇritaˇzlivost, anglicky attraction).

10 Kapitola 3

Typy frakt´al˚u

Jednˇemi z prvn´ıch matematik˚u, kteˇr´ı nalezli objekty vyhovuj´ıc´ı definici frakt´alu, avˇsak nevidˇeli mezi nimi jeˇstˇesouvislost, byli , , Waclaw Sierpins- ki ˇciGaston Julia. I d´ıkyjejich pr´acimohl Mandelbrot pozdˇeji definovat pojem frakt´al. V n´asleduj´ıc´ıch kapitol´ach budou nˇekter´ez prvn´ıch frakt´al˚uuvedeny. Postupem ˇcasubyly frakt´aln´ı´utvary na z´akladˇespoleˇcn´ych charakteristik rozˇrazeny do skupin [25]. Takto ˇclenˇen´ejednotliv´etypy frakt´al˚ujsou vhodn´epro ˇreˇsen´ıurˇcit´ych ´uloh v jednom nebo v´ıce oborech. V poˇc´ıtaˇcov´egrafice je d˚uleˇzit´e,ˇzealgoritmy pro vytv´aˇren´ı frakt´al˚ujsou podobn´epro jednotliv´eskupiny, pˇrestoˇze se tvar vygenerovan´ych obrazc˚uliˇs´ı. Frakt´alydˇel´ıme na n´asleduj´ıc´ıtypy:

• Dynamick´esyst´emy s frakt´aln´ıstrukturou,

• L-syst´emy,

• Syst´emy iterovan´ych funkc´ıIFS,

• Stochastick´efrakt´aly(nepravideln´efrakt´aly).

3.1 Dynamick´esyst´emy

Dynamick´esyst´emy tvoˇr´ıtu skupinu (resp. kategorii) frakt´al˚u,kter´am´av technick´epraxi nejˇsirˇs´ıuplatnˇen´ı.Dynamick´ysyst´emje matematick´ymodel, jehoˇzstav je z´avisl´yna nˇejak´e promˇenn´e(napˇr.ˇcasu). Dynamick´ysyst´emvych´az´ız poˇc´ateˇcn´ıch podm´ınek a je jimi v ˇcase determinov´an. Existuj´ı dynamick´esyst´emy, kter´ese po urˇcit´emˇcase neust´al´ı v pevn´em stavu, ale ani nediverguj´ı. Tento pˇr´ıpad, kter´ypˇripom´ın´airacion´aln´ıˇc´ısla, m´avˇetˇsinou frakt´aln´ıdynamiku a oznaˇcuje se term´ınemdeterministick´ychaos. V´ıceviz [3, 12, 24]. Dynamick´ysyst´emje pops´anpomoc´ıdynamick´ych podm´ınek, kter´epopisuj´ıjeho zmˇenu syst´emu v ˇcase. Dynamick´epodm´ınky jsou vˇetˇsinouzad´any soustavou diferenci´aln´ıch rovnic, kter´epopisuj´ızmˇenu stavov´ehovektoru v ˇcase. Zmˇena stavu dynamick´eho syst´emu se dˇeje proveden´ımtˇechto diferenci´aln´ıch rovnic a nahrazen´ımstar´ehostavov´ehovektoru nov´ym. Z hlediska poˇc´ıtaˇcov´egrafiky je nejzaj´ımavˇejˇs´ıvhodn´ymzp˚usobem vizualizovat nˇejakou vlastnost dynamick´ehosyst´emu. Nejˇcastˇejise u bod˚uv komplexn´ırovinˇesleduje ´unik od atraktoru v z´avislostina poˇctu iterac´ı. Dojde-li k ´uniku bodu, vybarv´ıse tento bod ´umˇernˇe poˇctu iterac´ı. Z tˇechto syst´em˚ujsou v poˇc´ıtaˇcov´egrafice asi nejv´ıcezn´am´eJuliovy mnoˇziny a Mandelbrotova mnoˇzina.

11 3.1.1 Juliovy mnoˇziny Bˇehem druh´esvˇetov´ev´alky dva francouzˇst´ı matematikov´eGaston Julia a Pierre Fatou objevili zvl´aˇstn´ı´utvary pozdˇeji naz´yn´eJuliovy mnoˇziny. Nˇekter´ese podobaj´ıkeˇr´ık˚um,jin´e moˇrsk´ymkon´ık˚um ˇcikr´al´ık˚um. Juliovy mnoˇziny jsou vytv´aˇreny pomoc´ıiterace funkce komplexn´ıparaboly:

2 zn+1 = zn + c (3.1) kde promˇenn´e zn a c leˇz´ıv komplexn´ırovinˇe. Poˇc´ateˇcn´ıhodnota z0 v pˇr´ıpadˇeJuliov´ych mnoˇzinreprezentuje pozici bodu v komplexn´ırovinˇe.Komplexn´ıhodnota c je zvolena libo- volnˇea pro vˇsechny poˇc´ıtan´ebody v jednom obrazci z˚ust´av´akonstantn´ı.Pˇr´ıkladJuliovy mnoˇziny o souˇradnic´ıch (-0.726895347709114071439, 0.188887129043845954792) vid´ımena obr´azku 3.1.

Obr´azek 3.1: Juliova mnoˇzina

Pro zv´yraznˇen´ı atritbut˚use Juliovy mnoˇziny vykresluj´ı barevnˇe.Nejˇcastˇejˇs´ı zp˚usob obarven´ıje ten, ˇzebarva bodu charakterizuje krok iterace, ve kter´embylo zjiˇstˇeno, ˇze bod nediverguje.

3.1.2 Mandelbrotova mnoˇzina Mandelbrotova mnoˇzina (anglicky Mandelbrot Set nebo M-set) je neline´arn´ımdeterminis- tick´ymfrakt´alem.Je povaˇzov´anaza jeden z nejzaj´ımavˇejˇs´ıch frakt´al˚u(obr´azek 2.1), kter´yse pouˇz´ıv´av poˇc´ıtaˇcov´egrafice, napˇr´ıkladke generov´an´ıtextur nebo vytv´aˇren´ıtrojrozmˇern´ych model˚uhor. Objevena byla pˇrianal´yze dynamick´ych syst´em˚use zpˇetnouvazbou. Jako prvn´ızˇrejmˇemnoˇzinu vykreslili Robert Brooks a Peter Matelski v roce 1978. Obrazec byl ˇcernob´ıl´ya rozliˇsoval konvergenci a divergenci posloupnosti hodnot [12, 25]. S rozvojem poˇc´ıtaˇcov´egrafiky doˇslok rozˇs´ıˇren´ımoˇznost´ıvybarvov´an´ına z´akladˇenapˇr.poˇctuiterac´ı nutn´ych k rozhodnut´ıdivergence bodu, velikosti posledn´ıvypoˇcten´ehodnoty |zn|, podle hodnot re´aln´eˇciimagin´arn´ısloˇzkyatd.

12 Narozd´ıl od Juliov´ych mnoˇzin, kter´ych je v´ıcedruh˚u,je Mandelbrotova mnoˇzinajedna a je souvisl´a,coˇzdok´azaliv roce 1982 Adrien Douady a John Hubbard. Pr´avˇeHubbard ji dal jm´eno,pod kter´ymje dnes vˇseobecnˇezn´ama. Objekty stejn´ehotvaru jako je samotn´a Mandelbrotova mnoˇzina lze nal´ezt nejen po jej´ım obvodu, ale i “osamoceny” v okol´ı,jak lze vidˇet na obr´azku 3.2. Vˇzdyjsou spojeny s hlavn´ıˇc´ast´ı,z ˇcehoˇzvypl´yv´a,ˇze Mandelbrotova mnoˇzinaje souvisl´a.

Obr´azek 3.2: Detaily v Mandelbrotovˇemnoˇzinˇe

Mandelbrotova mnoˇzinaje opˇetvytv´aˇrenapomoc´ıiterace funkce komplexn´ıparaboly:

2 zn+1 = zn + c (3.2) kde promˇenn´e zn a c leˇz´ıv komplexn´ırovinˇe.Mandelbrotovu mnoˇzinu lze definovat jako mnoˇzinu [16]

M = c ∈ C | c → c2 + c → · · · je omezena´ (3.3) coˇzje p˚uvodn´ıMandelbrotova definice z roku 1979. Lze ji ovˇsem tak´edefinovat jako mnoˇzinu vˇsech komplexn´ıch ˇc´ısel c, kdy je Juliova mnoˇzina Jc souvisl´a,tj.  M = c ∈ C | Jc je souvisla´ (3.4)

Pokud je posloupnost iterac´ıomezen´a,n´aleˇz´ıbod C Mandelbrotovˇemnoˇzinˇe. Zaj´ımavost´ıje, ˇze pr˚useˇc´ıkt´etomnoˇziny s re´alnou osou tvoˇr´ıproslulou Feigenbaumovu posloupnost bifurkac´ı.Tato okolnost zavdala pˇr´ıˇcinu k p´ısemn´epˇrestˇrelce mezi Mandel- brotem a Feigenbaumem, t´ykaj´ıc´ıse autorstv´ınˇekter´ych z´akladn´ıch idej´ıv teorii chaosu [16, 25].

3.1.3 Newtonova frakt´aln´ımnoˇzina Newtonova frakt´aln´ımnoˇzinabyla objevena Johnem Hubbardem. Pˇripˇredn´aˇsen´ıNewtonovy iteraˇcn´ımetody [9, 22], urˇcen´epro vyhled´av´an´ıkoˇren˚upolynom˚u, zadal student˚um ´ukol, aby zkusili pro rovnici 3.5 nal´ezt koˇreny v komplexn´ırovinˇe.

x3 + 1 = 0 (3.5) Jeho pˇredstavou bylo, ˇzeˇreˇsen´ırozdˇel´ıkomplexn´ırovinu na nˇekolik oddˇelen´ych ploch, ke kter´ymbude ˇreˇsen´ıkonvergovat. Na rozhran´ıoblast´ıse vˇsakobjevily zvl´aˇst´ıobrazce. Hubbard zaˇcal chov´an´ı rovnice zkoumat a po barevn´emoznaˇcen´ı bod˚udostal obrazec,

13 kter´ym˚uˇzeme vidˇetna obr´azku 3.3. Na hranici tˇr´ıvelk´ych oblast´ıv´ıd´ıme sobˇepodobn´y obrazec, kter´ypodle obarven´ıpodoblast´ıurˇcuje, ke kter´emu ˇreˇsen´ıkonverguje. Zaj´ımav´e je, ˇzev´yseˇceobsahuj´ıi barvy odpov´ıdaj´ıc´ınejvzd´alenˇejˇs´ımu koˇrenu. Rovnice 3.5 je z´akladn´ı rovnic´ı pro vygenerov´an´ı Newtonovy frakt´aln´ı mnoˇziny a z obr´azkuje patrn´e, ˇze mimo oblast konvergence je tato metoda citliv´ana zvolen´epoˇc´ateˇcn´ıpodm´ınky. Pˇri zmˇenˇestupnˇe a tvaru polynomu dost´av´ameodliˇsn´yvzhled obrazce.

Obr´azek 3.3: Newtonova frakt´aln´ımnoˇzina

3.2 L-syst´emy

L-syst´emy, jeˇzjsou v nˇekter´eliteratuˇretak´eoznaˇcov´any term´ınem Lindenmayerovy syst´emy, jsou skupinou frakt´al˚udefinovan´ych pomoc´ı pˇrepisovac´ıch gramatik [24]. N´azev poch´az´ı z anglick´ezkratky LOGO-like turtle. LOGO je zn´am´yprogramovac´ı jazyk urˇcen´ypro v´yuku programov´an´ı, jeˇzje zaloˇzen´yna Lispu. Pomoc´ı tohoto jazyka se jednoduch´ymi pˇr´ıkazy, ovl´adaj´ıc´ımivirtu´aln´ıˇzelvu pohybuj´ıc´ıse po ploˇse, daj´ıkreslit r˚uzn´eobrazce sloˇzen´e vˇetˇsinou z ´useˇcek. Podstatou tvorby L-syst´em˚uje pˇrepisov´an´ıˇretˇezc˚upodle dan´ych gramatik. Kaˇzd´emu termin´aln´ımu symbolu (znaku, jeˇzse nepˇrepisuje) v ˇretˇezci je pˇriˇrazen jist´ygeometrick´y v´yznam,kter´yodpov´ıd´apˇr´ıkazu pro ˇzelvu v jazyce LOGO. Mezi tyto termin´aln´ısymboly patˇr´ınapˇr´ıklad znaky uveden´ev tabulce 3.1 [25]. Pomoc´ıposledn´ıch dvou pˇr´ıkaz˚u(push a pop) lze generovat obrazce, ve kter´ych prob´ıh´a vˇetven´ıstruktury. Zaj´ımav´eobrazce s frakt´aln´ıstrukturou se zaˇcnoutvoˇrit,jestliˇze v jazyce LOGO pouˇzijeme rekurzi, coˇzodpov´ıd´aiteraci v gramatice (na prav´estranˇepˇrepisovac´ıho pravidla gramatiky je nontermin´aln´ısymbol shodn´yse symbolem na lev´estranˇepravidla). Jednou z moˇznost´ı, jak klasick´eL-syst´emy rozˇs´ıˇrit, je pouˇzit´ıv´ıce ˇzelv a zaveden´ınov´ych symbol˚upro soubˇeˇzn´enebo samostatn´eˇr´ızen´ıtˇechto ˇzelv.

14 Symbol V´yznam F forward - posun ˇzelvy dopˇredu B back - posun ˇzelvy dozadu + right - natoˇcen´ıˇzelvy doprava - left - natoˇcen´ıˇzelvy doleva [ push - uloˇzen´ıpozice a orientace ˇzelvy na z´asobn´ık ] pop - obnoven´ıpozice a orientace ˇzelvy ze z´asobn´ıku

Tabulka 3.1: Termin´aln´ısymboly

Za pomoci L-syst´em˚ulze generovat frakt´aly, kter´ese podobaj´ırostlin´am, strom˚uma dalˇs´ımpˇr´ırodn´ım´utvar˚um. Sloˇzitˇejˇs´ıaplikace smˇeˇruj´ık vyuˇzit´ıtˇechto frakt´al˚uke generov´an´ı ploˇsn´ych i prostorov´ych (tj. objemov´ych) textur, vyuˇzit´ı nach´azej´ı tak´ev oblasti CAD syst´em˚u. L-syst´emy se d´avytvoˇrit tak´eSierpinsk´eho troj´uheln´ık, obr´azek 3.4, kter´ygeneruje gramatika:

symboly : A, B (kresli vpredˇ ) konstanty : +, −(rotace doprava, doleva o uhel´ ) start : A pravidla : A → B − A − B (3.6) B → A + B + A (3.7) uhel´ : 60◦

Obr´azek 3.4: Sierpinsk´ehotroj´uheln´ık

15 Mezi L-syst´emy patˇr´ıi Fibonacciho ˇc´ısla, jeˇzjsou generovan´agramatikou se startovac´ım symbolem A a pravidly:

A → AB (3.8) B → B (3.9) coˇzvygeneruje sekvenci: n = 0 : A n = 1 : B n = 2 : AB n = 3 : BAB n = 4 : ABBAB n = 5 : BABABBAB . . Pokud spoˇc´ıt´amed´elkuvˇsech ˇretˇezc˚u,dostaneme Fibonacciho posloupnost ˇc´ısel: 1 1 2 3 5 8 13 21 34 . . . .

3.2.1 Cantorova mnoˇzina Cantorova mnoˇzina (nˇekdyoznaˇcovan´aCantorovo diskontinuum) je mnoˇzinabod˚uz in- tervalu h0, 1i. Popsal ji nˇemeck´ymatematik Georg Cantor pˇri zkoum´an´ımnoˇzinbod˚u,ve spojitosti s konvergenc´ıfourierov´ych ˇrad. Zkonstruuje se tak, ˇze se dan´yinterval rozdˇel´ına tˇrishodn´eitervaly, kdy je vypuˇstˇen 1 2  1 2 interval 3 , 3 . Takto jsou z´ısk´any intervaly 0, 3 a 3 , 1 . V dalˇs´ıiteraci se postupuje stejnˇe- vyjme se vˇzdy prostˇredn´ıtˇretina intervalu. Intervaly, kter´ev mnoˇzinˇez˚ustaly jsou Cantorovou mnoˇzinou. Sedm iterac´ılze vidˇetna obr´azku 3.5.

Obr´azek 3.5: Cantorova mnoˇzina, 7 iterac´ı

1 2 1 2 Do mnoˇziny n´aleˇz´ıkrajn´ıbody interval˚u- 0, 1, 3 , 3 , 9 , 9 atd., kter´ych je spoˇcetnˇemnoho. Cantorova mnoˇzina je nespoˇcetn´a[12, 16], existuje proto jeˇstˇenespoˇcetnˇemnoho dalˇs´ıch bod˚u, kter´edo mnoˇziny n´aleˇz´ı. Gramatika pro vygenerov´an´ıCantorovy mnoˇziny v pravidlech ˇzelv´ıgrafiky (viz tabulka 3.1) m´atvar:

symboly : F,G (kresli vpred,ˇ posun vpredˇ ) start : F pravidla : F → F GF (3.10) G → GGG (3.11)

16 log 2 Hausdorffova dimenze Cantorovy mnoˇziny je D = log 3 ≈ 0, 6309. Zaj´ımavost´ıje, ˇzeCan- torova mnoˇzinaje mnoˇzinabod˚una Kochovˇekˇrivce, kter´eprot´ınaj´ıp˚uvodn´ıhorizont´aln´ı ´useˇcku. Pˇredstavuje tak´enejjednoduˇsˇs´ı frakt´aln´ı objekt, na kter´emlze vysvˇetlit pojmy frakt´aln´ıgeometrie (zmˇena mˇeˇr´ıtka, sobˇepodobnost, . . . ). Cantorovu mnoˇzinu z´ısk´ametak´e ˇrezem nespojitou Juliovou mnoˇzinou.

3.2.2 Kochova vloˇcka Dalˇs´ımzn´am´ymL-syst´emem je Kochova vloˇcka (kˇrivka) pojmenovan´apo Helge von Ko- chovi. Konstrukce, kterou lze vidˇet na obr´azku 3.6, se provede tak, ˇze se ´useˇcku d´elky 1 1, rozdˇel´ı na tˇriˇc´asti o d´elce 3 . Prostˇredn´ı tˇretinu je pot´enahrazena rovnostrann´ym troj´uheln´ıkem. Stejn´ypostup je aplikov´anna vˇsechny ˇctyˇrivznikl´e´useˇcky. Takto se po- kraˇcuje aˇzdo nekoneˇcna.Prvn´ıkrok, v tomto pˇr´ıpadˇe´useˇcka d´elky1, se naz´yv´ainici´ator. Utvar´ v druh´emkroku, kter´ymje ´useˇcka nahrazov´anase naz´yv´agener´ator.Generov´an´ı mnoˇziny spoˇc´ıv´av tom, ˇzev kaˇzd´emkroku jsou nahrazeny vˇsechny inici´atory gener´atorem. Detailnˇeji viz [12].

Obr´azek 3.6: Kochova vloˇcka, konstrukce

Kˇrivka m´anˇekolik zaj´ımav´ych vlastnost´ı, mnoho z nich je shodn´ych s Cantorovou mnoˇzinou. Je tvoˇrena ˇctyˇrmi ˇc´astmi, kter´ejsou shodn´es p˚uvodn´ımnoˇzinou, ale zmenˇsen´e v mˇeˇr´ıtku 1:3. Kˇrivka neobsahuje ˇz´adn´e´useˇckynebo hladk´esegmenty, rovnˇeˇzv ˇz´adn´em bodˇenem´aderivaci. V´ypoˇctem se d´azjistit, ˇzed´elka k-t´eiterace pˇrikonstrukci mnoˇziny je 4 k rovna ( 3 ) , pro k → ∞ je tedy jej´ıd´elka rovna nekoneˇcnu a kˇrivka zab´ır´anulovou plochu. log 4 Hausdorffova dimenze kˇrivky je D = log 3 ≈ 1, 2619.

17 Kochovu vloˇckulze vygenerovat, za pouˇzit´ı pravidel ˇzelv´ı grafiky (viz tabulka 3.1), gramatikou s jedin´ympˇrepisovac´ımpravidlem:

symboly : F (kresli vpredˇ ) konstanty : +, − (rotace doprava, doleva) start : F − −F − −F (3.12) pravidlo : F → F + F − −F + F (3.13)

Kochova vloˇcka byla pokl´ad´anaza “matematick´emonstrum”. V roce 1893 Charles Her- mite v dopise napsal [12]: “odvrac´ımse ve strachu a s hr˚uzouod tohoto b´ıdn´ehomoru funkc´ıbez derivace. (anglicky turning away in fear and horror from this lamentable plague of functions with no derivatives)”.

3.2.3 Hilbertova kˇrivka Hilbertova kˇrivka je jedn´ımz nejjednoduˇsˇs´ıch frakt´al˚u.Poprv´ebyla pops´anav roce 1891 nˇemeck´ymmatematikem Davidem Hilbertem. Pˇrestoˇze je tvoˇrena na sebe navazuj´ıc´ımi ´useˇckami (jednodimenzion´aln´ıobjekt), vyplˇnuje celou plochu. Topologick´adimenze Hilber- tovy kˇrivky DT = 1, Hausdorffova dimenze D = 2, podobnˇejako u Mandelbrotovy mnoˇziny, n 1 kter´avˇsaknevyplˇnuje celou rovinu viz kapitola 3.1.2. Jej´ıd´elka je rovna 2 − 2n , coˇzzna- men´a,ˇze roste exponenci´alnˇes n (poˇcet iterac´ı).

Obr´azek 3.7: Hilbertova kˇrivka

Zkonstruov´an´ı Hilbertovy kˇrivky je sloˇzitˇejˇs´ı neˇzv pˇr´ıpadˇeKochovy vloˇcky. Kˇrivka vytvoˇren´av n-t´eiteraci je sloˇzena ze ˇctyˇrkˇrivek vznikl´ych v n − 1 iteraci. Aby na sebe segmenty navazovaly, je nutno je otoˇcita zmenˇsitna polovinu. Slovn´ıpopis ˇctyˇrˇc´ast´ıA, B, C, D Hilbertovy kˇrivky nalezneme v tabulce 3.2 [25] a lze jej tak´ejednoduˇsˇse pˇrev´est na algoritmus programovac´ıhojazyka.

18 Symbol V´yznam A D(doleva)A(dol˚u)A(doprava)B B C(nahoru)B(doleva)B(dol˚u)A C B(doprava)C(nahoru)C(doleva) D A(dol˚u)D(doleva)D(nahoru)C

Tabulka 3.2: Z´akladn´ıˇc´astiHilbertovy kˇrivky

Gramatika pro vygenerov´an´ı Hilbertovy kˇrivky vyj´adˇren´asymboly ˇzelv´ı grafiky (viz tabulka 3.1) m´atvar:

symboly : L, R konstanty : F, +, − (kresli vpred,ˇ rotace doleva, doprava) start : L pravidla : L → +RF − LF L − FR + (3.14) R → −LF + RFR + FL− (3.15)

Na obr´azku 3.8 je vidˇetsouˇcasn´ezobrazen´ıprvn´ı aˇztˇret´ı iterace Hilbertovy kˇrivky. Jejich vlastnost´ıse vyuˇz´ıv´ave v´ıcerozmˇern´ych datab´az´ıch, kde je aplikov´ana k mapov´an´ı dat do jedn´edimenze nam´ıstoz-kˇrivky. D˚uvodem je, ˇzetakov´atomapovac´ıfunkce l´epe zachov´av´apozice prvk˚u.Informace o aplikaci je moˇzno naj´ıtv pr´aci J. Lawdera a P. Kinga, napˇr.“Querying Multi-dimensional Data Indexed Using the Hilbert Space-Filling Curve”. Takov´etodatab´azov´ealgoritmy jsou chr´anˇeny patenty, podobnˇejako algoritmy pro frakt´aln´ı anal´yzu a kompresi obrazu, kter´aje zm´ınˇena v kapitole 3.3.

Obr´azek 3.8: Tˇriiterace Hilbertovy kˇrivky

19 3.3 IFS frakt´aly

N´azev IFS syst´em˚uje odvozen z p˚uvodn´ıhoanglick´eho oznaˇcen´ı , ˇcesky lze tento n´azev pˇreloˇzit jako syst´em iterovan´ych funkc´ı. Prvn´ı publikace, kter´ese t´ykaly IFS syst´em˚u, vydali v roce 1985 Demko a v roce 1987 Barnsley. IFS je generativn´ı metoda vytv´aˇren´ıfrakt´al˚u,kterou ˇrad´ımemezi deterministick´e. Algoritmus pro generov´an´ı IFS frakt´al˚uvˇsak m˚uˇzeb´ytjak deterministick´y,tak nedeterministick´y(tj. stochastick´y,viz kapitola 5.3.1, algoritmus RWA). V syst´emech iterovan´ych funkc´ı IFS se pro tvorbu frakt´aln´ıch obrazc˚upouˇz´ıv´atak- zvan´agenerativn´ımetoda [3, 25]. Tato se pouˇz´ıv´atak´eke kompresi bitmapov´ych obraz˚u, zavedeme-li ke generativn´ımetodˇetakzvanou inverzn´ı´ulohu. Pˇrigenerov´an´ıfrakt´al˚upo- moc´ıIFS syst´em˚use pˇriv´ypoˇctech pouˇz´ıv´an´ahodn´ych prvk˚u,tj. metoda je stochastick´a. Deterministick´evytv´aˇren´ıse pouˇz´ıv´atak´e,oba pˇr´ıstupy vˇsakvedou ke stejn´emu v´ysledn´emu frakt´alu, pouˇzije-li se dostateˇcn´ypoˇcet iterac´ı. Syst´emy iterovan´ych funkc´ıtvoˇr´ıvelmi d˚uleˇzitouskupinu line´arn´ıch deterministick´ych frakt´al˚u, kter´emaj´ıv poˇc´ıtaˇcov´egrafice v´ıce uplatnˇen´ı.Praktick´yn´avod jak pouˇz´ıvat IFS pro generov´an´ı rastrov´ych textur je v Barnsleyho knize Fractals Everywhere [3]. IFS se skuteˇcnˇepro tuto ˇcinnost pouˇz´ıvaj´ıi v bˇeˇzn´ych aplikac´ıch, jako napˇr.poˇc´ıtaˇcov´ehry, nebo v aplikac´ıch slouˇz´ıc´ıch k tvorbˇeprocedur´aln´ıch tˇeles. Pro tvorbu rastrov´ych obr´azk˚uexistuje plugin IFS Composer, pro editor GIMP. Detailn´ı popis vyuˇz´ıt´ı IFS viz je moˇznonaj´ıt na webov´ych str´ank´ach Root.cz [25], d´ılXXX a d´ale a samozˇrejmˇev knih´ach Michaela Barnsleyho [3, 2]. Ve skupinˇeIFS frakt´al˚uje moˇzn´enal´ezt ´utvary charakteristick´epro jin´eskupiny frakt´al˚u napˇr.Sierpinsk´ehokobereˇcek, obr´azek 3.10 nebo Mengerovu houbu, viz obr´azek 3.11. IFS, kter´ejsou generalizac´ı Rhamovy kˇrivky [22], m˚uˇzeme rozdˇelit podle v´ysledn´ehovzhledu, kdy dost´av´amevˇetˇsinou vzhled bl´ızk´yrostlin´am, napˇr. obr´azek 3.9, nebo vizu´alnˇeatraktivn´ıtzv. Fractal Flames popsan´ev kapitole 3.3.3.

Obr´azek 3.9: Kapradina vygenerovan´aIFS

20 Druhou moˇznost´ıjak IFS kategorizovat m˚uˇzeb´yt jejich rozdˇelen´ıpodle pouˇzit´ehoge- neruj´ıc´ıho algoritmu. Nˇekter´ejsou pops´any v kapitole 5, napˇr.:

• Algoritmus n´ahodn´eproch´azky (Random Walk Algorithm),

• Deterministick´yalgoritmus (Deterministic Iteration Algorithm),

• Algoritmus pro generov´ani minima pixel˚u(Minimal Plotting Algorithm).

V´yhodnost uspoˇrad´an´ıtransformac´ıdo IFS syst´emu vy´ustilave vznik nov´eho grafick´eho form´atu FIF, kter´yvyuˇz´ıv´aIFS komprimaci a dosahuje lepˇs´ıch v´ysledk˚uneˇzbˇeˇznˇepo- uˇz´ıvan´yform´atJPEG. FIF form´atvˇsak nen´ı pˇr´ıliˇsrozˇs´ıˇren pro svou vysokou v´ypoˇcen´ı n´aroˇcnost, zejm´ena pˇri komprimaci (aˇznˇekolik ˇr´ad˚uproti JPEG). Nen´ıproto vhodn´ypro pouˇzit´ıkompresn´ıho algoritmu ve spotˇrebn´ıelektronice. Dalˇs´ımfaktorem hovoˇr´ıc´ımproti ˇsirˇs´ımu vyuˇzit´ıform´atuFIF jsou patenty chr´an´ıc´ıpostup hled´an´ıtransformac´ı, kter´evlastn´ı M. Barnsley a jeho spolupracovn´ıci. Oproti tomu dekompresn´ıalgoritmy jsou volnˇeˇsiˇriteln´e. Syst´emy iterovan´ych funkc´ıjsou mnoˇziny zobrazen´ıv rovinˇeˇciprostoru a IFS frakt´al je pak pops´annˇekolika zobrazen´ımi[25, 3] oznaˇcovan´ymi φ1, . . . , φn. Tyto zobrazen´ıtvoˇr´ı mnoˇzinuzobrazen´ı Φ, kter´aobsahuje jednotliv´apouˇzit´azobrazen´ı.Vˇetˇsinou jde o line´arn´ı transformace (posun, zkosen´ı,zmˇenamˇeˇr´ıtka atd.), nˇekdy se vˇsak pouˇz´ıvaj´ıtak´e neline´arn´ı transformace (napˇr.ohyb, zkrut, . . . ). V IFS se objevuje pojem “pevn´eho bodu” (tj. takov´y,kter´yse aplikac´ınˇejak´efunkce f mapuje s´amna sebe), jeˇzje v´ychoz´ım bodem pro generov´an´ısyst´emu iterovan´ych funkc´ı. Z´akladn´ımi transformacemi jsou kontrakce (zkracuje vzd´alenostimezi body) a expanze (zvˇetˇsen´ıvzd´alenostimezi body), aˇckoliv expanze je vyuˇz´ıv´anam´enˇe.Pro danou transfor- maci existuje pr´avˇejeden pevn´ybod. IFS mohou b´ytdefinovany jak´ymkoliv pros- torem, kter´ym´adefinov´anpojem vzd´alenosti [25].

21 3.3.1 Sierpinsk´ehokobereˇcek Sierpinsk´ehokobereˇcek, obr´azek 3.10, je rovinn´yfrakt´al,kter´yjako prvn´ıpopsal Waclav Sierpinski v roce 1916. Je to jedna z generalizac´ıCantorovy mnoˇziny do dvourozmˇern´eho prostoru. Sierpinsky uk´azal, ˇzeje to univerz´aln´ıkˇrivka, ve kter´ejak´ykoliv 1D graf zobrazen´y do 2D plochy je homeomorfn´ıs urˇcitoupodmnoˇzinou kobereˇcku. Tento ´utvar je modifikac´ıSierpinsk´eho troj´uheln´ıku, kter´ygenerovan´yL-syst´emem zn´a- zorˇnuje obr´azek 3.4. Z´akladn´ımtvarem nam´ıstotroj´uheln´ıkuje pouˇzitˇctverec. Konstrukce se prov´ad´ıtak, ˇze se jednotkov´yˇctverec rozdˇel´ına devˇet stejn´ych d´ıl˚ua odstran´ıse prostˇredn´ız nich. Stejn´ymzp˚usobem se postupuje s osmi zb´yvaj´ıc´ımiˇctverci do nekoneˇcna (v pˇr´ıpadˇeprogramu do maxim´aln´ıho poˇctu iteraˇcn´ıch krok˚u).Hausdorffova log 8 dimenze (vzorec 2.5) ´utvaru D = log 3 ≈ 1, 8928. Sierpinsk´ehokobereˇcek m´anekoneˇcnˇe velk´yobvod, avˇsak nekoneˇcnˇemalou plochu.

Obr´azek 3.10: Sierpinsk´ehokobereˇcek vygenerovan´yIFS

3.3.2 Mengerova houba Mengerova houba byla poprv´epops´anaKarlem Mengerem v roce 1926. Je zobecnˇen´ımSier- pinsk´eho koberce v trojrozmˇern´emprostoru a zachov´av´asi jeho vlastnosti (je univerz´aln´ım objektem pro vˇsechny kˇrivky a grafy). Mengerova houba vznik´apostupn´ym dˇelen´ımkrychle vˇzdyna 27 menˇs´ıch krychl´ı,vˇzdy se odebere 7 krychl´ı,kter´ese nach´azej´ıuprostˇred stˇen a uvnitˇrkrychle. Tento postup se opakuje do nekoneˇcna.Prvn´ıˇctyˇri iterace zn´azorˇnuje obr´azek 3.11. Poˇcet krychl´ınar˚ust´a s mocninou 20n, kde n je poˇcet iteraˇcn´ıch krok˚u.Mengerova houba m´anekoneˇcnˇevelk´y log 20 povrch, ale nekoneˇcnˇemal´yobjem. Jej´ıHausdorffova dimenze (vzorec 2.5) D = log 3 ≈ 2, 726833 .

22 Obr´azek 3.11: Mengerova houba

3.3.3 Fractal Flames Tuto skupinu frakt´al˚uned´avno pojmenoval [5]. Jedn´ase o generalizaci IFS, kter´abyla vytvoˇrena s ohledem na vizu´aln´ıkvalitu v´ysledn´ych obr´azk˚u, napˇr.obr´azek 3.12. Menˇs´ıd˚uraz je kladen na matematickou ˇcistotualgoritmu [25].

Obr´azek 3.12: Fractal Flame

Oproti klasick´ymIFS jsou pouˇz´ıv´any pouze nˇekter´efunkce, zejm´ena neline´arn´ı.Z´avislost svˇetlosti pixelu v obrazci pˇrijeho “z´asahu” je logaritmick´aa pˇrivykreslov´an´ıse vyuˇz´ıv´a symetrie. U tohoto druhu frakt´al˚uje rozˇs´ıˇrenaskupina IFS o dalˇs´ıfunkce [25, 5]. Pro oba druhy (IFS i “flame”) se ke generov´an´ıpouˇz´ıv´aalgoritmus n´ahodn´eproch´azky(RWA viz kapitola 5.3.1), j´ımˇzse na jednotliv´ebody vyb´ıraj´ıa aplikuj´ıtransformace. Tyto transformace jsou vˇsakoproti IFS sloˇzen´ez jednoduch´eline´arn´ıa sloˇzitˇejˇs´ıneline´arn´ıfunkce zvan´e variace.

23 Oznaˇcen´ıfunkce V´yraz P˚uvodn´ın´azev

V0(x, y) (x, y) linear

V1(x, y) (sin x, sin y) sinusoidal x y V2(x, y) ( r2 , r2 ) spherical

V3(x, y) (r cos(Θ + r), r sin(Θ + r)) swirl

V4(x, y) (r cos(2Θ), r sin(2Θ)) horseshoe Θ V5(x, y) ( π , r − 1) polar

V6(x, y) (r sin(Θ + r), r cos(Θ − r)) handkerchief

V7(x, y) (r sin(Θr), −r cos(Θr)) heart sin(πr) cos(πr) V8(x, y) (Θ π , Θ π ) disc cos Θ+sin r sin Θ−cos r V9(x, y) ( r , r ) spiral sin Θ V10(x, y) ( r , r cos Θ) hyperbolic

V11(x, y) ((sin Θ)(cos r), (cos Θ)(sin r)) diamond 3 3 V12(x, y) (r sin (Θ + r), r cos (Θ − r)) ex √ Θ √ Θ V13(x, y) ( r cos( 2 + Ω), r sin( 2 + Ω)) julia 2r V16(x, y) ( (r+1) (x, y) fisheye

V20(x, y) (cos(πx) cosh(y), − sin(πx) sinh(y)) cosine

Tabulka 3.3: Variace pro Fractal Flame

Neline´arn´ıfunkce zp˚usobuj´ı,ˇzese ve v´ysledn´emfrakt´aluˇcasto objevuj´ıˇc´asti ve tvaru spir´al, vln atd. Jako dalˇs´ıse pouˇz´ıv´asymetrie, at’ uˇzstˇredov´anebo osov´a. Obarvov´an´ıpixel˚uje oproti IFS pozmˇenˇenotak, aby byly zv´yraznˇeny zaj´ımav´eˇc´asti frakt´alu. Mezi barevnost´ı a poˇctem “z´asah˚u”pixel˚uje logaritmick´az´avislost. Moˇzn´eje i obarven´ıpodle pouˇzit´etransformace. Prostor obr´azkuje rozˇs´ıˇreno tˇret´ırozmˇer,pˇredsta- vuj´ıc´ıindex do barevn´epalety ˇci odst´ın barvy. V klasick´ych IFS je transformaˇcn´ımatice A tvoˇrenaˇsesti koeficienty (ai, bi, ci, di, ei, fi). U Fractal Flame je pˇrid´ana neline´arn´ıfunkce. Draves zavedl afinn´ıfunkci 3.16 [5], kde Vj je pr´avˇevariac´ı,kter´amˇen´ıvzhled frakt´alu specifick´ymzp˚usobem.

Fi(x, y) = Vj(aix + biy + ci, dix + eiy + fi) (3.16)

Pˇr´ıklady variac´ı Vj, jeˇznavrhl Scott Draves, jsou uvedeny v tabulce 3.3. Jedn´ase o kom- binace napˇr.goniometrick´ych funkc´ıa jsou oznaˇcov´any Vn(x, y), kde n nab´yv´ahodnot 0 aˇz20 [25, 5]. V´yznamsymbol˚uv tabulce 3.3 je n´asleduj´ıc´ı: r = px2 + y2 y Θ = arctan( x ) Ω = 0 nebo π (na z´akladˇen´ahodn´eho ˇc´ısla).

24 Dalˇs´ımodifikac´ızavedenou Scottem Dravesem je jiˇzv´yˇsezm´ınˇen´alogaritmick´az´avislost barvov´eintenzity pixel˚una poˇctu jejich z´asah˚u. T´ımto je dosaˇzeno zv´yraznˇen´ıi tˇech ˇc´ast´ı frakt´alu, kter´eby byly pouˇzit´ım line´arn´ı z´avislosti pˇr´ıliˇstmav´e. Tak´epˇrekryt´ı svˇetl´eho motivu tmavˇs´ımnezp˚usob´ıjeho “zmizen´ı” [25, 5]. Pˇri poˇctuz´asah˚unapˇr. 1000 (svˇetlejˇs´ı) a 100 (tmavˇs´ı)je pˇri pˇrekryt´ıobrazc˚upoˇcet z´asah˚uroven 1100, pˇrilogaritmov´an´ıje vˇsak rozd´ıl v hodnotˇemezi log 1000 a log 1100 mal´ya tud´ıˇzi v´ysledn´abarva se liˇs´ıjen velmi m´alo.Logaritmick´eobarvov´an´ıumoˇzˇnuje odliˇsen´ınepˇr´ıliˇsrozd´ıln´ych intenzit v jedn´eˇc´asti obrazce od ˇr´adovˇemenˇs´ıch intenzit, avˇsak tak´esi bl´ızk´ych intenzit v ˇc´astijin´e. T´ımto vznik´a dalˇs´ıefekt - obr´azkyse jev´ıtrojrozmˇern´e,pˇrestoˇze jsou tvoˇreny pouze ploˇsn´ymi variacemi. Pro ilustraci jsou uvedeny obr´azky 3.12, 3.13, kde lze prostorovou iluzi pozorovat.

Obr´azek 3.13: Fractal Flame, Heart

Technika obarvov´an´ı pixel˚uje oproti IFS rozˇs´ıˇrena. St´ale ˇc´asteˇcnˇez´avis´ı na pouˇzit´e transformaci, pˇrestoˇze se pouˇz´ıv´apoˇctu z´asah˚ua hustoty pixel˚u[5, 25]. I pˇreszd´anliv´y3D vzhled z˚ust´av´avnitˇrn´ıstruktura frakt´al˚unepr˚uhledn´a.Tohoto je dosaˇzeno pˇrid´an´ımtˇret´ı souˇradnice k 2D transformaci. Tˇret´ısouˇradn´ıc´ıje barva pixelu (intenzita, pˇr´ıpadnˇeindex do barvov´epalety). V´ypoˇcet barvy se prov´ad´ıaˇzv pr˚ubˇehu iteraˇcn´ıho cyklu. Jej´ıpoˇc´ateˇcn´ıintenzita, ˇci in- dex c, je zvolena n´ahodnˇev rozsahu 0 aˇz1. V kaˇzd´emkroku se pak prov´ad´ıpˇrepoˇcet barvy c + ci nebo intenzity podle vztahu c = 2 , coˇzm´aza n´asledek, ˇze nejv´ıce pouˇz´ıvan´etransfor- mace nejv´ıceovlivn´ıbarvu pixelu. V´ysledn´abarva je souˇctem barvy novˇevygenerovan´eho pixelu s barvou pˇredchoz´ıa vznikaj´ıtakto postupn´ebarevn´epˇrechody zp˚usoben´e“pamˇet´ı syst´emu”. Symetrie u tohoto druhu frakt´aluje vyuˇz´ıv´anapomˇernˇeˇcasto. Mus´ıvˇsak b´ytpouˇzito vhodn´ych prostˇredk˚u, jinak doch´az´ı ke “ztr´atˇe” barevnosti v´ysledn´eho obrazce, jak lze vidˇet na obr´azku 3.14 [5]. Barvy jsou zpr˚umˇerov´any a t´ımto ztr´ac´ıfrakt´alna sv´epestrosti. Reˇsen´ımtohotoˇ probl´emu je ponech´an´ıp˚uvodn´ıbarvy pixelu i po aplikaci funkc´ısymetrie.

25 Volba vhodn´esymetrie se prov´ad´ınejˇcastˇejipo v´ypoˇctusouˇradnic pixel˚u[25], kdy jsou vykresleny kopie pixelu v pozic´ıch osovˇeˇcistˇredovˇesoumˇern´ych s p˚uvodnˇevypoˇcten´ym pixelem. Dalˇs´ımoˇznost´ıje v´ybˇervhodn´ych funkc´ıpˇriv´ypoˇctu frakt´alu.Tato moˇznostse vyuˇz´ıv´aˇcastˇejikv˚uli pˇrirozenˇejˇs´ımu vzhledu, protoˇze je v tomto pˇr´ıpadˇesymetrie m´enˇe dokonal´a.Osov´asymetrie spoˇc´ıv´ave zmˇenˇeznam´enka jedn´eze souˇradnic, stˇredov´asymetrie se prov´ad´ıaplikac´ıfunkce, kter´aprovede rotaci bodu kolem poˇc´atku souˇradn´ehosyst´emu. Pravdˇepodobnost aplikac´ısymetrick´ych funkc´ıby mˇela b´ytrovna souˇctupravdˇepodobnost´ı ostatn´ıch funkc´ı[5, 25].

Obr´azek 3.14: Nevhodnˇeoˇsetˇren´asymetrie

Fractal Flame dosud nenaˇsel sv´euplatnˇen´ıv nˇekter´emz technick´ych obor˚u, vyuˇz´ıv´ase pˇredevˇs´ımpro svou vizu´aln´ıefektnost v´yhradnˇek dekorativn´ım´uˇcel˚um.

26 3.4 Stochastick´efrakt´aly(nepravideln´efrakt´aly)

Dalˇs´ı velkou skupinou jsou frakt´aly stochastick´e.Zat´ımco vˇsechny pˇredchoz´ı typy byly v urˇcit´em smyslu symetrick´e, nepravideln´efrakt´alyvn´aˇsej´ıpˇrigenerov´an´ıfrakt´alu do al- goritmu n´ahodu a jsou pouze tzv. sobˇepˇr´ıbuzn´e [25]. Tento typ frakt´al˚utak´eumoˇzˇnuje nejlepˇs´ıpopis pˇr´ırodn´ıch objekt˚u. Pˇrigenerov´an´ıtvar˚urostlin klasick´ymiL-syst´emy nebo IFS syst´emy je v´ysledek perfektnˇesymetrick´y, avˇsakve skuteˇcnosti je tomu zcela jinak. Strom rostouc´ıv pˇr´ırodˇem´anepravideln´ed´elky a tlouˇst’ky vˇetv´ı,´uhel r˚ustu tak´enen´ıvˇzdy stejn´y,strom rostouc´ıv lese m´ajin´ytvar neˇztent´yˇzstrom rostouc´ıosamocenˇeapod. Proto je vhodn´epˇrigenerov´an´ı frakt´al˚uuplatnit prvky n´ahody. Zp˚usob,jak´ymse n´ahodnost bude pod´ılet pˇrigenerov´an´ıfrakt´al˚u,bude vˇzdyurˇcovat tvar frakt´alui jeho Hausdorffovu dimenzi. Pro generov´an´ın´ahodn´ych ˇc´ısel se pouˇz´ıv´anapˇr´ıklad Gaussovsk´ygener´atornebo gener´atorb´ıl´eho ˇsumu. N´ahodn´efrakt´alylze vytv´aˇretv´ıcezp˚usoby. Prvn´ızp˚usobspoˇc´ıv´av simulaci Brownova pohybu v ploˇse nebo v prostoru. Druh´yzp˚usobspoˇc´ıv´av pouˇzit´ı metody pˇresouv´an´ı stˇredn´ıho bodu a tˇret´ımoˇznost´ıje vyuˇzit´ıspektr´aln´ısynt´ezy.

3.4.1 Simulace Brownova pohybu Simulace Brownova pohybu vytv´aˇr´ıfrakt´aln´ıobjekt, jehoˇzHausdorffova dimenze je ´umˇern´a absolutn´ı velikosti zmˇeny pˇrijednom kroku iterace. Tato metoda se pouˇz´ıv´anapˇr´ıklad pˇri generov´an´ıtok˚uˇrek, nen´ıvˇsak vhodn´apro trojrozmˇern´eobjekty ze stejn´ehod˚uvodu, jak´yvedl k probl´em˚umu trojrozmˇern´ych syst´em˚uiterovan´ych funkc´ı IFS [12, 25, 24]. Vytvoˇren´ymodel se skl´ad´az jednotliv´ych bod˚ua dneˇsn´ıgrafick´eakceler´atoryjsou sp´ıˇse optimalizov´any na vykreslov´an´ıtroj´uheln´ık˚ua dalˇs´ıch ploˇsn´ych entit. Tak´evytv´aˇren´ıobraz˚u dif´uze je zaloˇzeno na Brownovˇepohybu.

Simulace dif´uze Simulace dif´uzeje minim´alnˇevyuˇz´ıvan´ametoda [25], kter´aje vˇsakschopna vytv´aˇretsloˇzit´e pˇr´ırodn´ı´utvary. Nejˇcastˇeji se jedn´ao modely strom˚u,keˇr˚u,tr´avy. Prostorov´e´utvary ge- nerovan´etouto metodou charakterizuje ˇc´asteˇcn´asobˇepodobnost a velk´atvarov´asloˇzitost. Rostlinu vygenerovanou simulac´ıdif´uze lze vidˇetna obr´azku 3.15. Schopnosti metody rozˇsiˇruje nov´ametoda n´avrhu omezuj´ıc´ıch podm´ınek pro generov´an´ı prostorov´ych frakt´al˚u, kter´aje uvedena na Root.cz [25]. Omezuj´ıc´ı podm´ınky definuj´ı charakteristiku vytv´aˇren´ych ´utvar˚u, kdeˇzto parametry algoritmu ovlivˇnuj´ıcelkov´yvzhled modelu, jeho hustotu, ale tak´ejeho tvar. Vygenerovan´e ´utvary jsou sloˇzeny z oriento- van´ych element´arn´ıch prvk˚uplochy, ˇci neorientovan´ych bod˚u,nach´azej´ıc´ıch se v prostoru E3 (ˇc´astice) nebo v ploˇse E2 (body, po pˇrepoˇctupixely). Dimenze tˇechto frakt´al˚use m˚uˇze pohybovat od jedn´edo tˇr´ı. Metoda nen´ıvyuˇz´ıv´ana pro tvorbu pˇr´ırodn´ıch tˇeles z n´asleduj´ıc´ıch d˚uvod˚u[25]:

• Vytv´aˇren´ımodelu je sice algoritmicky jednoduch´e,avˇsakˇcasovˇevelmi n´aroˇcn´e. Ca-ˇ sovou sloˇzitostlze minimalizovat omezen´ımprostoru, v nˇemˇzse nov´ebody vytv´aˇrej´ı.

• Frakt´alje tvoˇren mnoˇzinou jednotliv´ych bod˚unebo ploˇsekbez vz´ajemn´ych vazeb. Pˇrevod tˇechto primitiv je obt´ıˇzn´y,jelikoˇzvznik´avelk´emnoˇzstv´ıpolygon˚u,kter´eje nutno vykreslit.

27 Obr´azek 3.15: Rostlina vygenerovan´apomoc´ısimulace dif´uze

Pomoc´ısimulace dif´uzeje moˇznovygenerovat mnoho zaj´ımav´ych obr´azk˚us frakt´aln´ı strukturou. Metoda je zaloˇzena na pohybu ˇc´astic v omezen´em nebo neomezen´emprostoru [25]. Z pevn´ych bod˚uv rovinˇeˇci prostoru postupnˇe“vyr˚ustaj´ı”dalˇs´ıbody, kter´elze k jiˇz vytvoˇren´emu ´utvaru pˇrid´avat dvˇemazp˚usoby:

• C´asticeˇ se vytvoˇr´ı na n´ahodn´emm´ıstˇea simuluje se jej´ı dalˇs´ı pohyb v prostoru vyhrazen´em pro frakt´al.Pokud se ˇc´astice dotkne jiˇzexistuj´ıc´ıˇc´asti´utvaru, pˇripoj´ı se k nˇemu a vygeneruje se dalˇs´ıˇc´astice. Princip vych´az´ı z Brownova pohybu, viz obr´azek 3.16.

• Na n´ahodn´ych m´ıstech se postupnˇevytv´aˇrej´ı statick´eˇc´astice. Pokud se dotknou st´avaj´ıc´ıho ´utvaru, jsou k nˇemu pˇripojeny, jinak zaniknou. Tato technika nen´ıplnˇe v souladu s Brownov´ympohybem, vytv´aˇren´ımnov´ych ˇc´asticse aproximuje trajektorie jedn´eˇc´astice, avˇsakpouze v nˇekter´ych ˇcasov´ych bodech pohybu.

Urychlen´ısimulace dif´uze Urychlen´ımetody simulace dif´uzeje vhodn´ekv˚uli n´ızk´eefektivnosti jej´ıho prov´adˇen´ına poˇc´ıtaˇc´ıch. Zobrazen´ıfrakt´alumetodou popsanou v´yˇse je ˇcasovˇen´aroˇcn´e.Kratˇs´ıdoby pro- cesu generov´an´ılze dos´ahnout omezen´ımprostoru, ve kter´emjsou vytv´aˇreny nov´ebody. D˚uvodem je zv´yˇsen´ıpravdˇepodobnosti dotyku nov´eˇc´astice s existuj´ıc´ımobrazcem [25]. Pro vytv´aˇren´ıstrom˚ua keˇr˚use omezen´ıprostoru realizuje pomoc´ıosovˇeorientovan´eho kv´adru. Jeho pozice se postupnˇemˇen´ı,vˇetˇsinouse posouv´avzh˚uru od z´akladny po vygene- rov´an´ıdostateˇcn´ehopoˇctu ˇc´astic. Kv´adrje d´alemoˇzno dˇelitna podoblasti, kter´ese mohou pˇrekr´yvat v z´avislosti na poˇzadovan´em v´ysledku. Dalˇs´ı moˇznost´ı urychlen´ı urychlen´ı v´ypoˇctuje diskretizace prostoru pro generov´an´ı ˇc´astic. M´ıstospojit´eplochy ˇciprostoru je pouˇzitapevnˇedan´amˇr´ıˇzka. Souˇradnice i, j, k pak plnˇeurˇcuj´ıpozici ˇc´asticev mˇr´ıˇzce. Vzd´alenost dvou bod˚upˇrejde v urˇcen´ınejmenˇs´ıho poˇctu

28 Obr´azek 3.16: Dif´uzevygenerovan´az jednoho bodu

bunˇekmezi nimi, coˇzje znaˇcnˇerychlejˇs´ıneˇzv´ypoˇcet Euklidovsk´evzd´alenostive spojit´em prostoru. Dotyk ˇc´astics vygenerovan´ym ´utvarem m˚uˇzeb´ytd´ıkydiskretizaci prostoru ˇreˇsen pouze jako testov´an´ınejbliˇzˇs´ıho okol´ıbodu podle toho, zda se nach´az´ımev rovinˇeˇciprostoru. V rovinˇese testuje ˇctyˇrokol´ınebo osmiokol´ıbodu, v prostoru pak ˇsestiokol´ı, osmn´actio- kol´ıˇci 26 sousedn´ıch bod˚u, podle toho v kolika indexech se liˇs´ısouˇradnice nov´ehobodu a testovan´ych bunˇek.

3.4.2 Metoda pˇresouv´an´ıprostˇredn´ıho bodu Metoda pˇresouv´an´ıprostˇredn´ıhobodu (Midpoint Displacement Method, MDM) patˇr´ımezi typick´emetody generov´an´ıstochastick´ych frakt´al˚uploˇsn´ych i prostorov´ych. V poˇc´ıtaˇcov´e grafice se velmi ˇcasto pouˇz´ıv´ak vygenerov´an´ıtakzvan´ehov´yˇskov´ehopole (height field) a n´asledn´evizualizaci pˇr´ırodn´ıkrajiny. Volbou maxim´aln´ıodchylky ∆, kter´aurˇcuje Hausdorf- fovu dimenzi vytvoˇren´ekrajiny pˇriposunu prostˇredn´ıhobodu, lze mˇenit celkov´yr´azpovrchu od zvlnˇen´ekrajiny aˇzpo velehory s rozeklan´ymivrcholky, viz obr´azek 3.17. Rozˇs´ıˇren´ımje moˇzno touto medotou generovat re´alnˇevypadaj´ıc´ımraky [12, 25, 1], pˇr´ıpadnˇemodifikac´ı algoritmu na ploˇsn´ylze generovat obrazce zvan´eplazma [20].

29 Obr´azek 3.17: Krajina - pˇresouv´an´ıprostˇredn´ıho bodu

Nejjednoduˇsˇs´ıaplikac´ıMDM je aplikace postupu na ´useˇcku. Pˇr´ıklad dˇelen´ı,ilustrovan´y obr´azkem 3.18, lze slovnˇepopsat takto [25, 14]:

• mˇejme horizont´aln´ı´useˇcku,

• pro zadan´ypoˇcet iterac´ı imax opakujeme:

i – nalezneme prostˇredn´ıbod Ps kaˇzd´e´useˇcky (segmentu) v ´utvaru, i – posuneme prostˇredn´ıbod Ps ve vertik´aln´ımsmˇeruo n´ahodnou hodnotu udanou koeficientem ∆i, – zredukujeme koeficient ∆i pro pˇr´ıˇst´ıiteraci.

Obr´azek 3.18: MDM - 9 iterac´ıdˇelen´ı´useˇcky

Zmˇena ∆ Hurstov´ymexponentem D´ıky tomu, ˇze se v kaˇzd´emkroku sniˇzuje rozptyl hodnot koeficientu ∆, zmenˇsuj´ıse tak´e rozd´ıly mezi posunut´ımprostˇredn´ıch bod˚u´useˇcek, coˇz´ust´ıv relativnˇemalou variabilitu

30 vygenerovan´ych kˇrivek s Hausdorffovou dimenz´ı D = 1, 5. Aby bylo moˇzn´enastavit D pˇred v´ypoˇctem, je vhodn´emodifikovat MDM n´asleduj´ıc´ımzp˚usobem [25, 13]:

• gener´atorn´ahodn´ych ˇc´ısel je tˇrebazmˇenit na gener´ators Gaussovsk´ymrozloˇzen´ım, nejˇcastˇeji v´ypoˇctem pr˚umˇerunˇekolika n´ahodn´ych ˇc´ısel,

• obrazy s r˚uznou D vyˇzaduj´ızmˇenu rozptylu v Gaussovˇerozloˇzen´ı.Vztah pro rozptyl 2 2 2H(i+1) i-t´eiterace je σi = σ /(2 ), kde H je Hurst˚uv exponent [12], kter´yurˇcuje Haus- dorffovu dimenzi: D = 2 − H.

Rekurzivn´ıdˇelen´ıˇctverce Metoda pˇresouv´an´ıprostˇredn´ıho bodu m˚uˇze b´ytpouˇzita tak´ena ploˇsn´y´utvar, kdy se pˇri rekurzivn´ım dˇelen´ı posouvaj´ı krajn´ı body ˇctverce v kolm´emsmˇeru.Nejˇcastˇejˇs´ı varianta vyuˇz´ıvan´av praxi spoˇc´ıv´av tom, ˇze se v kaˇzd´em kroku vypoˇc´ıtaj´ıv´yˇskybod˚uv polovinˇe hran ˇctverce a z nich pak v´yˇska stˇredu ˇctverce. Stˇredje pot´eposunut o n´ahodnou hodnotu a vznikaj´ıˇctyˇri ˇc´asti,kter´ejsou d´aledˇeleny [14, 20, 25]. Vyuˇzit´ıtato technika nach´az´ıpˇrigenerov´an´ıv´yˇskov´ych map ter´enu. Tak´elze vytv´aˇret obr´azky, kter´ejsou naz´yv´any plazma, viz 3.19. Plazma se tvoˇr´ıtak, ˇzeˇctverec je nahrazen obr´azkem, kde pozice kaˇzd´ehopixelu odpov´ıd´asouˇradnic´ımbodu v rovinˇe xy a barva pixelu odpov´ıd´asouˇradnici z. Generov´an´ıpostupnˇeˇctverec dˇel´ına ˇctvrtiny a konˇc´ıv okamˇziku, kdy zb´yvaj´ıˇctverce o velikosti jednoho pixelu.

Obr´azek 3.19: Plazma

Obr´azkyplazmy vytvoˇren´eMDM vypadaj´ırealisticky. Jak je patrn´ena obr´azek 3.19, u prvn´ıch iterac´ıdˇelen´ıˇctverce vznikaj´ına hranic´ıch svisl´ea vodorovn´ebarevn´epˇrechody. Na niˇzˇs´ıch ´urovn´ıch jiˇznejsou patrn´ekv˚uli sniˇzov´an´ı hodnoty koeficientu ∆. Pˇrechody vznikaj´ız d˚uvodu posouv´an´ıpouze prostˇredn´ıho bodu ˇctverce a ponech´an´ımstˇred˚ujeho hran na p˚uvodn´ıpozici kv˚ulichybˇej´ıc´ıminformac´ım o n´asleduj´ıc´ımdˇelen´ısousedn´ıch ˇctverc˚u.

31 Na odstranˇen´ı nebo potlaˇcen´ı barevn´ych pˇrechod˚uexistuje nˇekolik metod. Obvykle spoˇc´ıvaj´ıv odliˇsn´emdˇelen´ıˇctverce stˇr´ıdavˇepo ´uhlopˇr´ıˇck´ach a vodorovn´ych nebo svisl´ych hran´ach napˇr.diamanto-ˇctvercov´yalgoritmus (diamond-square algorithm [14]). Zaj´ımavou metodou uv´ad´ıPavel Tiˇsnovsk´y[25]. Jde o iterativn´ıgenerov´an´ır˚uznˇeorientovan´ych pˇr´ımek a dalˇs´ı´upravu rozdˇelen´ehoobrazu n´asleduj´ıc´ımzp˚usobem:

• intenzitu vˇsech pixel˚uleˇzic´ıch nalevo od pˇr´ımky sniˇz o jedniˇcku, • intenzitu vˇsech pixel˚uleˇz´ıc´ıch napravo od pˇr´ımky zvyˇs o jedniˇcku.

Pro dosaˇzen´ıuspokojiv´ehov´ysledkuje tˇreba generovat pˇr´ımky a mˇenit intenzitu v mnoha cyklech, obvykl´ypoˇcet opakov´an´ı je 1000 - 10 000 iterac´ı. Barevn´ypˇrechod pak nen´ı viditeln´y, ale vygenerovan´yobr´azek je tˇreba normalizovat, aby nejm´enˇeintenzivn´ıpixe- ly byly ˇcern´ea naopak nejintenz´ıvnˇejˇs´ıpixely byly b´ıl´e. Plazma vytvoˇren´atouto metodou je na obr´azku 3.20.

Obr´azek 3.20: Plazma vytvoˇren´agenerov´an´ım pˇr´ımek

3.4.3 Spektr´aln´ısynt´eza Spektr´aln´ısynt´eza je ˇcasto pouˇz´ıvanou metodou, kter´avych´az´ız principu v´ypoˇctuFou- rierovy ˇrady. Metoda spoˇc´ıv´av tom, ˇze se n´ahodnˇevygeneruj´ıFourierovy obrazy, kter´e maj´ıspektr´aln´ıhustotu ´umˇernou zadan´eHausdorffovˇedimenzi. Jestliˇzeje zn´amaspektr´aln´ı hustota, lze nal´eztkoeficienty Ak a Bk a prov´est s nimi inverzn´ıFourierovu transformaci, viz 3.17 (pˇrevod z frekvenˇcn´ıoblasti do oblasti ˇcasov´e).

X(t) = Σ(Ak cos(kt) + Bk sin(kt)) (3.17) Spektr´aln´ıhustotu je moˇzno vypoˇc´ıtatpomoc´ıvztahu 3.18: 1 S(f) = lim |X(u)|2 (3.18) T →∞ T

32 Spektr´aln´ıhustota S(f) pro zlomkovit´yBrown˚uvpohyb je ´umˇern´ahodnotˇe1/f β. Ko- eficient β je ve vztahu s Hurstov´ymkoeficientem [12] a sice β = 2H + 1. Pro poˇzadovanou Hausdorffovu dimenzi D je moˇznovypoˇc´ıtat β a n´aslednˇespektr´aln´ıhustotu 3.18, kter´a mus´ıodpov´ıdat hodnotˇe1/f β [25]. Fourierovy obrazy dan´espektr´aln´ıhustoty je moˇzn´e z´ıskat generov´an´ımkoeficient˚u Ak a Bk tak, aby vyhovovaly vztahu 3.19: 1 E(A2 + B2) ∼ (3.19) k k kβ Rozˇs´ıˇren´ımmetody spektr´aln´ıhustoty do dvourozmˇern´ehoprostoru je moˇzn´eopˇet ge- nerovat plazmu, pˇr´ıpadnˇev´yˇskov´epole, ˇcehoˇzse vyuˇz´ıv´apˇrigenerov´an´ımodel˚ukrajiny (obr´azek 3.21) ˇcipovrch˚uplanet. Dalˇs´ımrozˇs´ıˇren´ımo jednu dimenzi vznik´atrojrozmˇern´a mˇr´ıˇzka, ve kter´ejednotliv´evoxely mohou vyjadˇrovat hustotu prostoru na jejich souˇradnic´ıch. T´ımto zp˚usobem je pak moˇzno generovat modely re´alnˇevypadaj´ıc´ıch mrak˚u 3.22 [12, 25, 24, 14, 1].

Obr´azek 3.21: Krajina - spektr´aln´ısynt´eza

Obr´azek 3.22: Frakt´aln´ıoblaka

33 Kapitola 4

Frakt´aly v praxi

Poznatky z´ıskan´efrakt´aln´ıgeometri´ıjsou postupnˇezav´adˇeny do praxe, kde naˇsly vyuˇzit´ı v biologii, chemii, medic´ınˇea samozˇrejmˇev poˇc´ıtaˇcov´egrafice. V dneˇsn´ım modern´ımsvˇetˇe se setk´av´ames frakt´aly velmi ˇcasto, ikdyˇzsi nemus´ımeb´yt vˇedomiskuteˇcnosti,ˇzese na frakt´ald´ıv´ameˇcipoznatky z´ıskan´efrakt´aln´ıgeometri´ıvyuˇz´ıv´ame. V dalˇs´ım textu je uvedeno nˇekolik typick´ych pˇr´ıkladu, kde je moˇzn´ese s frakt´aly setkat, pˇr´ıpadnˇeje prakticky vyuˇz´ıt. Mnoho dalˇs´ıch aplikac´ılze nal´eztnapˇr. v literatuˇre [12, 11, 3, 2, 25, 22]. S rozvojem v´ypoˇcetn´ıtechniky lze analyzovat mnohem vˇetˇs´ıobjemy dat, kter´ebylo nutno pˇredt´ım zjednoduˇsovat. Tak se frakt´aln´ı geometrie prom´ıtla i do obor˚ujako je ekonomie, kde je vyuˇz´ıv´anapˇrianal´yzegraf˚upopisuj´ıc´ıch napˇr.ceny akci´ına burze, v´y- konnost ekonomiky atd. Tyto kˇrivky jsou v ekonomii naz´yv´any Elliottovy vlny a pouˇz´ıvaj´ı se k pˇredpovˇedi v´yvoje trhu. V devades´at´ych letech se objevila Hypot´ezafrakt´alov´ehotrhu, kter´aje takto oznaˇcovan´akv˚uli pˇredpokladu zachov´av´an´ıstejn´ych charakteristick´ych rys˚u prvk˚uoperuj´ıc´ıch v tomto prostˇred´ı,ikdyˇzv jin´emˇcasov´emmˇeˇr´ıtku[15].

4.1 Biologie a l´ekaˇrstv´ı

V biologii a medic´ınˇese frakt´aln´ı geometrie vyuˇz´ıv´apˇrizkoum´an´ı vlastnost´ı krve, kdy se mˇeˇr´ıHausdorffova dimenze jejich sloˇzek. Vˇedci tak´ezkoumaj´ısouvislost Hausdorffovy dimenze povrchu mozku a inteligence ˇclovˇeka. Pˇri zkoum´ani sign´aluEKG byly zaznamen´any nepravidelnosti srdeˇcn´ıhorytmu typick´e pro neline´arn´ıdynamick´esyst´emy. Na z´akladˇepoznatk˚ufrakt´aln´ıgeometrie byly vyvinuty chaotick´efiltry, kter´edok´aˇz´ı odliˇsitsign´alEKG plodu a matky od pˇr´ıpadn´ehodalˇs´ıho ˇsumu. Srdeˇcn´ırytmus reaguje na ˇcinnost mozku a nervov´esoustavy. Touto problematikou se zab´yv´arelativnˇemlad´yvˇedn´ıobor zvan´y Frakt´aln´ıanal´yza variability srdeˇcn´ıhorytmu. Nov´epoznatky se diskutuj´ıpˇredevˇs´ımv odborn´ych ˇcasopisech, na konferenc´ıch a na od- born´ych f´orech napˇr.www.ams.org a str´ank´ach Gerstnerovy laboratoˇre CVUT.ˇ Zaj´ımav´echov´an´ıje tak´emoˇzno vypozorovat v chov´an´ıˇretˇezce DNA. Na z´akladˇeprefe- rovan´ych vazeb mezi sloˇzkami DNA adenin-thymin a guanin-cytosin, lze “naprogramovat” r˚ust krystalu definovan´ym zp˚usobem. Molekuly DNA se pak na z´akladˇelok´aln´ıch pravidel chovaj´ıjako stavebn´ıbloky pro vˇetˇs´ıglob´aln´ıstrukturu [18, 19]. Pro vytvoˇren´ıSierpinsk´eho troj´uheln´ık na obr´azku 4.1 bylo pouˇzitoDNA s dvojit´ympˇrekˇr´ıˇzen´ım.

34 Obr´azek 4.1: Frakt´aln´ıvzor DNA

4.2 Poˇc´ıtaˇcov´agrafika

Nejvˇetˇs´ızastoupen´ıvyuˇzit´ıfrakt´aln´ıgeometrie je v oboru poˇc´ıtaˇcov´egrafiky. Frakt´alyzde naˇslyuplatnˇen´ıv mnoha oblastech potˇrebn´ych pro pr´acis informacemi. Komprese dat je typickou oblast´ıvyuˇzit´ısyst´em˚uiterovan´ych funkc´ı,viz kapitola 3.3 a literatura [3, 2, 17, 16]. D´ale lze frakt´aln´ımi technikami generovat textury, kter´ejsou pamˇet’ovˇevelmi nen´aroˇcn´e(mnohdy aˇz10x menˇs´ı objem dat) a netrp´ı zkreslen´ım pˇri zvˇetˇsen´ıjako bitmapov´etextury. IFS jsou vhodn´ei pro kompresi dat, jelikoˇzjedna transfor- mace je v tomto pˇr´ıpadˇezaps´ana pomoc´ıosmi ˇc´ısel. Tuto metodu vyuˇz´ıv´agrafick´yform´at FIF, v´ıce informac´ıviz literatura [3, 25, 17]. Frakt´aln´ıkomprese je ztr´atov´aa dosahuje pˇri vyˇsˇs´ıch stupn´ıch vizu´alnˇelepˇs´ıch v´ysledk˚u, aˇckoliv porovn´an´ı je nesnadn´ez d˚uvodu odliˇsn´ych projev˚uztr´aty kvality oproti napˇr.JPEG. Pˇr´ıkladfrakt´aln´ırekonstrukce fotografie 4.2 pomoc´ıˇcern´eplochy vid´ımena obr´azek 4.3. P˚uvodn´ıobr´azekbyl analyzov´ana pomoc´ıhierarchick´eho ˇclenˇen´ıbyly vyhled´any podobn´e podoblasti pro jeho komprimaci [17].

Obr´azek 4.2: P˚uvodn´ıLenna

Generov´an´ıpseudopˇr´ırodn´ıch ´utvar˚ubylo zm´ınˇenou stochastick´ych frakt´al˚uv kapitole 3.4. Frakt´alyse uˇz´ıvaj´ı hlavnˇeke generov´an´ı ´utvar˚u,jako jsou stromy, mraky, rostliny, kameny apod. Ikdyˇzjsou tyto metody ´uspornˇejˇs´ına mnoˇzstv´ıpotˇrebn´ych dat k pops´an´ı

35 Obr´azek 4.3: Rekonstrukce obr´azku Lenna

´utvar˚u, dosahuj´ıvizu´alnˇekvalitn´ıch v´ystup˚u.

4.3 Frakt´aln´ıant´eny

Poznatk˚uz frakt´aln´ıgeometrie se vyuˇz´ıv´apˇrikonstrukci nejr˚uznˇejˇs´ıch ant´enn´ıch syst´em˚u (mobiln´ıtelefony, vys´ılaˇcky, vesm´ırn´esondy atd.). Pˇri projektov´an´ıant´en se vyuˇz´ıv´asobˇe- podobnosti k maximalizaci d´elkyˇciobvodu materi´alu, kter´yje schopen vys´ılat nebo pˇrij´ımat elektromagnetick´ysign´alv r´amci vymezen´eplochy ˇciobjemu. Z d˚uvodu nˇekoliker´ehoopa- kov´an´ı tvar˚ujsou frakt´aln´ı ant´eny velmi kompaktn´ı, pouˇziteln´epro mnoho frekvenc´ı a vyuˇz´ıvaj´ıse napˇr.v mikrovln´ekomunikaci [22]. Od typu pouˇzit´ıant´eny se odv´ıj´ıjej´ıtvar. Ant´enanapˇr´ıklad m˚uˇzevypadat jako ˇc´ast Kochovy kˇrivky (obr´azek 4.4), Sierpinsk´eho troj´uheln´ık atd.

36 Obr´azek 4.4: Frakt´aln´ıant´ena

4.4 Materi´aly

Frakt´aln´ı struktura materi´alubyla objevena pˇrizmˇen´ach skupenstv´ı l´atky, jako je t´an´ı ledu ˇci vypaˇrov´an´ı vody. Z makroskopick´ehohlediska existuj´ı tˇriz´akladn´ı l´atkov´asku- penstv´ı(pevn´e, kapaln´e,plynn´e),v nˇekter´ych pˇr´ıpadech se za ˇctvrt´eskupenstv´ıpovaˇzuje plazma. Z mikroskopick´ehohlediska je ovˇsem tˇechto stav˚umnohem v´ıce. Frakt´aln´ıstruk- turu hmoty potom m˚uˇzeme vidˇetpˇripˇrechodu hmoty z jednoho stavu do druh´eho.Tento ´ukaz lze pozorovat napˇr.pˇripˇrechodu magnetick´ehomateri´aluna materi´alnemagnetick´y. V mikroskopick´emmˇeˇr´ıtku je sloˇzen z element´arn´ıch magnet˚u,kter´ev z´avislosti na teplotˇe urˇcuj´ı,zda se celek bude chovat jako magnet. Za n´ızk´ych teplot je materi´almagnetick´y, avˇsakvyskytuj´ıse v nˇem mikroskopick´eoblasti, kde element´arn´ımagnety uspoˇr´ad´any ne- jsou. Pˇrikritick´eteplotˇe(Curierova teplota), kdy je materi´alv bodˇepˇrechodu mezi stavy, vypad´ajeho struktura ve vˇsech mˇeˇr´ıtc´ıch stejnˇea m´afrakt´aln´ıstrukturu [24]. Poznatky z frakt´aln´ıgeometrie nach´azej´ıuplatnˇen´ıi ve vojensk´etechnice pˇri maskov´an´ı vozidel, letadel (obr´azek 4.5), lod´ı atd. Frakt´aln´ı vzory se objevuj´ı tak´ena vojensk´ych odˇevech a zbran´ıch. Dalˇs´ı oblast´ı, kdy je vhodn´eobjekt “ukr´yt” pˇred zraky okol´ı, jsou stavby v krajinˇe. Po zabarven´ıfrakt´aln´ımvzorem se sn´ıˇz´ıvizu´aln´ınaruˇsen´ıokoln´ıkrajiny.

37 Obr´azek 4.5: Frakt´aln´ıkamufl´aˇzF16

4.5 Umˇen´ıa architektura

Mnoho lid´ı, Mandelbrota nevyj´ımaje, zaujala kr´asafrakt´al˚unatolik, ˇzesi vytv´aˇreli frakt´aly pouze pro jejich vizu´aln´ızaj´ımavost. Rozmach tohoto hled´an´ınov´ych podob frakt´al˚unastal s ´erouosobn´ıch poˇc´ıtaˇc˚u.Vzniklo mnoho program˚upro generov´an´ıfrakt´aln´ıch obrazc˚u, na kter´ych pracovali at’ uˇzjednotlivci nebo skupiny lid´ız cel´ehosvˇeta. Pˇrestoˇzeje frakt´aln´ıumˇen´ıspojov´ano s poˇc´ıtaˇci, lze frakt´aln´ıvzory pozorovat ve stav- b´ach a obrazech mnoha autor˚u. Nejstarˇs´ızn´amky frakt´aln´ıch princip˚uje moˇznopozorovat jiˇzv antice. Pravidlo kr´asy, tzv. zlat´yˇrez, dˇel´ıd´elku na dvˇeˇc´astitak, ˇzepomˇercel´ed´elky k vˇetˇs´ıˇc´asti je stejn´yjako pomˇervˇetˇs´ıˇc´asti k menˇs´ı.Ve zlat´em ˇrezu lze spatˇrovat faktor sobˇepodobnosti pr´avˇekv˚ulizm´ınˇen´emu pomˇeru. Dalˇs´ımpˇr´ıkladem z pozdˇejˇs´ıdoby jsou podlahy italsk´ych bazilik, viz obr´azek 4.6, kdy se v mozaik´ach objevuj´ı vzory podobn´e druh´eˇci tˇret´ıiteraci Sierpinsk´ehotroj´uheln´ıku [4].

Obr´azek 4.6: Santa Prassede - podlaha

Pˇr´ıkladem vyuˇzit´ıfrakt´aln´ıho principu v modern´ımumˇen´ıje obraz Salvadora Dal´ıho “Tv´aˇrv´alky” (Visage de la guerre). Opakuj´ıc´ıse motiv tvoˇr´ıobliˇcej a jeho zmenˇseniny um´ıstˇen´edo oˇcn´ıch d´ulk˚ua ´ust,jak lze vidˇetna obr´azku 4.7. D´ale se s frakt´aly lze setkat v modern´ıarchitektuˇrepˇripohledu na organizaci mˇestˇciuspoˇr´ad´an´ıstaveb.

38 Obr´azek 4.7: Salvador Dal´ı- Tv´aˇrv´alky

4.5.1 Africk´efrakt´aly Pˇr´ıkladem, kdy byla objevena frakt´aln´ıpodstata d´avnopˇred definov´an´ımpojmu frakt´al, jsou tzv. Africk´efrakt´aly[6]. Na obr´azku 4.8 je leteck´ypohled na vesnici Ba-ila z obdob´ı pˇred rokem 1944. Tvar vesnice odpov´ıd´afrakt´alu, jehoˇziterace jsou na obr´azku 4.9.

Obr´azek 4.8: Africk´avesnice Ba-ila

Dalˇs´ımioblastmi, kde byl objeven vliv frakt´al˚uv Africe, jsou ˇsperky a ´uprava vlas˚u. Frakt´aln´ıvlivy je moˇzno nal´ezt tak´ev Egyptsk´ekultuˇre.

39 Obr´azek 4.9: Frakt´alvesnice Ba-ila

4.5.2 Betl´emsk´ahvˇezda Betl´emsk´ahvˇezdˇeje v oblasti frakt´aln´ıgeometrie raritou. Vˇetˇsinazm´ınek o n´ıodkazuje na publikaci Rona Eglashe [8], kter´yzkoumal pr´acimnicha Uda z Aachenu.

Obr´azek 4.10: Ilustrace z 13. stolet´ı

Zvl´aˇstn´ıho vyobrazen´ıBetl´emsk´ehvˇezdy si povˇsiml profesor matematiky Bob Schipke. Hvˇezda vypadala jako zn´azornˇen´ı Mandelbrotovy mnoˇziny, jedn´ez ikon modern´ı doby poˇc´ıtaˇc˚u. Jej´ı sloˇzitost se d´avyobrazit pouze pomoc´ı poˇc´ıtaˇc˚u,coˇzse vˇsakd´ıky kresbˇe Hvˇezdy uk´azalo jako myln´adomˇenka. V´ıceo t´etopozoruhodnosti uv´ad´ıRay Girvan na sv´ych str´ank´ach [8]. V pracech Uda z Aachenu pozdˇeji vˇedci nalezli jeˇstˇenˇekolik zaj´ımavost´ı. Nejd˚uleˇzitejˇs´ı na ˇcl´anku o Udovi je vˇsakdatum uveden´ı - 1. dubna 1999. Ray Gir- van pˇripravil apr´ılov´yˇzert´ıks takovou peˇclivost´ı,ˇze po pˇreˇcten´ımˇelo mnoho odborn´ık˚u z´ajemo cestu do Aachenu, aby mohli spis stˇredovˇek´eho mnicha studovat. Girvan doc´ılil vˇerohodnosti pr´ace uveden´ım m´alozn´am´ych informac´ıa odkazy na mnoho seri´ozn´ıch prac´ı, jeˇzjsou v poˇr´adku aˇzna neexistuj´ıc´ıpoˇcinfiktivn´ıhoprofesora Boba Schipkeho.

40 4.6 SW pro generov´an´ıfrakt´al˚u

Na internetu je k dispozici velk´emnoˇzstv´ıprogram˚u, jejichˇzpomoc´ılze frakt´alygenero- vat. V n´asleduj´ıc´ıch kapitol´ach je pops´anonˇekolik z nich, kter´ebyly vybr´any na z´akladˇe v´yznamu, kvalitn´ım v´ystup˚um, ˇci ˇsirok´emoˇznosti voleb ovlivˇnuj´ıc´ıv´ysledn´yobrazec. Nej- ˇcastˇejise jedn´ao programy volnˇeˇsiˇriteln´e.

4.6.1 FractInt FractInt je volnˇeˇsiˇriteln´yprogram vytv´aˇren´yskupinou Stone Group, kter´am´av souˇcasnosti ˇsest ˇclen˚upod´ılej´ıc´ıch se na dalˇs´ımv´yvoji programu. P˚uvodn´ımautorem je Bert Tyler. Jm´eno programu souvis´ıs t´ım, ˇzevelk´emnoˇzstv´ıj´ımgenerovan´ych obr´azk˚uvyuˇz´ıv´acelo- ˇc´ıselnou (INTeger) matematiku, nam´ısto re´aln´ych ˇc´ısel bˇeˇzn´ych u jin´ych program˚u. Prvn´ıverze FractIntu vydan´av z´aˇr´ıroku 1988 byla naps´anapro procesory 386, po- uˇz´ıvala celoˇc´ıseln´yalgoritmus a nepotˇrebovala matematick´ykoprocesor pro matematick´e operace. Na poˇc´atkubyl program rychle vyv´ıjen a o rok pozdˇeji jiˇzbyla k dispozici verze 9.3. V souˇcasnosti (kvˇeten2007) je nejnovˇejˇs´ıFracInt dostupn´yve verzi 20.0. FracInt je ovl´ad´anpˇredevˇs´ım z pˇr´ıkazov´eˇr´adky, um´ı vˇsak pracovat i s d´avkov´ymi soubory. Nejnovˇejˇs´ı grafick´anadstavba WinFract pro Windows je ve verzi 18.21. Starˇs´ı verzi GUI s vykreslen´ym Ljapunov´ymfrakt´alem lze vidˇetna obr´azek 4.11. Na ovl´ad´an´ıpro- gramu myˇs´ıpˇripohybu (zoomov´an´ı)ve vykreslen´ych frakt´alech je tˇrebasi zvykat z d˚uvodu ponˇekudnestandardn´ıch reakc´ıoblasti v´ybˇeru. Usnadnˇen´ımje tzv. “Zoom bar” kter´ymlze l´epe vybrat oblast pro zvˇetˇsen´ı.

Obr´azek 4.11: GUI programu WinFract

41 Nab´ıdka “Fractals” obsahuje dalˇs´ıpoloˇzky s v´ybˇeremdruhu vykreslovan´eho frakt´alu, nastaven´ız´akladn´ıch a rozˇs´ıˇren´ych parametr˚uzobrazovac´ıoblasti atd. Kaˇzd´ydruh frakt´alu m´apˇrednastaveny z´akladn´ıparametry zaruˇcuj´ıc´ıvykreslen´ıalespoˇnz´akladn´ıho tvaru na obrazovku. FracInt um´ıpracovat s velk´ymmnoˇzstv´ımadapt´er˚ua grafick´ych reˇzim˚u.Nejvyˇsˇs´ınab´ı- zen´erozliˇsen´ıje 1024*768, avˇsak je moˇzno jej nastavit i ruˇcnˇe. Programem lze vygenerovat i obr´azkys vˇetˇs´ımrozliˇsen´ım,neˇzm´aobrazovka. Tyto se pak ukl´adaj´ıdo pamˇetinebo na disk. Poˇcet barev je st´aleomezen na 256, coˇzm˚uˇze b´ytv dneˇsn´ıdobˇenev´yhoda pˇri vytv´aˇren´ıdekorativn´ıch obr´azk˚u. Veˇsker´einformace o autorech a tutorialy ukazuj´ıc´ı pr´aci s programem lze nal´eztna domovsk´ych str´ank´ach http://spanky.triumf.ca/www/fractint/fractint.html.

4.6.2 Fractal eXtreme Fractal eXtreme je komerˇcn´ı software vyv´ıjen´yspoleˇcnost´ı Cygnus Software zaloˇzenou v roce 1985. Prvn´ımi produktem spoleˇcnosti byl v roce 1986 program MandFXP. V roce 1997 pak byl uveden na trh Fractal eXtreme, kter´yje naprogramov´anv C++ v kombinaci s assemblerem. Posledn´ıaktualizace programu byla v roce 2003, kdy vyˇslaverze 1.902. Na webov´ych str´ank´ach v´yrobce www.cygnus-software.com je k dispozici ke staˇzen´ıpatn´acti denn´ızkuˇsebn´ıverze programu.

Obr´azek 4.12: Fractal eXtreme

Fractal eXtreme nab´ız´ın´ahledvybran´ehofrakt´aluve sn´ıˇzen´ekvalitˇepˇredjeho fin´aln´ım vykreslen´ım, aby se mohl uˇzivatel rozhodnou zda dan´yobr´azek splˇnuje jeho poˇzadavky a

42 chce jej zobrazit nebo uloˇzitv pln´ekvalitˇe. V oknˇeprogramu, obr´azek 4.12, je moˇznozobrazovat v´ıcefrakt´al˚unajednou. Zaj´ımavou vlastnost´ıje, ˇze v pˇr´ıpadˇeMandelbrotovy mnoˇziny lze zobrazit jednotliv´eJuliovy mnoˇziny odpov´ıdaj´ıc´ıdan´eoblasti. Dalˇs´ı zaj´ımavou moˇznost´ı je uloˇzen´ı animovan´ych pr˚ulet˚ufrakt´alem,kdy si lze ve vykreslen´emvˇzdydefinovat oblast, kter´abude tvoˇritdalˇs´ı pˇribl´ıˇzen´ı frakt´alu. Program pak propoˇc´ıt´ajednotliv´e“sn´ımky” v´ysledn´eanimace. Pro uloˇzen´ıanimac´ıFractal eXtreme pouˇz´ıv´avlastn´ıform´at,jeˇzlze pˇrehr´atv programu Zoom Movie Player. Tento je zdarma a um´ıpˇrev´est videa do avi sekvenc´ı.Nˇekolik vzorov´ych “film˚u”je um´ıstˇenona webov´ych str´ank´ach programu.

4.6.3 XaoS XaoS je program urˇcen´yke generov´an´ıanimac´ıfrakt´al˚uv re´aln´em ˇcase. P˚uvodn´ımautorem je Jan Hubiˇcka, ke kter´emu se pˇridali dalˇs´ıv´yvoj´aˇri. Prvn´ıverze programu vznikla v roce 1998. V souˇcasnosti je nejaktu´alnˇejˇs´ıverze 3.2.3. V´yhodou XaoSe je fakt, ˇzeje naps´annejen pro Windows, ale i dalˇs´ıoperaˇcn´ısyst´emy jako je MacOS X, Linux a BSD, OS/2 aj. Program nab´ız´ıvolbu nˇekolika jazykov´ych verz´ıch - anglick´e, ˇcesk´e,ˇspanˇelsk´e,mad’arsk´eatd.

Obr´azek 4.13: XaoS

Generov´an´ıfrakt´al˚uje rychl´ei ve vysok´emrozliˇsen´ı.V programu je pˇredvoleno vykreslen´ı nˇekolika nejzn´amˇejˇs´ıch frakt´al˚u(napˇr. Mandelbrotova mnoˇzina, frakt´alNewton atd.). Vy- barven´ı´utvaru lze mˇenitzvl´aˇst’ pro vnitˇrn´ıa vnˇejˇs´ıoblast, k dispozici je nˇekolik variant. Okno XaoSu s Newtonovou frakt´aln´ımnoˇzinou ˇctvrt´eho ˇr´adu je na obr´azku 4.13. Zaj´ımavou

43 funkc´ıje “autopilot”, kdy program s´amurˇc´ısmˇerpr˚uletu frakt´alem. Na domovsk´estr´anceprogramu http://wmi.math.u-szeged.hu/xaos/doku.php lze nal´ezt informace o programu i galerie obr´azk˚u. Souˇc´ast´ıarchivu s programem jsou v´ıcejazyˇcn´e tutorialy popisuj´ıc´ınejen ovl´ad´an´ıXaoSu, ale obsahuj´ıtak´einformace o frakt´alech a frakt´aln´ı geometrii.

4.6.4 Apophysis Apophysis je open source editor frakt´al˚utypu Fractal Flame. Program vytvoˇril Mark Townsend pro platformu MS Windows a v souˇcasn´edobˇese na v´yvoji pod´ıl´ınˇekolik dalˇs´ıch program´ator˚u. Posledn´ıdostupn´averze programu je 2.02. Program obsahuje spoustu moˇznost´ıpro vytv´aˇren´ıa ´upravu frakl´al˚u.Souˇc´ast´ıje i editor, ve kter´emlze pˇr´ımomˇenit transformace, ze kter´ych se flame skl´ad´a.Okno mutac´ıobsahuje zobrazen´ınˇekolika st´adi´ıv´ypoˇctudan´eho frakt´alu. Mezi jednotliv´ymiverzemi lze vybrat vizu´alnˇenejpˇrijatelnˇejˇs´ıa nechat ji vygenerovat ve vˇetˇs´ımrozliˇsen´ı.V nastaven´ılze zvolit barevnou paletu a pozici obr´azku,pˇr´ıpadnˇepˇr´ımonapsat skript kter´ybude aplikov´anna frakt´al.

Obr´azek 4.14: Apophysis

Vytv´aˇren´ıfrakt´al˚uv Apophysisu je pˇrev´aˇznˇezaloˇzenona n´ahodˇe.Pˇri kaˇzd´em spuˇstˇen´ı se vygeneruj´ınov´epˇredlohy, na kter´ese n´ahodn´ymzp˚usobem aplikuje nˇejak´avariace. V´ybˇer variace lze ruˇcnˇemˇenit, stejnˇejako definici pˇredlohy, a z´ıskat tak pokaˇzd´enov´yfrakt´al. Na domovsk´ych str´ank´ach www.apophysis.org je moˇzno nal´ezt rozs´ahlousekci s tuto- rialy pro zaˇc´ateˇcn´ıkyi pokroˇcil´euˇzivatele.

44 Kapitola 5

Algoritmy pro generov´an´ıfrakt´al˚u

V n´asleduj´ıc´ıˇc´asti diplomov´epr´ace jsou uvedeny algoritmy, jimiˇzlze generovat jednotliv´e typy frakt´al˚u. Nejkomplexnˇejˇs´ıinformace a pˇr´ıklady zdrojov´ych k´od˚uuv´ad´ıPavel Tiˇsnovsky ve sv´em seri´aluo frakt´alech zveˇrejˇnovan´eho na str´ank´ach Root.cz [25]. S ohledem na aktu´alnostdat pouˇzit´ych pro tuto pr´aci,jsou odtud pˇrevzaty ´useky zdrojov´ych k´od˚u. Vˇetˇsina informac´ıa k´od˚uje pr˚ubˇeˇznˇeupˇresˇnov´ana d´ıkypˇripom´ınk´amdalˇs´ıch autor˚u.

5.1 Algoritmy dynamick´ych syst´em˚u

5.1.1 Lorenz˚uvatraktor Popis Lorenzova atraktoru je uveden v kapitole 2.4.1 a je charakterizov´antˇremirovnicemi (2.7, 2.8, 2.9). Pro iterativn´ı v´ypoˇcet je tˇreba prov´est jejich ´upravu, aby bylo moˇzno vypoˇc´ıtatpozice bod˚u Ps = [xn, yn, zn] v prostoru [25, 3]:

xn+1 = xn + (−a × xn × dt) + (a × yn × dt) (5.1)

yn+1 = yn + (b × xn × dt) − (yn × dt) − (zn × xn × dt) (5.2)

zn+1 = zn + (−c × zn × dt) + (xn × yn × dt) (5.3) Lorenz˚uvatraktor je narozd´ılod mnoha frakt´al˚uvykreslov´anv trojrozmˇern´em prostoru. Za pomoci OpenGL vypad´afunkce realizuj´ıc´ıv´ypoˇcet bod˚un´asledovnˇe: //------// Pˇrekreslen´ıLorenzova atraktoru (p˚uvodn´ıLorenz˚uvatraktor) //------void recalcLorenz(double a, // parametry frakt´alu double b, double c, double dt, // pouˇzitopˇrinumerick´eintegraci int maxiter, // maxim´aln´ıpoˇcetiterac´ı double scale) // mˇeˇr´ıtkoobrazce { double x=0.1, y=0, z=0; // pozice bodu v prostoru double x2, y2, z2; int iter=maxiter;

45 glColor3f(1.0f, 1.0f, 1.0f); glBegin(GL_LINE_STRIP); // zaˇc´atekvykreslov´an´ıpolyˇc´ary while (iter--) { // iteraˇcn´ısmyˇcka glColor3f(x/10.0,y/10.0,z/10.0); x2 = x+(-a*x*dt)+(a*y*dt); y2 = y+(b*x*dt)-(y*dt)-(z*x*dt); z2 = z+(-c*z*dt)+(x*y*dt); x=x2; // pˇrepisnov´ychsouˇradnic y=y2; z=z2; glVertex3d(x*scale, y*scale, z*scale); // vykreslen´ı´useˇcky } glEnd(); // konec vykreslov´an´ıpolyˇc´ary }

Uveden´averze vykresl´ıp˚uvodn´ıLorenz˚uvatraktor. Existuj´ıi dalˇs´ımodifikace algoritmu, kter´elze nal´ezt v [25]. Jsou zde uvedeny kompletn´ık´ody p˚uvodn´ıhoi modifikovan´ych pro- gram˚u.

5.1.2 Juliovy mnoˇziny Sezn´amen´ı s Juliov´ymimnoˇzinami je v kapitole 3.1.1. Tento typ frakt´al˚uje generov´an 2 iteracemi funkce komplexn´ıparaboly zn+1 = zn + c, kde zn a c jsou komplexn´ıpromˇenn´e. Iteraˇcn´ıproces zaˇc´ın´astartovn´ıhodnotou z0. Realizace algoritmu spoˇc´ıv´ave dvou vnˇejˇs´ıch cyklech, kter´egeneruj´ıpoˇc´ateˇcn´ısouˇradni- ce bod˚u z0, a vnitˇrn´ısmyˇcce, kde jsou tyto body iterov´any. Iterace prob´ıh´apostupn´ym poˇc´ı- t´an´ım z1 a z2, neˇzhodnota nˇekter´ez nich pˇrekroˇc´ıhodnotu 2, coˇzje mez divergence. Pokud nen´ırozhodnuto o divergenci posloupnosti do dosaˇzen´ınastaven´ehopoˇctuiteraˇcn´ıch krok˚u, je posloupnost povaˇzov´ana za konverguj´ıc´ı.Podle poˇctukrok˚uje obarven pixel odpov´ıdaj´ıc´ı souˇradnic´ımpoˇc´ateˇcn´ıho bodu z0 [12, 11, 25]. Prvn´ıpˇr´ıklad obsahuje cyklus v´ypoˇctuJuliovy mnoˇziny podle klasick´ehopostupu. zy0=MINY; for (y=0; yheight; y++) { // pro vˇsechnyˇr´adkyv pixmapˇe zx0=MINX; for (x=0; xwidth; x++) { // pro vˇsechnypixely na ˇr´adku zx=zx0; zy=zy0; // nastavit poˇc´ateˇcn´ıhodnotu Z(0) for (iter=0; iter4.0) break; // kontrola pˇrekroˇcen´ımeze divergence zxx=zx*zx-zy*zy+cx; // v´ypoˇcetZ(n+1)=Z(n)^2+C zy=2.0*zx*zy+cy; zx=zxx; } putpixel(pix, x, y, iter, iter, iter); // vykreslen´ıpixelu zx0+=(MAXX-MINX)/pix->width; // posun na dalˇs´ıbod na ˇr´adku } zy0+=(MAXY-MINY)/pix->height; // posun na dalˇs´ıˇr´adek }

46 V druh´empˇr´ıkladu je provedena optimalizace poˇctuoperac´ıve vnˇejˇs´ısmyˇcce dvˇema pomocn´ymi promˇenn´ymizx2 a zy2, kter´eobsahuj´ımocninu re´aln´e(zx) a imagin´arn´ı(zy) sloˇzky promˇenn´ez [25]. Z praxe vyplynulo, ˇze oproti prvn´ıuveden´emetodˇese na modern´ıch CPU nemus´ıjednat o rychlejˇs´ımetodu, z d˚uvodu odliˇsn´eoptimalizace prov´adˇen´ıinstrukc´ı. zy0=MINY; for (y=0; yheight; y++) { // pro vˇsechnyˇr´adkyv pixmapˇe zx0=MINX; for (x=0; xwidth; x++) { // pro vˇsechnypixely na ˇr´adku zx=zx0; zy=zy0; // nastavit poˇc´ateˇcn´ıhodnotu Z(0) for (iter=0; iter4.0) break; // kontrola pˇrekroˇcen´ımeze divergence zy=2.0*zx*zy+cy; // v´ypoˇcetZ(n+1) zx=zx2-zy2+cx; } putpixel(pix, x, y, iter, iter, iter); // vykreslen´ıpixelu zx0+=(MAXX-MINX)/pix->width; // posun na dalˇs´ıbod na ˇr´adku } zy0+=(MAXY-MINY)/pix->height; // posun na dalˇs´ıˇr´adek }

V´ıcepˇr´ıklad˚ulze nal´ezt na [25] a detailnˇejˇs´ıpopis vˇsech druh˚uJuliov´ych mnoˇzin pak obsahuj´ınapˇr.texty [3, 12, 2].

5.1.3 Mandelbrotova mnoˇzina Abychom mohli vykrestlit Mandelbrotovu mnoˇzinu, je tˇreba zjistit, kter´ebody do mnoˇziny nepatˇr´ı.Z d˚ukazu demonstrovan´ehov [25] a na z´akladˇerovnice definuj´ıc´ımnoˇzinu vypl´yv´a, ˇzebody splˇnuj´ıc´ıpodm´ınku |z| > 2 do Mandelbrotovy mnoˇziny nen´aleˇz´ı. Posloupnost zn pro tyto body diverguje. Generov´an´ıMandelbrotovy mnoˇziny spoˇc´ıv´av testov´an´ı,zda absolutn´ıhodnota z ne- pˇrekroˇc´ıhodnotu 2. Pokud se tak stane, bod v mnoˇzinˇeneleˇz´ı.Jestliˇzeprobˇehne v´ypoˇcet vˇsech iterac´ı a absolutn´ı hodnota z hodnotu 2 nepˇres´ahne, je bod povaˇzov´anza prvek Mandelbrotovy mnoˇziny. Pˇresnost v´ypoˇctulze ovlivnit poˇctemiterac´ı[25, 12, 22]. Slovn´ıpopis algoritmu v´ypoˇctubod˚un´aleˇzej´ıc´ıch do Mandelbrotovy mnoˇziny, se vstup- n´ımi hodnotami c (komplexn´ıkonstanta) a MaxIter (maxim´aln´ıpoˇcet iterac´ı),lze zapsat n´asledovnˇe:

1. Nastav iteraˇcn´ıkrok iter = 0.

2. Nastav z = 0.

3. Jestliˇze je poˇcet iteraˇcn´ıch krok˚umenˇs´ıneˇzMaxIter opakuj:

• Nastav z = z2+c, • jestliˇze |z| > 2 bod neleˇz´ıv Mandebrotovˇemnoˇzinˇe, konec cyklu. • nastav iter = iter+1.

4. Bod leˇz´ıuvnitˇrMandelbrotovy mnoˇziny.

47 Pro vlastn´ıimplementaci algoritmu je tˇreba upravit parametry v´ypoˇctu, kv˚uli absenci datov´eho typu komplexn´ıho ˇc´ısla ve vˇetˇsinˇejazyk˚ua pomal´emu v´ypoˇctuodmocniny. Testo- vac´ıpodm´ınka divergence pak m´atvar zx ∗ zx + zy ∗ zy > 4. Pˇr´ıkladalgoritmu na v´ypoˇcetbod˚uMandelbrotovy mnoˇziny m˚uˇze vypadat n´asledovnˇe [25]: int MandelbrotTest(double cx, double cy) { double zx,zy,zx2,zy2,cx,cy; // komplexn´ıpromˇenn´aZ int iter; // poˇcetiterac´ı

zx=0; // vynulovat komplexn´ıpromˇennouC zy=0;

iter=0; // nastavit poˇcitadloiterac´ı

do { // iteraˇcn´ısmyˇcka zx2=zx*zx; // zx^2 zy2=zy*zy; // zy^2 zy=2.0*zx*zy+cy; zx=zx2-zy2+cx; // z:=z^2+c iter++; // zv´yˇsithodnotu poˇcitadlaiterac´ı }while (iter

if (iter==maxiter) // bod leˇz´ıuvnitˇrMandelbrotovy mnoˇziny return LEZI_UVNITR; else // bod leˇz´ıvnˇeMandelbrotovy mnoˇziny return LEZI_VNE; }

Dalˇs´ımoˇznosti algoritm˚ugeneruj´ıc´ıch frakt´aln´ıobrazce spolu s postupy pro obarven´ı lze nal´ezt napˇr.v [22, 25, 24]. Zaj´ımav´ymfrakt´alemje tak´enapˇr. Newtonova frakt´aln´ı mnoˇzina,avˇsakz kapacitn´ıch d˚uvod˚uje nutno odk´azatna zdroje uveden´ev literatuˇre.

48 5.2 Algoritmy L-syst´em˚u

Algoritmy L-syst´em˚ujsou ˇcastozaloˇzeny na tzv. ˇzelv´ıgrafice. Pravidla pro generov´an´ıjsou vˇetˇsinou pevnˇedan´a,vyuˇzit´ımprvku n´ahody dost´av´ame Stochastick´eL-syst´emy. Zelvaˇ je ovl´ad´anapˇr´ıkazy pro posun a natoˇcen´ı.Symboly, kter´ymije ovl´ad´anajsou uvedeny v tabulce 3.1 a v pˇr´ıpadˇepotˇreby lze tabulku doplnit o dalˇs´ıakce.

5.2.1 Kochova kˇrivka Informace o Kochovˇevloˇcce jsou uvedeny v kapitole 3.2 spolu s pˇrepisovac´ımi pravidly gramatiky, kter´ademonstruj´ıpostup vytv´aˇren´ıkˇrivky. Pˇrivytv´aˇren´ıalgoritmem je nutno nastavit krok ˇzelvy tak, aby se vykreslen´yobrazec vlezl do zobrazovan´eoblasti. Pˇriznalosti poˇctu iterac´ızjist´ıme kolik krok˚uˇzelva provede v horizont´aln´ımsmˇeru,na z´akladˇeˇcehoˇz vypoˇcteme krok ˇzelvy [25]: step = WINDOW_WIDTH/(pow(3, rulesCount))

WINDOW WIDTH urˇcuje ˇs´ıˇrkuokna a rulesCount ud´av´apoˇcet pˇrepis˚usymbolu F. Algo- ritmus aplikace pˇrepisovac´ıch pravidel, pak vypad´an´asledovnˇe: void applyRule(void) { int i, j, k; // pocitadla smycek a indexy znaku char src[MAX_LENGTH]; // zdrojovy retezec char dest[MAX_LENGTH]; // cilovy retezec int fcount=0; // pocet prepisu strcpy(src, ret); puts(src); // kontrolni vypis pred prepisem for (i=0, j=0; src[i]; i++) { // projit celym retezcem if (src[i]==’F’) { // tento symbol se ma prepsat for (k=0; prepstr[k]; k++) // provest prepis dest[j++]=prepstr[k]; } else { // ostatni symboly kopirovat dest[j]=src[i]; j++; } } dest[j]=0;

for (j=0; dest[j]; j++) if (dest[j]==’F’) fcount++; puts(dest); // kontrolni vypis po prepisu printf(‘‘fcount=%d\n’’, fcount); strcpy(ret, dest); }

Pro generov´an´ınapˇr.Sierpinsk´ehotroj´uheln´ıku, Hilbertovy kˇrivky nebo Draˇc´ıkˇrivky se d´avyuˇz´ıtparaleln´ıch pˇrepisovac´ıch algoritm˚u[12, 25], kdy nez´avis´ına poˇrad´ıaplikace pˇrepisovac´ıch pravidel a tyto se projev´ıvˇzdy aˇzv n´asleduj´ıc´ımiteraˇcn´ımkroku. Algoritmu

49 jsou uvedeny v seri´aluo frakt´alech na Root.cz, stejnˇejako dalˇs´ıtypy technik zab´yvaj´ıc´ıch se vytv´aˇren´ımL-syst´em˚u.

5.3 Algoritmy IFS

Jak bylo uvedeno v kapitole 3.3, pro generov´an´ıIFS frakt´al˚use vyuˇz´ıvaj´ıtransformace. Nejvhodnˇejˇs´ızp˚usobjejich z´apisu jsou transformaˇcn´ımatice, pˇr´ıpadnˇe vektory posunu, kter´e pˇri programov´an´ıuˇsetˇr´ıpamˇet’ a urychl´ıv´ypoˇcty. Transformace je v ploˇse E2 pops´anamatic´ı U o velikosti 2 × 2 a vektorem posunu V s dvˇema prvky [25, 24]. Analogicky pro prostor E3 bude matice rozmˇeru3 × 3 a vektor bude m´ıt tˇriprvky. Koeficienty matice U se uplatˇnuj´ıpˇriaplikac´ıch transformac´ırotace, zkosen´ı,zmˇeny mˇeˇr´ıtka. Koeficienty vektoru V se pouˇz´ıvaj´ık posunu. Pro vlastn´ıimplementaci je vˇsakvyuˇz´ıv´ano transformaˇcn´ımatice T, kter´aje slouˇcen´ım matice U a vektoru V. V rovinˇebude m´ıt T rozmˇer 3 × 3 a v prostoru 4 × 4. Mnoˇzinu zobrazen´ı Φ = {φ1, . . . , φn} (viz kapitola 3.3,[2, 25]) doplˇnuje mnoˇzina pravdˇepodobnostn´ıΠ = {π1, . . . , πn}, πi > 0, kter´aurˇcuje pravdˇepodobnost pouˇzit´ıjed- notliv´ych transformac´ıpˇri vytv´aˇren´ıfrakt´alu. Souˇcet jednotliv´ych pravdˇepodobnost´ımus´ı b´yt roven jedn´e.D´aleje moˇzn´eˇr´ıci,ˇze ˇc´ımvˇetˇs´ıpravdˇepodobnost transformace φi, t´ım vˇetˇs´ımus´ıb´ytm´ıra jej´ıkontrakce. Pokud vytv´aˇren´yobjekt nem´akontrahuj´ıc´ıtransfor- maci, nejedn´ase o IFS (viz [3, 2, 25, 24]) Syst´emiterovan´ych funkc´ıje tedy urˇcen vztahem 5.4.

IFS = (Φ, Π) = ({φ1, . . . , φn}, {π1, . . . , πn}) (5.4)

5.3.1 Algoritmus n´ahodn´eproch´azky(RWA) Algoritmus n´ahodn´eproch´azkyje jedn´ımz nejjednoduˇsˇs´ıch algoritm˚upro generov´an´ıIFS frakt´aln´ıch objekt˚u.Jeho v´yhodou je jednoduchost a mal´en´aroky na pamˇet’. Nev´yhodou je nutnost generov´an´ıvelk´ehopoˇctubod˚upro zobrazen´ıfrakt´alu,z ˇcehoˇzv´ypl´yv´amoˇzn´a duplicita vykreslov´an´ınˇekter´ych ˇc´ast´ı.V opaˇcn´em pˇr´ıpadˇepˇrin´ızk´empoˇctuiterac´ımohou nˇekter´eˇc´ast´ıobrazce chybˇet [3, 25, 24]. Princip generov´an´ıIFS pomoc´ıalgoritmu RWA je n´asleduj´ıc´ı:

1. Zvol´ımen´ahodn´ybod P0 v rovinˇe/prostoru.

2. V´ybˇer transformace φi z mnoˇziny Φ na z´akladˇezvolen´ehodnoty pravdˇepodobnosti πi z mnoˇziny Π. Zaruˇc´ı se t´ım dodrˇzen´ı, poˇcet pouˇzit´ı transformace na z´akladˇe pravdˇepodobnosti.

3. Do dosaˇzen´ızadan´eho poˇctu iterac´ıopakujeme:

(a) aplikace vybran´etransformace na bod - zmˇena souˇradnic, (b) v´ybˇer dalˇs´ıtransformace.

Bod P0 nemus´ıleˇzetv atraktoru, proto je vhodn´enˇekolik prvn´ıch iterac´ınezobrazovat. Vhodˇezvolen´ypoˇcet iterac´ıovlivˇnuje kvalitu v´ystupu (duplicita/absence bod˚u).Zkr´acen´y uk´azkov´yalgoritmus RWA pro vygenerov´an´ıIFS kol´aˇzeje pˇrevzat z Root.cz [25]. Uveden´y pˇr´ıkladvygeneruje kapradinu podobnou obr´azku 3.9. Transformaˇcn´ımatice spolu s vek- torem pravdˇepodobnosti transformac´ıpro takov´ytoIFS syst´emje:

50 float t[4][2][3]; // transformaˇcn´ımatice float p[4]; // vektor pravdˇepodobnostitransf

// transformaˇcn´ımatice t[0][0][0]= 0.000; t[0][0][1]= 0.000; t[0][0][2]= 0.000; t[0][1][0]= 0.000; t[0][1][1]= 0.160; t[0][1][2]= 0.000;

t[1][0][0]= 0.200; t[1][0][1]=-0.260; t[1][0][2]= 0.000; t[1][1][0]= 0.230; t[1][1][1]= 0.220; t[1][1][2]= 1.600;

t[2][0][0]=-0.150; t[2][0][1]= 0.280; t[2][0][2]= 0.000; t[2][1][0]= 0.260; t[2][1][1]= 0.240; t[2][1][2]= 0.440;

t[3][0][0]= 0.850; t[3][0][1]= 0.040; t[3][0][2]= 0.000; t[3][1][0]=-0.040; t[3][1][1]= 0.850; t[3][1][2]= 1.600;

// vektor pravdˇepodobnostitransformace p[0]=0.01; p[1]=0.07; p[2]=0.08; p[3]=0.84;

Vlastn´ıiteraˇcn´ıcyklus pak vypad´an´asledovnˇe:

while (iter++ threshold) // je-li dosaˇzenohranice iterac´ı // vykreslen´ıpixelu putpixel(pix, x*scale+xpos, y*scale+ypos, 0xff, 0xff, 0xff); }

Algoritmus RWA nach´az´ıvyuˇz´ıt´ıv ekonomice v modelech akciov´ych trh˚u,v populaˇcn´ı genetice, kde statisticky popisuje genetick´ysmˇer. Ve fyzice je pouˇz´ıv´anke zjednoduˇsen´ı modelu Brownova pohybu a v teorii kvantov´eho pole. Dalˇs´ımioblastmi pouˇzit´ıRWA jsou kombinatorika, biologie (v´yzkum mozku, pohyb oˇc´ı), psychologie atd. Nˇekter´euk´azkylze nal´ezt napˇr.na wikipedia.org (Random Walk) [23]. Vˇetˇsinouse jedn´ao ekonomick´ezamˇeˇren´ı.

51 5.3.2 Deterministick´yalgoritmus (DIA) Druh´ym uveden´ymalgoritmem pro v´ypoˇcetIFS frakt´al˚uje deterministick´yalgoritmus (DIA - Deterministic Algorithm). Od pˇredchoz´ıho RWA se liˇs´ıpˇr´ıstupem ke generov´an´ıbod˚u. RWA v kaˇzd´eiteraci vypoˇc´ıt´avˇzdy jeden bod, zat´ımco DIA vyˇc´ısl´ıbod˚uv´ıce [3, 25]. Nen´ınutno poˇc´ıtatani s pravdˇepodobnost´ıjednotliv´ych transformac´ı, protoˇzena mnoˇzinu bod˚use vˇzdy aplikuj´ı vˇsechny transformace z dan´ehoIFS. RWA pouˇz´ıv´apro v´ypoˇcet n´ahodn´aˇc´ısla a pr˚ubˇeh generov´an´ı je stochastick´y,zat´ımco DIA pouˇzit´ım vˇsech trans- formac´ısouˇcasnˇenemus´ıˇz´adnou z nich vyb´ırat. Postup generov´an´ıIFS pomoc´ıalgoritmu DIA, jeˇzse obvykle realizuje dvˇemivnoˇren´ymi cykly, je:

1. zvol´ıse nˇekolik bod˚uv prostoru,

2. do dosaˇzen´ızadan´eho poˇctuiterac´ıopakujeme:

(a) aplikuj´ıse vˇsechny transformace tvoˇr´ıc´ıIFS syst´em, (b) vˇsechny vznikl´ebody jsou mnoˇzinou bod˚upro dalˇs´ıiteraci.

IFS vznikl´egenerov´an´ım algoritmy RWA a DIA m˚uˇzeme porovnat na obr´azc´ıch 5.1 respektive 5.2. Je patrn´e,ˇze se v´ysledn´efrakt´aly liˇs´ı.

Obr´azek 5.1: IFS vytvoˇren´yRWA

Obr´azek 5.2: IFS vytvoˇren´yDIA

N´asleduj´ıc´ıˇc´ast zdrojov´ehok´odu zn´azorˇnuje implementaci algoritmu DIA.

52 //------// Pˇrekreslen´ıIFS pomoc´ırekurzivn´ıhoalgoritmu DIA //------void recalcIFSusingDIA(float x, float y, int depth) { float xn, yn; // poloha iterovan´ehobodu int k; // ˇc´ıslotransformace

if (depth) { // pro vˇsechnytransformace v~IFS for (k=0; kthreshold) // je-li dosaˇzenohranice iterac´ı switch (drawType) { // v´ybˇervykreslovac´ıhoreˇzimu case IterPutPixel: putpixel(pixIFS, x*scale+xpos, y*scale+ypos, rf ? 0xff:0x00, gf ? 0xff:0x00, bf ? 0xff:0x00); break; case IterAddPixel: addpixel(pixIFS, x*scale+xpos, y*scale+ypos, red, green, blue); break; case TransfPutPixel: putpixel(pixIFS, x*scale+xpos, y*scale+ypos, pal[k&7][0], pal[k&7][1], pal[k&7][2]); break; case TransfAddPixel: addpixel(pixIFS, x*scale+xpos, y*scale+ypos, (!!pal[k&7][0])*deltar, (!!pal[k&7][1])*deltag, (!!pal[k&7][2])*deltab); break; default: break; } // konec switche // rekurze - v´ypoˇcetdalˇs´ıch‘‘transf’’ pixel˚u recalcIFSusingDIA(xn, yn, depth-1); } // konec for cyklu } // konec if (depth) } // konec tˇelafuknce

Dalˇs´ımialgoritmy generuj´ıc´ıIFS, je modifikovan´yalgoritmus n´ahodn´eproch´azky M- RWA, kter´yspojuje v´yhody RWA a DIA, a algoritmus generov´an´ıminima pixel˚u MPA (Minimal Plotting Algorithm).

53 5.3.3 Modifikovan´yalgoritmus n´ahodn´eproch´azky (M-RWA) Modifikovan´yalgoritmus n´ahodn´e proch´azky M-RWA m´apozmˇenˇen fuknˇcn´ı princip a pracuje tak, ˇze na bod se v kaˇzd´eiteraci aplikuj´ıvˇsechny transformace, ale pouze nˇekter´e body (alespoˇn1) jsou pouˇzity pro dalˇs´ıiterace [25]. V´yhodou t´eto ´upravy je pˇribliˇznˇestejn´a pamˇet’ov´an´aroˇcnost jako m´aklasick´yRWA a pomˇernˇerychl´egenerov´an´ıfrakt´alu. Lze jej vyuˇz´ıt pro generov´an´ı v´yˇrez˚uobrazce. Transformace pro dalˇs´ı iterace se mohou vyb´ırat stejnˇejako u RWA pravdˇepodobnostn´ımnoˇzinou Π, nebo zvolen´ımhashovac´ıfunkce. Algoritmus M-RWA, kter´yje opˇetrealizov´andvˇema vnoˇren´ymicykly, lze slovnˇepopsat n´asleduj´ıc´ımzp˚usobem:

1. zvol´ımen´ahodn´ybod P0 v rovinˇe/prostoru, 2. do dosaˇzen´ızadan´eho maxim´aln´ıho poˇctu iterac´ıopakujeme:

(a) postupnˇevyb´ır´ametransformace φk,

i. aplikace vybran´etransformace na bod a v´ypoˇcet nov´ehobodu Pi+1, ii. pokud se nejedn´ao prvn´ıiteraci, vykresli bod Pi.

Algoritmus st´alenen´ı deterministick´y,protoˇze dalˇs´ıho generov´an´ı se ´uˇcastn´ı pouze nˇekolik transformac´ı,kter´ebyly aplikov´any na vybran´ebody. K´odalgoritmu M-RWA [25], bez pouˇzit´ıpravdˇepodobnosti transformac´ıΠ (v´ybˇer se prov´ad´ıgener´atoremn´ahodn´ych ˇc´ısel), pak vypad´an´asledovnˇe:

// pomocn´asmyˇcka,ve kter´ese zjist´ıpoˇcettransformac´ı for (sum=0.0, maxTransf=0; sum<1.0; sum+=(*t)[maxTransf][6], maxTransf++); while (iter++threshold) { // je-li dosaˇzenohranice iterac´ı switch (drawType) { // v´ybˇervykreslovac´ıhoreˇzimu case IterPutPixel: putpixel(pix, xn*scale+xpos, yn*scale+ypos, rf ? 0xff:0x00, gf ? 0xff:0x00, bf ? 0xff:0x00); break; case IterAddPixel: addpixel(pix, xn*scale+xpos, yn*scale+ypos, red, green, blue); break; case TransfPutPixel: putpixel(pix, xn*scale+xpos, yn*scale+ypos, pal[k&7][0], pal[k&7][1], pal[k&7][2]); break; case TransfAddPixel: addpixel(pix, xn*scale+xpos, yn*scale+ypos, (!!pal[k&7][0])*dr, (!!pal[k&7][1])*dg, (!!pal[k&7][2])*db); break;

54 default: break; } } } k=rand()%maxTransf; // v´ybˇerbodu x(n) na z´akladˇen´ahodn´ehoˇc´ısla hlp=(*t)[k][0]*x+(*t)[k][1]*y+(*t)[k][4]; // proveden´ı y =(*t)[k][2]*x+(*t)[k][3]*y+(*t)[k][5]; // transformace x =hlp; }

5.3.4 Algoritmus generov´an´ıminima pixel˚u(MPA) Algoritmus MPA (Minimal Plotting Algorithm) m´aproti pˇredchoz´ımalgorirm˚um v´yhodu v tom, ˇzese nesnaˇz´ızobrazit frakt´alnaprosto pˇresnˇe, ale zobrazuje pouze tzv. reprezenta- tivn´ıˇc´astobrazce [25, 7]. Vizu´alnˇereprezentativn´ıˇc´ast frakt´aluje koneˇcn´a,coˇzznamen´aˇzeje tvoˇrena koneˇcn´ym poˇctem bod˚u,a proto m˚uˇze b´ytzobrazena v koneˇcn´em ˇcase. MPA je efektivn´ı, protoˇze pracuje pˇr´ımos jednotliv´ymipixely v E2 nebo E3. Pixel se od bodu odliˇsuje t´ım,ˇzem´a pevn´esouˇradnice a pevnou velikost. Mezi dvˇema pixely leˇz´ıkoneˇcn´emnoˇzstv´ıpixel˚u, coˇz pro dva body neplat´ı. Pomocn´ymdatov´ym typem u tohoto algoritmu je fronta (queue), kam se ukl´adaj´ıadresy pixel˚u.Poˇc´ateˇcn´ıbody se nevyb´ıraj´ın´ahodnˇe, pro kaˇzdou transformaci je vypoˇcten pevn´y bod x0 (kapitoly 2.43.3), jehoˇzadresa je uloˇzena do fronty. Postupnˇejsou z n´ıvyb´ır´any a jsou na nˇeaplikov´any transformace. Nov´epixely se porovnaj´ına z´akladˇeadres s pixely jiˇzvykreslen´ymi.Neduplicitn´ıpixely se vykresl´ıa jejich adresa se uloˇz´ına konec fronty, atributy ostatn´ıch pixel˚use neukl´adaj´ı.Algoritmus nepoˇc´ıt´aproveden´eiteraˇcn´ıkroky, je- likoˇzkonec nast´av´avypr´azdnˇen´ımfronty pixel˚u, a ani nen´ınutno poˇc´ıtat pravdˇepodobnost transformac´ı. MPA je deterministick´yalgoritmus [25, 7]. Algoritmus zaˇc´ın´ainicializac´ı:

• nalezen´ıvˇsech pevn´ych bod˚u x0 pro vˇsechny transformace φi, • vykreslen´ıpixel˚uodpov´ıdaj´ıc´ıch tˇemto bod˚um,

• inicializace fronty s adresami vykreslen´ych pixel˚u.

Dokud nen´ıfronta pr´azdn´a,opakuj:

1. vyjmut´ıadresy pixelu z poˇc´atkufronty, pˇreveden´ına souˇradnice bodu P,

2. pro vˇsechny transformace z mnoˇziny Φ opakuj:

(a) aplikace transformace φk na bod P a v´ypoˇcet nov´ehobodu, Pk.

(b) Zzokrouhlen´ısouˇradnice Pk, aby odpov´ıdala pixelu,

(c) pokud na dan´esouˇradnici nen´ıvykreslen bod, vykresli bod Pk a vloˇzjeho adresu na konec fronty.

V´yhody algoritmu MPA spoˇc´ıvaj´ı ve vykreslen´ı kaˇzd´ehobodu pouze jednou a nej- sou na nˇejjiˇzprov´adˇeny ˇz´adn´etransformace. Algoritmus mus´ıskonˇcitv koneˇcn´em ˇcase,

55 protoˇze v nejhorˇs´ımpˇr´ıpadˇese vygeneruj´ıvˇsechny pixely na obrazovce. MPA je pamˇet’ovˇe nen´aroˇcn´y,ukl´ad´ase pouze bitmapa obrazu a fronta s adresami pixel˚u. Nev´yhodou je hled´an´ı kaˇzd´ehovypoˇcten´eho pixelu ve frontˇe(komplikace v´ypoˇct˚ua zdrˇzen´ıpˇriv´ypoˇctu obrazce) a tak´enepraktiˇcnostpˇrigenerov´an´ıv´yˇrez˚ufrakt´alu(algoritmus poˇc´ıt´ai body mimo viditelnou oblast).

5.3.5 Fractal flame Fractal flames se generuj´ıstejnˇejako IFS algoritmem n´ahodn´eproch´azky (RWA) a obsahuj´ı rozˇs´ıˇren´ıspecifick´apro tento druh frakt´al˚u. Jak jiˇzbylo uvedeno v kapitole 3.12, pouˇz´ıvaj´ıse pˇrigenerov´an´ıflame frakt´al˚uneline´arn´ı transformace naz´yvan´evariace, jeˇzjsou uvedeny v tabulce 3.3. Pro implementaci v C se vytvoˇr´ı funkce vx() a vy() s tˇremi parametry. Z´apis variac´ı v programovac´ım jazyce je jednoduch´ya je k nalezen´ıv d´ılunazvan´emalgoritmus Fractal Flame prakticky seri´alu Pavla Tiˇsnovsk´eho. N´asleduj´ıc´ık´oddemonstruje pr´acis obarvov´an´ımfrakt´aluflame. Pixely se pˇr´ımonezapisuj´ıdo pixmapy pro vykreslov´an´ı,ale ukl´adaj´ıse do pomocn´eho pole, kde se mˇen´ıhodnoty ˇc´ıtaˇc˚uzavol´an´ım funkce addfloat() [25].

//------// Pˇr´ır˚ustekbarvy pixelu na zadan´ychsouˇradnic´ıchve floatov´e // monochromatick´epixmapˇe //------void addfloat(const unsigned int x, const unsigned int y) { // kontrola, zda nen´ıpˇrekroˇcenavelikost pixmapy // (z´aporn´ehodnoty nen´ıd´ıkypˇrevoduna unsigned int zapotˇreb´ı // br´atv potaz) if (x>=PIXMAP_WIDTH || y>=PIXMAP_HEIGHT) return; // zv´yˇsithodnotu ˇc´ıtaˇce floatMap[y][x]++; }

Z vygenerovan´ych hodnot se vybere hodnota maxim´aln´ı,zlogaritmuje se a provede se jej´ıpˇrevod do rozsahu 0..255. Novˇez´ıskan´ehodnoty se zap´ıˇs´ıdo pixmapy, kter´ase vykresl´ı na obrazovce.

//------// Kopie pixelu z floatov´epixmapy do pixmapy kompatibiln´ıs // OpenGL spolu s logaritmick´ympˇrevodemmˇeˇr´ıtka //------void convertFloatMap(void) { float maxp=0; float pixelFactor; // faktor konverze int i, j; // ˇc´ıtaˇcesmyˇcek // zjistit maxim´aln´ıhodnotu uloˇzenouve floatov´epixmapˇe for (j=0; j

56 pixelFactor=255.0/log(maxp); // vypoˇc´ıtatfaktor konverze

// konverze a zmˇenana logaritmick´emˇeˇr´ıtko // s t´ım,ˇzev´ysledn´ebarvov´esloˇzkyjsou v rozsahu 0..255 for (j=0; j

Pro vykreslen´ıfrakt´aluje nutno vytvoˇrit pole s koeficienty jednotliv´ych transformac´ı, viz Root.cz [25]. Vlastn´ısmyˇcka generov´an´ıFractal Flame, ve kter´ese IFS popsan´ypolem obsahuj´ıc´ımv ˇr´adc´ıch informace o transformac´ıch pˇrepoˇc´ıt´a,m˚uˇze vypadat takto: while (iter++threshold) { // je-li dosaˇzenohranice iterac´ı double xx=x*scale+xpos; double yy=y*scale+ypos; switch (drawType) { // v´ybˇervykreslovac´ıhoreˇzimu case IterPutPixel: putpixel(pix, xx, yy, rf?0xff:0x00, gf?0xff:0x00, bf?0xff:0x00); break; case IterAddPixel: addpixel(pix, xx, yy, red, green, blue); break; case IterLogPixel: addfloat(xx, yy); break; case TransfPutPixel: putpixel(pix, xx, yy, pal[k&7][0], pal[k&7][1], pal[k&7][2]); break; case TransfAddPixel: addpixel(pix, xx, yy, (!!pal[k&7][0])*dr, (!!pal[k&7][1])*dg, (!!pal[k&7][2])*db); break; case TransfLogPixel: addfloatRGB(xx, yy, (!!pal[k&7][0]), (!!pal[k&7][1]), (!!pal[k&7][2])); break;

57 default: break; } } x=xn; y=yn; }

5.4 Algoritmy stochastick´ych frakt´al˚u

5.4.1 Simulace dif´uze Dif´uzilze prov´estnˇekolika zp˚usoby. Postup je moˇzn´epopsat takto [25]:

• V urˇcen´emprostoru se vygeneruje 1 ˇc´astice nebo skupina ˇc´astic,tyto se naz´yvaj´ı sem´ınka. Zvolen´epozice maj´ıvliv na tvar frakt´alu.

• Dalˇs´ısem´ınka se generuj´ına n´ahodn´ych m´ıstech.

– Pokud se setkaj´ı s jiˇzvygenerovan´ym´utvarem, stanou se souˇc´asti frakt´alu a vygeneruje se nov´aˇc´astice na n´ahodn´em m´ıstˇeprostoru. – Sem´ınka zaniknou, pokud se nesetkaj´ıs jiˇzexistuj´ıc´ım obrazcem.

• Generov´an´ınov´ych sem´ınek se prov´ad´ıdokud poˇcet ˇc´asticfrakt´aluje niˇzˇs´ıneˇzzvolen´a konstanta, nebo nˇejak´aˇc´asticedos´ahne hranice plochy pro vytv´aˇren´ıfrakt´alu.

Dotyk vygenerovan´eho sem´ınka s existuj´ıc´ım´utvarem se rozliˇzuje podle vzd´alenostinovˇe vytvoˇren´eho bodu od tohoto ´utvaru. Je zvolena limitn´ıvzd´alenost lmin, kdy se jiˇzpovaˇzuje bod dostateˇcnˇebl´ızk´yfrakt´alu,aby k nˇemu mohl b´ytpˇripojen. Podle tohoto postupu lze popsat algoritmus dif´uzepro generov´an´ıstochastick´ehofrakt´alu [25]. Hlavn´ısmyˇcka programu opakuje vnitˇrn´ıcyklus do dosaˇzen´ımaxim´aln´ıhopoˇctu ite- rac´ı:

1. vygeneruj dvojici n´ahodn´ych ˇc´ısel xi, yi,

2. pro frakt´alv prostoru vygeneruj tˇret´ısouˇradnici zi, 3. z t´etodvojice/trojice vytvoˇrbod P,

4. pokud bod P leˇz´ıv oblasti pro generov´an´ıfrakt´alua jeho vzd´alenostod obrazce Pf je menˇsineˇz lmin, pˇridej bod P do mnoˇziny Pf a ukonˇci vnitˇrn´ıcyklus, 5. nov´eopakov´an´ıvnitˇrn´ıho cyklu od 1.

58 Hlavn´ıcyklus algoritmu simulace dif´uzepˇrevzat´yze seri´aluna Root.cz [25] v jazyce Java pak vypad´an´asledovnˇe:

do { // vnˇejˇs´ısmyˇcka,kter´ase zastav´ı doneInnerLoop=false; // po nastaven´ıukonˇcovac´ıpodm´ınky do { // vnitˇrn´ısmyˇcka double x=Math.random()*(float)(width-2)+1; // generovat bod double y=Math.random()*(float)(height-2)+1; xi=(int)x; yi=(int)y; // pokud se bod nach´az´ıv bl´ızkostiobrazce if (neighboor(neighboorType, xi, yi)) { putPoint(xi, yi); // pˇridatho do frakt´alu doneInnerLoop=true; // a ukonˇcitvnitˇrn´ısmyˇcku } } while (!doneInnerLoop); counter++; if (counter==50) { // pr˚ubˇeˇzn´yv´ypispr´aceprogramu label.setText(‘‘Points: ’’+String.valueOf(i)); counter=0; } i++; // test na ukonˇcen´ıvnˇejˇs´ısmyˇcky } while (!checkStopCondition(i, xi, yi));

Urychlen´ısimulace dif´uze Pro uchov´av´an´ıdat bˇehemgenerov´an´ıfrakt´aluurychlen´ym algoritmem simulace dif´uze se vyuˇz´ıvaj´ıdvˇedatov´estruktury: line´arnˇev´azan´yseznam, kter´yobsahuje ´udaje o ˇc´astic´ıch, a d´ale pak rastrovou mˇr´ıˇzku, ploˇsnou nebo prostorovou, kde jsou rovnˇeˇzuloˇzeny informace o ˇc´astic´ıch, ale tak´epˇr´ıznakobsazenosti buˇnky. D´ıkytomu, ˇze pˇr´ıznak lze uloˇzit v jednom bitu, je datov´astruktura pamˇet’ovˇe´usporn´a.Pˇriv´ypoˇctualgoritmem simulace dif´uzese mˇen´ıpouze pˇr´ıznak obsazenosti buˇnky a pouˇzit´ımˇr´ıˇzky je proto v´yhodnˇejˇs´ıa rychlejˇs´ı[25]. Slovn´ıpopis hlavn´ısmyˇckytakto modifikovan´eho algoritmu simulace dif´uzeje n´asleduj´ıc´ı, cyklus opˇetopakuje do maxim´aln´ıho poˇctu iterac´ı:

1. vygeneruj dvojici n´ahodn´ych ˇc´ısel xi, yi,

2. pro frakt´alv prostoru vygeneruj tˇret´ısouˇradnici zi,

3. souˇradnice P = [xi, yi](P = [xi, yi, zi]) mus´ıleˇzetv oblasti vymezen´epro generov´an´ı, 4. z ˇc´ısel vytvoˇrdvojici/trojici tak, aby urˇcovaly bod P,

5. pokud v okol´ıbodu P leˇz´ıpixel/voxel s pˇr´ıznakem obsazenosti, nastav´ıse pixelu/voxelu odpov´ıdaj´ıc´ımu bodu P, takt´eˇzpˇr´ıznak obsazen´ı,

6. nov´eopakov´an´ıvnitˇrn´ıho cyklu od bodu 1.

59 5.4.2 Metoda pˇresouv´an´ıprostˇredn´ıho bodu Jak bylo pops´ano v kapitole 3.4.2, spoˇc´ıv´ametoda pˇresouv´an´ı prostˇredn´ıho bodu v re- kurzivn´ım dˇelen´ı´useˇcky ˇciˇctverce s n´aslednou zmˇenou pozice nalezen´eho bodu o pˇredem definovan´ykoeficient ∆. Nejjednoduˇsˇs´ımpˇr´ıpadem je dˇelen´ı´useˇcky. Pˇr´ıklad hlavn´ıfunkce, jeˇzje vol´anarekurzivnˇe a realizuje rozdˇelen´ı´useˇckya n´asledn´yposun nalezen´ehobodu [25], je:

//------// Rekurzivnˇevolan´ametoda, kter´aprovede rozdˇelen´ı´useˇckya posun // prostˇredn´ıhobodu //------void mdaRecursive1D(float x1, float y1, float x2, float y2, float Delta, int iter) { float x,y; if (!iter) { // pokud jsme dos´ahlimax poˇctuiterac´ı // vykreslen´ırozdˇelen´e´useˇckyna nejniˇzˇs´ı´urovni glVertex2f(x1, y1); glVertex2f(x2, y2); return; // a ukonˇcen´ırekurze } x=(x1+x2)/2.0; // v´ypoˇcetpolohy prostˇredn´ıhobodu y=(y1+y2)/2.0; y+=my_random()*Delta-Delta/2.0; // posun prostˇredn´ıhobodu // rekurzivn´ıvol´an´ına prvn´ıpolovinu ´useˇcky mdaRecursive1D(x1, y1, x, y, Delta/2.0, iter-1); // rekurzivn´ıvol´an´ına druhou polovinu ´useˇcky mdaRecursive1D(x, y, x2, y2, Delta/2.0, iter-1); }

Generov´an´ıplazmy Pro generov´an´ıplazmy se pouˇz´ıv´arozˇs´ıˇren´ımetody dˇelen´ı´useˇcky, kdy rekurzivnˇedˇel´ıme ˇctverec. Funkci se pˇred´avaj´ıhodnoty ˇctyˇrhraniˇcn´ıch bod˚uvymezuj´ıc´ıˇctverec (x1, y1, x2, y2), ˇctyˇrihodnoty barev v tˇechto bodech (c1, c2, c3, c4) a koeficient ∆ (delta) urˇcuj´ıc´ımaxim´aln´ı odchylku posunu prostˇredn´ıho bodu [25]. Pixel se vykresluje v okamˇziku, kdy velikost ˇctverce dos´ahne rozmˇeru 1 × 1 pixel. U vˇetˇs´ıch ˇctverc˚use vypoˇctou barvy ve stˇredech hran a stˇredu ˇctverce. Posledn´ıbarva pixelu vypoˇcten´av pˇredchoz´ım kroku je zmˇenˇena o n´ahodnou hodnotu ∆ a funkce je rekurzivnˇezavol´ana na ˇctyˇripodˇctverce: void plasma(int x1, int y1, int x2, int y2, int c1, int c2, int c3, int c4, int delta) { #define avg(x, y) (((x)+(y))>>1) #define step(x, y) (((x)-(y))>>1) #define bound(x) if (x>255) x=255; if (x<0) x=0; #define displac(x, delta) (x+(rand()%(delta*2)-delta))

60 // pokud jsme nedos´ahlijednopixelov´ehokroku if (x2-x1>1) { int dc12=avg(c1, c2); // v´ypoˇcetpr˚umˇerubarev na hran´achˇctverce int dc13=avg(c1, c3); int dc24=avg(c2, c4); int dc34=avg(c3, c4); int dc =avg(dc13, dc24); // v´ypoˇcetpr˚umˇern´ebarvy ve stˇreduˇctverce int dx=step(x2, x1); // krok - polovina velikosti ˇctverce int dy=step(y2, y1); if ((x2-x1>2) && (delta>0)) dc=displac(dc, delta); // posun stˇredn´ıhobodu o n´ahodnouhodnotu bound(dc); // zajiˇstˇen´ımez´ıbarev v povolen´emrozsahu bound(c1); bound(c2); bound(c3); bound(c4); delta>>=1; // maxim´aln´ın´ahodn´ahodnota se zmenˇsujena polovinu // rekurzivn´ırozdˇelen´ıvˇsechˇctyˇrpodˇctverc˚u plasma(x1, y1, x1+dx, y1+dy, c1, dc12, dc13, dc, delta); plasma(x1+dx, y1, x2, y1+dy, dc12, c2, dc, dc24, delta); plasma(x1, y1+dy, x1+dx, y2, dc13, dc, c3, dc34, delta); plasma(x1+dx, y1+dy, x2, y2, dc, dc24, dc34, c4, delta); } else { // bylo dosaˇzenohranice rozliˇsen´ıpixmapy putpixel(pix, x1, y1, (c1+c2+c3+c4)/4, (c1+c2+c3+c4)/4, (c1+c2+c3+c4)/4); } #undef avg #undef step #undef bound }

Dalˇs´ıpˇr´ıklady algoritm˚upro generov´an´ıplazmy je moˇzno naj´ıtv [25, 20, 14]

61 Kapitola 6

V´ysledky pr´ace

6.1 Slajdy

Jedn´ım z c´ıl˚udiplomov´epr´acebylo jednoduch´yma srozumiteln´ymzp˚usobem objasnit z´akladn´ı v´yvoj, dˇelen´ı a vyuˇzit´ı frakt´aln´ı geometrie. Souˇc´ast´ı praktick´eˇc´asti pr´ace byla i tvorba slajd˚upro moˇznostprezentace t´ematu frakt´aln´ıgeometrie student˚um FIT VUT v Brnˇe. Tato problematika by mohla b´ytsouˇc´ast´ıpˇredmˇetuPoˇc´ıtaˇcov´agrafika a jej´ıgrafick´e ztv´arnˇen´ıformou prezentace bylo pr˚ubˇeˇznˇekonzultov´anos pˇredn´aˇsej´ıc´ım, aby odpov´ıdalo struktuˇre a ˇcasov´ymmoˇznostem v´yukov´ehodiny. Slajdy jsou k dispozici ve form´atech PDF a PPT o rozsahu 59 stran. Prvn´ıslajd je pokryt pˇrehledem d´aleuv´adˇen´el´atky. V ´uvodu je nast´ınˇenoz´akladn´ıdˇelen´ı objekt˚ua historie “zvl´aˇstn´ıch ´utvar˚u” pˇred rokem 1975, kdy poprv´ev jejich souvislosti zaznˇel pojem “frakt´al”.Jednotliv´eetapy v´yvoje frakt´aln´ıch obrazc˚uprov´azej´ıv´yznamn´a jm´ena,jako je L´evy, Hausdorf, Mandelbrot aj. Jeˇstˇepˇredsamotn´ymv´yˇctem jednotliv´ych typ˚ufrakt´al˚ujsou ve slajdech uvedeny nejd˚uleˇzitˇejˇs´ı pojmy a charakteristiky (obr 6.1), kter´ev pˇredn´aˇsce budou slovn´ım doprovodem definov´any.

Obr´azek 6.1: Z´akladn´ıpojmy

62 T´ematicky jsou slajdy d´aleˇrazeny do kapitol, kter´epokr´yvaj´ı problematiku dˇelen´ı frakt´aln´ıch obrazc˚udo skupin na z´akladˇepodobn´ych charakteristick´ych vlastnost´ı,jak lze vidˇet na obr´azku 6.2.

Obr´azek 6.2: Charakteristiky skupin frakt´al˚u

Vlastn´ı prezentace poznatk˚ufrakt´aln´ı geometrie by pak mˇela odpov´ıdat struktuˇrea rozsahu uv´adˇen´emu v diplomov´epr´aci. Informace nad r´amec pr´acelze dohledat v literatuˇre.

63 Graficky jsou uvedeny typick´epˇr´ıklady jednotliv´ych syst´em˚ua u nˇekter´ych pro n´azornost uk´az´any detaily nach´azej´ıc´ıse v jednotliv´ych segmentech frakt´al˚u, viz obr´azek 6.3. T´ımto je demonstrov´anasobˇepodobnost a spojitost ´utvar˚upˇri zmˇenˇemˇeˇr´ıtka.

Obr´azek 6.3: Demonstrace souvislosti

D˚uraz je kladen na grafick´eztv´arnˇen´ı zvolen´eproblematiky a pˇrehlednost, tedy na obsah prezentace nikoliv na zp˚usob jej´ıtvorby. Z tohoto d˚uvodu je voleno nev´yrazn´epozad´ı samotn´ych slajd˚u. Literatura k pˇredn´aˇsce je zm´ınˇena na posledn´ımslajdu, pˇresnˇejˇs´ıseznam pouˇzit´elite- ratury je uveden v z´avˇeru t´etopr´ace. Zdroje u nˇekter´ych typick´ych pˇr´ıklad˚ufrakt´al˚ujsou pro jejich rychlejˇs´ıdohled´an´ıuv´adˇeny pˇr´ımo na str´anceprezentace, kter´ase jimi zab´yv´a. Cel´adiplomov´apr´aceje tedy pˇrehlednˇeobsaˇzena na jiˇzzmiˇnovan´ych slajdech, kter´e budou pro ´uˇcely v´yukystudent˚um k dispozici. Pokud se student pod´ıv´ana slajdy bl´ıˇze, jistˇezde nalezne zaj´ımav´epodnˇety k dalˇs´ıdiskuzi a studiu.

6.2 Demonstraˇcn´ıprogram

Dalˇs´ımc´ılemt´etopr´ace bylo vytvoˇrit program zobrazuj´ıc´ıvybran´efrakt´alytak, aby sv´ym ovl´ad´an´ıma funkˇcnost´ıbyl snadno pouˇziteln´ypro vykreslen´ız´akladn´ıch typ˚ufrakt´aln´ıch obrazc˚u.Pˇred vlastn´ım vykreslen´ım je moˇznoupravit vlastnosti generovan´ych ´utvar˚ua uloˇzit barevn´epalety slouˇz´ıc´ık obarven´ıv´ysledn´eho frakt´alu. Demonstraˇcn´ıprogram byl vytvoˇren v Borland Developer Studio 2006 a funguje v pro- stˇred´ıWindows. Jeho z´amˇeremje ilustrovat soubˇeˇznˇes v´ykladem nˇekter´edruhy frakt´al˚u. D´ıky pˇredvolen´ymoblastem zobrazen´ınen´ınutn´esloˇzit´enastavov´an´ıparametr˚upˇri kaˇzd´em generov´an´ı. V pˇr´ıpadˇeMandelbrotovy mnoˇziny je moˇznozobrazit pˇredvolen´ebody, v jejichˇz okol´ı lze pozorovat specifick´eoblasti dan´emnoˇziny. Jedn´ase pˇredevˇs´ım o Fibonacciho posloupnost, posloupnost pˇrirozen´ych ˇc´ısel atd.

64 6.2.1 Realizace Kv˚uli pˇrehlednosti a logick´emu oddˇelen´ıjednotliv´ych ˇc´ast´ık´odu je program rozdˇelen do nˇekolika modul˚u.Moduly lze podle jejich funkce rozˇclenit na tˇri celky. Prvn´ıˇc´ast´ıje frac- talfunc, obsahuje algoritmy pro generov´an´ıfrakt´al˚ua definice jejich parametr˚u.Moduly unit1 a unit2 zajiˇst’uj´ızobrazov´an´ıvypoˇc´ıtan´ych hodnot ve formˇeobr´azk˚u, zpracov´av´aj´ı parametry zadan´euˇzivatelem. Soubory PaletteManager a coltable jsou posledn´ıskupinou a obstar´avaj´ıfunkce spr´avce palet. Jednotliv´emoduly programu jsou:

• Coltable.[cpp/h] - obsahuje definice struktur palet a funkce pro v´ypoˇcet barev palety z mezn´ıch bod˚u.

• Fractalfunc.[cpp/h] - modul s definicemi funkc´ı,kter´ymise frakt´alygeneruj´ı.Z´aroveˇn obsahuje definice jejich parametr˚u, u IFS se jedn´anapˇr.o r˚uzn´edruhy transformac´ı.

• Fractals.cpp - centr´aln´ımodul programu, inicializuje okna programu.

• PaletteManager.[cpp/h] - slouˇz´ık nadefinov´an´ıbarevn´epalety, obsahuje akce pro jej´ı obsluhu jako je uloˇzen´ı,naˇcten´ı,´uprava.

• Unit1.[cpp/h] - rozhran´ıhlavn´ıho okna programu DemFract, definice vzhledu.

• Unit2.[cpp/h] - okno pro vykreslen´ıfrakt´alu ShowFract, v´ybˇeroblasti zobrazen´ı.

• Unit3.[cpp/h] - zajiˇstuje vykreslen´ıprogress baru.

• Utilz.[cpp/h] - obsahuje funkce pro pr´acise soubory a dalˇs´ıpomocn´efunkce.

V cel´emprogramu byl nam´ıstodatov´estruktury pole vˇetˇsinou vyuˇzit standardn´ıkon- tejner vector z d˚uvodu robustnosti. Soubory uchov´avan´ych hodnot se bˇehem ˇcinnosti pro- gramu ˇcasto mˇen´ıa pouˇzit´ıstandardn´ıho pole vyˇzaduje velkou pozornost pˇrispr´avˇepamˇeti. Vector pˇridˇelov´an´ıa uvolˇnov´an´ıpamˇetiobsluhuje s´ama jeho pouˇzit´ıje tak mnohem bez- peˇcnˇejˇs´ı.Pouˇzit´ı vectoru je sice ˇcasovˇen´aroˇcnˇejˇs´ı,ale v ˇcasovˇekritick´ych ´usec´ıch programu nen´ınutno s vectorem pracovat, doba generov´an´ıfrakt´aluse tak neprodluˇzuje.

Modul fractalfunc Modul fractalfunc obsahuje definice algoritm˚ujednotliv´ych druh˚ufrakt´al˚u. Definic´ıalgo- ritmu se rozum´ıjm´eno algoritmu, napˇr. IFS Frakt´aly, ukazatel na prov´adˇec´ıfunkci a vektor definic potˇrebn´ych parametr˚u.Tyto hodnoty jsou uchov´any ve struktuˇre tDEFDRAW- PARAMS. Pˇr´ıkladdefinic parametr˚uvid´ımena uk´azce funkce IFSInit. Na poˇc´atkusi nadefinujeme jm´eno funkce a ukazatel. Dalˇs´ım krokem je nastaven´ı souˇradnic vykreslovan´eoblasti: tDEFDRAWPARAMS IFSInit() { tDEFDRAWPARAMS pDP; // struktura obsahujici definice vykreslovaci // funkce a jejich parametru tPARAMINFO pPI; // struktura obsahujici definici jednoho parametru

pDP.FuncName = ‘‘IFS Frakt´aly’’; pDP.pDrawFunc = &IFSFunc; // ukazatel na adresu vykreslovaci funkce

65 // Defaultni hodnoty Max a Min souradnic vykreslovane oblasti pDP.ldDefMinX = -5; pDP.ldDefMaxX = 5; pDP.ldDefMinY = 0; pDP.ldDefMaxY = 10;

Specifick´eparametry pro kaˇzd´yfrakt´alpˇredstavuje poˇcet iterac´ı,transformace pouˇzit´e pro v´ypoˇcet, druh obarven´ıatd. Pro IFS frakt´alyjsou to napˇr.:

// definice prvniho parametru - pocet iteraci pPI.type = defINT; pPI.name = ‘‘Iterace’’; pPI.iMin = 0; pPI.iMax = 1000000000; pPI.iStep = 10000; pPI.defVal = 500000; pDP.params.push_back(pPI);

// definice druheho parametru - typ transformace pPI.type = defENUM; // typ pozadovaneho parametru (vycet) pPI.name = ‘‘Transformace’’; // nazev parametru

// seznam pojmenovani vyctovych hodnot (zde transformace) pPI.defEnumCaptions.clear(); pPI.defEnumCaptions.push_back(‘‘Troj´uheln´ık’’); // ... a dalsi pPI.defEnumCaptions.push_back(‘‘Barnsleyova kapradina’’);

// pocatecni transformace pPI.defVal = 1; // defaultni hodnota pocatecni transformace pDP.params.push_back(pPI); // vlozeni parametru do vektoru parametru // ... definice dalsich parametru return pDP; // vraci se struktura definice algoritmu }

Definici algoritu obsahuje struktura tDEFDRAWPARAMS. Tˇemito strukturami se napl- n´ıvektor DefDrawParams, kter´ypak obsahuje definice vˇsech algoritm˚upouˇzit´ych v demon- straˇcn´ımprogramu. Pˇred´an´ıparametr˚uprov´adˇec´ıfunkci se pak prov´ad´ıpomoc´ıstruktury tDRAWFUNC- PARAM, kde se pˇred´av´avektor ukazatel˚una obecn´ytyp std::vector< void * > params. Kaˇzd´yjeho prvek se pozdˇejipˇretypov´av´azpˇet na typ uveden´ypˇridefinici v inicializaˇcn´ı funkci.

66 Nejd˚uleˇzitˇejˇs´ıˇc´ast´ımodulu fractalfunc.cpp je funkce InitDrawFuncMenu, kter´anapln´ı vektor std::vector DefDrawParams; definicemi algoritm˚u: void InitDrawFuncMenu(void) {

/*Mandelbrot Initialize Part*/ DefDrawParams.push_back(MandelInit());

/*IFS-Fract Initialize Part*/ DefDrawParams.push_back(IFSInit());

};

MandelInit (IFSInit) vrac´ıstrukturu tDEFDRAWPARAM, kter´ase uloˇz´ıdo vektoru DefDrawParams. Struktura tDEFDRAWPARAM obsahuje vˇzdy definici jednoho algoritmu, viz v´yˇse. V pˇr´ıpadˇe,ˇze je do fractalfunc.cpp dops´andalˇs´ıdruh algoritmu, je nutno zaˇradit jeho ini- cializaci do funkce InitDrawFuncMenu na konec. V opaˇcn´em pˇr´ıpadˇeby bylo nutn´epˇrepsat indexy algoritm˚uv definiˇcn´ım soubor pro poloˇzkumenu “Speci´al”,protoˇze indexy poloˇzek jsou z´avisl´ena poˇrad´ıstruktur tDEFDRAWPARAMS ve vektoru DefDrawParams. Vzhledem k povaze probl´emu nebyl pouˇzit objektov´ypˇr´ıstuppro implementaci algo- ritm˚u. Objektov´ypˇr´ıstupby sice fugoval, avˇsak nepˇrinesl by v´yrazn´ezefektivnˇen´ık´odua abstrakce by byla zcela samo´uˇceln´a.

6.2.2 Ovl´ad´an´ıprogramu Hlavn´ımiovl´adac´ımiprvky programu jsou funkˇcn´ıtlaˇc´ıtka a boxy pro nastaven´ısouˇradnic okna, iterac´ıa v pˇr´ıpadˇeIFS parametry obarven´ı. V´ybˇer skupiny frakt´al˚use vol´ıv poloˇzce menu “Frakt´al”.Na v´ybˇer je Mandelbrotova mnoˇzinaa IFS frakt´aly. V hlavn´ımoknˇejsou zobrazeny boxy se souˇradnicemi oblasti, kam se bude frakt´alvykreslovat, nastaven´ıvelikosti okna a tlaˇc´ıtka pro vygenerov´an´ıfrakt´alua reset souˇradnic. Souˇradnice frakt´alua rozliˇsen´ılze uloˇzit do extern´ıhosouboru pro pozdˇejˇs´ı pouˇzit´ı. Na obr´azku 6.4 je zobrazeno okno programu s nastaven´ymiparametry IFS frakt´alu. V pˇr´ıpadˇevykreslov´an´ıMandelbrotovy mnoˇziny je moˇzno nastavit v oknˇe DemFract poˇcet iterac´ı,zvolit typ obarven´ı,paletu barev a druh obarvovac´ıfunkce. Posledn´ımnastaven´ım je check box s volbou obarven´ıkonverguj´ıc´ıch bod˚umnoˇziny (vnitˇrn´ıbody). Palety barev lze vyb´ırat aˇzpo jejich vytvoˇreninebo naˇcten´ıve spr´avci palet. Spr´avce palet se nach´az´ı pod poloˇzkou “Paleta barev” v menu “Frakt´al”.Vytvoˇren´ıpalety je pops´anod´ale. Ve vykreslen´emfrakt´aluv oknˇe ShowFract lze myˇs´ıvyb´ırat oblasti pro pˇribl´ıˇzen´ı.V´ybˇer se prov´ad´ıstiskem lev´eho tlaˇc´ıtka a taˇzen´ımmyˇs´ı, viz obr 6.5. V pˇr´ıpadˇe, ˇzedan´aoblast nevyhovuje pˇredstav´am,lze souˇcasn´ymstiskem prav´ehotlaˇc´ıtka v´ybˇer zruˇsit.Pˇrinechtˇen´em oznaˇcen´ıpouze jednoho bodu pro zvˇetˇsen´ı(dvojklik), program vyp´ıˇseupozornˇen´ıa je moˇzno vybrat korektn´ıoblast. K orientaci a pro utvoˇren´ıpˇredstavy o vzd´alenostech mezi ´utvary frakt´aluslouˇz´ızobrazen´ısouˇradnic, nad kter´ymise kurzor pohybuje. Tyto jsou vyps´any ve spodn´ıˇc´astiokna. V lev´emdoln´ım rohu jsou souˇradnice vztaˇzen´ek oknu, vedle pak souˇradnice samotn´ehofrakt´alu.

67 Obr´azek 6.4: Okno programu

Menu Speci´al V t´etopoloˇzce menu lze nal´ezt pˇredvolen´ezaj´ımav´eoblasti Mandelbrotovy mnoˇziny. Nadefi- nov´any jsou oblasti, kde lze vypoˇc´ıtat ˇc´ıslo Π, spir´aln´ı ´utvary pˇredstavuj´ıc´ıFibonacciho posloupnost, posloupnost pˇrirozen´ych ˇc´ısel aj. Menu je naˇc´ıt´ano ze souboru specmenu.def. Struktura vypad´an´asledovnˇe:

[Mandelbrot;0] [Pi;0] @Pi 1 !-0,7793984375;-0,7223828125;-0;0,0990234375 @Pi 2 !0,21484375;0,35546875;-0,064453125;0,076171875 [..]

V hranat´ych z´avork´ach je na prvn´ım m´ıstˇen´azev poloˇzky a za stˇredn´ıkem pak index urˇcuj´ıc´ıpro kter´ydruh m´ab´ytmenu aktivn´ı(0- Mandelbrotova mnoˇzina, 1 - IFS). Index je z´avisl´yna poˇrad´ıinicializace algoritm˚uv modulu fractalfunc.cpp ve funkci InitDrawFunc- Menu. Zanoˇren´anab´ıdka se vytvoˇr´ıdalˇs´ıpojmenovanou poloˇzkou uzavˇrenou v hranat´ych z´avork´ach. Jednotliv´epoloˇzkymenu jsou pak uvozeny znakem @, souˇradnice pro vykreslen´ı n´asleduj´ına dalˇs´ım ˇr´adkuza znakem “!” a jsou oddˇeleny stˇredn´ıkem. Poloˇzky vnoˇren´eho menu jsou uzavˇreny sekvenc´ıznak˚u [..].

68 Obr´azek 6.5: IFS spir´ala

6.2.3 Spr´avce palet Frakt´alyz´ısk´av´aj´ına vizu´aln´ıatriktivitˇepˇredevˇs´ım obarven´ım,kter´ezd˚urazn´ıjejich kom- plexnost a sloˇzitost. Pro sestaven´ıbarevn´ych palet slouˇz´ı Spr´avce palet, kter´ylze vidˇet na obr´azku 6.6. Pˇr´ıstup ke spr´avci je pˇres poloˇzku“Paleta barev”, kter´ase nach´az´ıv nab´ıdce “Frakt´al”. Hlavn´ımiovl´adac´ımi prvky jsou funkˇcn´ıtlaˇc´ıtka v horn´ıˇc´astiokna, nab´ıdka s v´ybˇerem naˇcten´ych palet v lev´eˇc´astia tlaˇc´ıtko pro pˇrid´an´ıdalˇs´ıho bodu do palety. Defaultnˇeje nastaven poˇc´ateˇcn´ıa koncov´ybod palety. Tlaˇc´ıtkem “Pˇridat” se pˇrid´anov´ybod s implic- itnˇenastavenou pozic´ı0 a ˇcernou barvou. Pozice ud´av´a,kde se bude bod v posloupnosti nach´azet, a urˇcujetak´epoˇcet barev, kter´yje moˇzno aˇzpo tento bod pˇridˇelit.Barvu lze zadat bud’ nastaven´ımsloˇzek RGB nebo ji vybrat v paletˇe.Barevn´epˇrechody je moˇzno poˇc´ıtat line´arnˇe, logaritmicky nebo exponenci´alnˇe, se zvl´aˇstn´ımnastaven´ım pro kaˇzd´ybod.

69 Obr´azek 6.6: Spr´avce palet

Tlaˇc´ıtem “Smazat” se oznaˇc´ıbod urˇcen´ypro v´ymaz. Dalˇs´ım stiskem tlaˇc´ıtka se pˇr´ıznak smaz´an´ızruˇs´ı. Pruh pod funkˇcn´ımitlaˇc´ıtkyilustruje rozloˇzen´ıbarev v paletˇe,avˇsakpo zmˇenˇepara- metr˚ubodu je nutno stisknout bud’ “Obnovit” pro aktualizaci barev, nebo “Nastavit” pro pˇrekreslen´ıpruhu a souˇcasn´eseˇrazen´ıbod˚upodle nastaven´epozice v paletˇe. Vytvoˇrenou paletu lze uloˇzitdo extern´ıho souboru s pˇr´ıponou pal. Data jsou uloˇzena jako text z d˚uvodu snadnˇejˇs´ıhoimportu ˇcimanu´aln´ıeditace barev. Program nab´ız´ıtak´e moˇznost uloˇzenou paletu smazat. V pˇr´ıpadˇe,ˇze poˇcet iteraˇcn´ıch krok˚upˇres´ahne poˇcet barev nadefinovan´ych v paletˇe, cel´a paleta se cyklicky opakuje.

70 Kapitola 7

Z´avˇer

Dle zad´an´ıje pˇredkl´ad´anadiplomov´apr´ace pojedn´avaj´ıc´ıo historii frakt´aln´ıgeometrie a jej´ım uplatnˇen´ınejen v poˇc´ıtaˇcov´egrafice, ale tak´ev dalˇs´ıch oblastech vˇedy a techniky. Jelikoˇzhlavn´ımz´amˇerem diplomov´epr´acebylo na konkr´etn´ıch pˇr´ıkladech obs´ahnout problematiku frakt´aln´ıgeometrie, jsou historick´esouvislosti uveden´ev pr´acipro ilustraci v´yvoje dostateˇcn´e.Matematick´easpekty sest´avaj´ıc´ı z popis˚udimenz´ı a metrik prostor˚u jsou sp´ıˇse pˇredmˇetem pro teoretick´ezkoum´an´ı,proto jsou tak´ev textu pod´any pouze ve zkr´acen´eformˇe.Pro detailnˇejˇs´ıinformace jsou uv´adˇeny odkazy na odbornou literaturu. Dalˇs´ımc´ılempr´ace bylo vytvoˇritmateri´alypro z´akladn´ısezn´amen´ıs frakt´aln´ıprob- lematikou v r´amci pˇredn´aˇsek pˇredmˇetu Poˇc´ıtaˇcov´agrafika. Byly zhotoveny slajdy tvoˇr´ıc´ı kostru pˇredn´aˇsky a demonstraˇcn´ıprogram zobrazuj´ıc´ınˇekter´efrakt´aln´ı ´utvary. Program nab´ız´ı moˇznost zobrazen´ı pˇredvolen´ych oblast´ı, napˇr.posloupnost pˇrirozen´ych ˇc´ısel, Fi- bonacciho posloupnost aj. zejm´ena v Mandelbrotovˇe mnoˇzinˇe. Poˇcet pˇr´ıklad˚ua jejich sloˇzitost je volena tak, aby byly zachyceny nejtypiˇctˇejˇs´ıfrakt´alydan´eskupiny s ohledem na pˇrijatelnou ˇcasovou n´aroˇcnostvykreslen´ı´utvar˚u.Program lze jednoduˇserozˇs´ıˇrit o dalˇs´ı typy frakt´al˚udoplnˇen´ımalgoritm˚ua parametr˚u´utvaru do pˇr´ısluˇsn´eho modulu. Za ´uˇcelem prezentace diplomov´epr´ace byl vytvoˇren plak´ats n´ahledyprogramu a slajd˚u. Na plak´atu jsou obsaˇzeny z´akladn´ıinformace o frakt´aln´ıgeometrii pro atraktivnost doplnˇen´euk´azkami frakt´al˚u. Potenci´aln´ı moˇznost rozˇs´ıˇren´ı pr´ace spoˇc´ıv´av popisu zaj´ımavost´ı u zvolen´ych typ˚u frakt´al˚u. Dalˇs´ıkapitolu mohou tvoˇrit jin´ealgoritmy pro generov´an´ıfrakt´al˚u, jejich popis a modifikace. Zaj´ımav´eby mohlo b´ytporovn´an´ıtˇechto modifikac´ıs p˚uvodn´ımialgoritmy pro zd˚uraznˇen´ıodliˇsn´en´aroˇcnosti na zpracov´an´ıv´ystup˚u. Pˇr´ınosemt´etopr´aceje shrnut´ıjak teoretick´ych poznatk˚ufrakt´aln´ıgeometrie, tak je- jich praktick´eaplikace. Rozsah tohoto souhrnu by mˇelodpov´ıdat jednomu pˇredn´aˇskov´emu bloku doplnˇen´emu o moˇznostvyzkouˇsen´ıprogramu a ovˇeˇren´ıvlastnost´ıfrakt´al˚uuv´adˇen´ych v kapitole 2 na vygenerovan´ych pˇr´ıkladech. Text je obsahovˇei strukturou pˇrizp˚usoben i “zaˇc´ateˇcn´ık˚um” v oblasti poˇc´ıtaˇcov´egrafiky . Vˇsechny body zad´an´ıdiplomov´epr´acebyly z pohledu autora splnˇeny.

71 Literatura

[1] Kristopher Babic. Using fractals to simulate natural phenomena. http://davis.wpi.edu/~matt/courses/fractals/index.htm. Vyhled´anov dubnu 2007.

[2] , R. L. Devaney, Benoit Mandelbrot, Heinz-Otto Peitgenn, Dietmar Saupe, and Richard Voss. The Science of Fractal Images. Springer-Verlag, 1988.

[3] Michael F. Barnsley. Fractals Everywhere. Morgan Kaufmann, 2000. ISBN 0-12-079069-6.

[4] Mark´eta Breuerov´a. Frakt´aly. Praha. 2006. Vysok´aˇskola Umˇelecko Pr˚umyslov´a v Praze. Diplomov´apr´ace.

[5] Scott Draves. The fractal flame algorithm. http://flam3.com/flame draves.pdf, 2005.

[6] Ron Eglash. African Fractals: modern computing and indigenous design. Rutgers University Press, 1999. ISBN 0-8135-2614-0.

[7] Bri Tish Technology Group Ltd. (London GB2), Donald Martin Monro, and Frank Dudbridge. Fractal coding of data. US Patent 5768437, 16. 6. 1998. Int G06K 009/36, G06K 009/46.

[8] Ray Girvan. The mandelbrot monk. http://classes.yale.edu/fractals/MandelSet/MandelMonk/MandelMonk.html. Vyhled´anov listopadu 2006.

[9] Martin Hinner. Jemn´y´uvod do frakt´al˚u. http://martin.hinner.info/math/Fraktaly/. Vyhled´anov listopadu 2006.

[10] Petra Koneˇcn´a. Vytvoˇren´ıuk´azkov´ychpˇr´ıkladu pro pˇredmˇetZ´akladypoˇc´ıtaˇcov´e grafiky. Ostrava. 2006. FEI VSBˇ TU Ostrava. Diplomov´apr´ace.

[11] Benoit B. Mandelbrot. Frakt´aly: Tvar, n´ahoda a dimenze. Mlad´aFronta, 2003. ISBN 80-204-1009-0.

[12] Benoit B. Mandelbrot. The Fractal Geometry of Nature. W. H. Freeman and Company, 2004. ISBN 0-7167-1186-9.

[13] Ivo Marak. On synthetic terrain erosion modeling:a survey. http://www.cescg.org/CESCG97/marak/. Vyhled´anov kvˇetnu 2007.

72 [14] Paul Martz. Generating random fractal terrain. http://www.gameprogrammer.com/fractal.html. Vyhled´anov kvˇetnu 2007.

[15] Martin Netuka. Nelinearita v´ynos˚ucenn´ych pap´ır˚u. Praha. 1997. Fakulta Soci´aln´ıch VˇedUniverzity Karlovy. Diplomov´apr´ace.

[16] Petr Pauˇs. Poˇc´ıtaˇcov´egenerov´an´ıfrakt´aln´ıch mnoˇzin. http://kmlinux.fjfi.cvut.cz/~pausp1/html/skola/fraktaly/reserse.htm. Vyhled´anov prosinci 2006.

[17] Martin Pˇrikryl. Frakt´aln´ıkomprese. http://www.prikryl.cz/cze/htmlseminarka.php?id=fraktal. Vyhled´ano v kvˇetnu 2007.

[18] Paul W. K. Rothemund, Nick Papadakis, and Erik Winfree. (2004) algorithmic self-assembly of dna sierpinski triangles. PLoS Biol 2(12): e424 doi:10.1371/journal.pbio.0020424. Vyhled´anov kvˇetnu 2007.

[19] Paul W. K. Rothemund, Nick Papadakis, and Erik Winfree. (2004) using biology to create complex patterns. PLoS Biol 2(12): e448 doi:10.1371/journal.pbio.0020448. Vyhled´anov kvˇetnu 2007.

[20] Justin Seyster. Plasma fractal. http://www.sinc.stonybrook.edu/Stu/jseyster/plasma/. Vyhled´anov kvˇetnu 2007.

[21] WWW str´anky. Benoit mandelbrot - wikipedia. http://en.wikipedia.org/wiki/Beno^ıt Mandelbrot. Vyhled´anov listopadu 2006.

[22] WWW str´anky. Fractal - wikipedia. http://en.wikipedia.org/wiki/Category:Fractals. Vyhled´anov dubnu 2007.

[23] WWW str´anky. Stochastic processes - wikipedia. http://en.wikipedia.org/wiki/Category:Stochastic processes. Vyhled´ano v dubnu 2007.

[24] Pavel Tiˇsnovsk´y.Frakt´aln´ıstr´anky. http://www.fit.vutbr.cz/~tisnovpa/fract/uvod.html. Vyhled´anov dubnu 2007.

[25] Pavel Tiˇsnovsk´y.Frakt´aly v poˇc´ıtaˇcov´egrafice. http://www.root.cz/serialy/fraktaly-v-pocitacove-grafice/. Vyhled´ano v kvˇetenu 2007.

73 Seznam obr´azk˚u

Mandelbrotova mnoˇzina- [wikipedia [21]]...... 5 Ostrov - [Martin Hinner [9]]...... 7 Frakt´aln´ıkapradina - [wikipedia [22]]...... 8 Lorenz˚uvatraktor - [wikipedia] ...... 10 Juliova mnoˇzina - [wikipedia] ...... 12 Mandelbrotova mnoˇzina(detail) - [wikipedia [21]]...... 13 Newtonova frakt´aln´ımnoˇzina - [wikipedia [22]]...... 14 Sierpinsk´ehotroj´uheln´ık - [wikipedia] ...... 15 Cantorova mnoˇzina - [wikipedia] ...... 16 Kochova vloˇcka - [Pavel Tiˇsnovsk´y[25]]...... 17 Hilbertova kˇrivka - [Pavel Tiˇsnovsk´y[25]]...... 18 Tˇriiterace Hilbertovy kˇrivky - [wikipedia] ...... 19 IFS kapradina - [Pavel Tiˇsnovsk´y[25]]...... 20 Sierpinsk´ehokobereˇcek IFS - [wikipedia [22]]...... 22 Mengerova houba - [wikipedia] ...... 23 Fractal Flame...... 23 Fractal Flame, Heart ...... 25 Nevhodnˇeoˇsetˇren´asymetrie - [Scott Draves [5]]...... 26 Rostlina - [Pavel Tiˇsnovsk´y[25]]...... 28 Dif´uze- [Pavel Tiˇsnovsk´y]...... 29 Krajina - [Pavel Tiˇsnovsk´y]...... 30 Iterace ´useˇcky- [Pavel Tiˇsnovsk´y]...... 30 Plazma - [Java applet [20]]...... 31 Plazma vytvoˇren´agenerov´an´ım pˇr´ımek - [Pavel Tiˇsnovsk´y[25]]...... 32 Krajina - spektr´aln´ısynt´eza - [Pavel Tiˇsnovsk´y]...... 33 Frakt´aln´ıoblaka - [1]...... 33 Frakt´aln´ıvzor DNA - [19]...... 35 Lenna - [17]...... 35 Rekonstrukce Lenna - [17]...... 36 Frakt´aln´ıant´ena- [www.wr6wr.com]...... 37 Frakt´aln´ıkamufl´aˇzF16 -[www.hyperstealth.com]...... 38 Santa Prassede - podlaha -[www2.corpoforestaledellostato.it] ...... 38 Salvador Dal´ı- Tv´aˇrv´alky- [dali.uffs.net] ...... 39 Africk´avesnice Ba-ila - [Ron Eglash [6]]...... 39 Frakt´alvesnice Ba-ila - [Ron Eglash [6]]...... 40 Betl´emsk´ahvˇezda - [Ray Girvan [8]]...... 40 GUI programu WinFract ...... 41 Fractal eXtreme - [www.cygnus-software.com] ...... 42

74 XaoS...... 43 Apophysis - [wikipedia] ...... 44 IFS vytvoˇren´yRWA - [Pavel Tiˇsnovsk´y[25]]...... 52 IFS vytvoˇren´yDIA - [Pavel Tiˇsnovsk´y[25]]...... 52 Z´akladn´ıpojmy...... 62 Charakteristiky skupin frakt´al˚u...... 63 Demonstrace souvislosti ...... 64 Okno programu...... 68 IFS spir´ala...... 69 Spr´avce palet...... 70

75