Fraktály

Lenka Eslerová

Závěr výletů do světa nádherných obrázků, žijících v mezeře mezi přímkou a rovinou

Minule jsme si povídali o tom, jak vznikají fraktály založené na komplexních číslech, například známá Mandelbrotova množina. Jistěji nikdo z vás nechce konstruovat ručně, mnozí z vás také nechtějí psát program na kreslení fraktálů - to ale nevadí, neboť několik hezkých prográmků (a také dost velkých, rozsáhlých a schopných programů) můžete najít na Aminetu. O některých z nich si dnes něco povíme.

Chaos Pro
Začátkem února se objevila nová verze programu Chaos Pro určeného pro generování fraktálů. Tento produkt má oproti obdobným nezvykle mnoho parametrů - nezkušeným možná bude jeho ovládání činit trochu potíže; avšak pro ty, kteří to již někdy zkoušeli, je to učiněný ráj. A navíc: autor (Martin Pfingstl) tento nádherný program uvolnil jako PD!
Jaké jsou požadavky programu? OS 2.0 nebo vyšší, procesor 68020 nebo vyšší plus matematický koprocesor
a minimálně 2 MB paměti.
Chaos otevírá nové okno pro každý zpracovávaný fraktál a používá multitasking - můžete tedy generovat několik fraktálů najednou. Ovládání je přitom logické, snadno se také jedním kliknutím můžete zbavit všech oken patřících k některému fraktálu, který vás už přestal bavit - dle mého názoru je tato možnost velmi prozíravá, nebol k některým fraktálům lze otevřít několik oken s parametry, okno pro 2D a okno pro 3D podobu fraktálu zkuste se v nich pak rychle zorientovat. Průzkumníci světa fraktálů také jistě ocení snadné zadání zoomu, majitelé graficky zdatnějších sestav zase možnost ukládání fraktálů ve 24-bitovém formátu.
Hravým doporučuji vyzkoušet množství různých palet, a také cyklování barev. Skutečnou lahůdkou je potom možnost animací - zvolíte si například Juliovu množinu, necháte průběžně měnit její parametr c, a zároveň velikost výřezu. Výsledný efekt: noříte se do měnící se množiny!
V okně Fractal Pictures si můžete vybrat některý z fraktálů, které program zná (například 28 fraktálů založených na komplexních číslech) - všechny potřebné parametry pro jeho výpočet budou správně nastaveny. Chaos samozřejmě jako snad všechny programy tohoto typu nabízí výpočet Mandelbrotovy a Juliovy množiny (troška teorie na toto téma se najde v minulém čísle Amiga Review), tím však jeho možnosti nekončí. O dalších typech fraktálů, s nimiž Chaos počítá, se zmíním dále.
Program také umožňuje zkoušet vaše vlastní vzorce - k tomu vám nabízí velmi chytrý editor vzorců; pokud jste četli předchozí díly tohoto seriálu, jistě si domyslíte, že zadat rozumné parametry nebude jednoduché - proto je editor dosti složitý. Je možné dokonce počítat i takové fraktály, jejichž vzorce se během výpočtu mění! Ve vzorcích je možno použít běžné funkce algebraické, goniometrické, cyklometrické, hyperbolické, logaritmické, exponenciální, logické a relační operátory... (hmm, zajímalo by mě, kolik z vás tuší, o čem právě teď šla řeč).
Ke každému fraktálu můžete nastavit spoustu parametrů, například velikost výřezu; počet iterací při výpočtu (to jest maximální počet opakování výpočtu pro každý bod, po němž rozhodnu, do jaké kategorie daný bod patří, a jak ho tedy obarvím); velikost rotace obrázku; způsob vybarvení vnitřku a vnějšku množiny atd.

Proč nejde přesně předpovídat počasí
V prvním díle jsem slíbila prozradit něco o tom, jak fraktály souvisí s předpovídáním počasí. Tak tedy: v roce 1961 meteorolog Edward Lorenz sestavil systém diferenciálních rovnic, které měly popisovat vývoj počasí (diferenciální rovnice zde slouží k tomu, abychom ze znalosti aktuální hodnoty nějakých veličin - zde například teploty, tlaku, směru a síly větru apod. - určili, jaký bude stav těchto veličin za chvíli). Po nějaké době experimentování s těmito rovnicemi zjistil, že výsledek silně závisí na tom, s jakou numerickou přesností se výpočty prováděly (tj. vlastně na míře zaokrouhlování); maličká změna počátečních hodnot totiž vedla k naprosto odlišným výsledkům. Tak tento pán dospěl ke slavnému poznatku: "Mávnutí křídel motýla v Brazílii může vyvolat hurikán v Texasu." Potom Lorenz zadal určité konkrétní hodnoty parametru ve svých rovnicích a zkoušel různé počáteční hodnoty. Kupodivu zjistil, že i při velmi odlišných hodnotách dostává stále stejný obrázek, který měl velmi komplikovanou strukturu - skládal se z nekonečně mnoha smyček a vypadal podivně, skoro jako motýl. Tento obrázek měl tedy fraktální strukturu a byl pojmenován "podivný atraktor" (slovo "atraktor" je příbuzné slovu "atraktivní", což znamená přibližně totéž jako přitažlivý, jak jistě víte).
Mnozí vědci tohle všechno považovali za "hračičky", které nejsou k ničemu dobré, protože za to všechno určitě mohou zaokrouhlovací chyby v počítači. Je ale známo z mnoha fyzikálních zákonů, že příroda také leckde počítá jen s celými čísly, a proto se rovněž musí dopouštět zaokrouhlovacích chyb. Proto vlastně může počítač skvěle napodobit skutečnou přírodu, svět kolem nás...
K předpovídání počasí se tedy (kromě lidových pranostik, které zahrnují tisícileté zkušenosti pozorovatelů) užívají Lorenzovy rovnice. Jenže jak jsem již uvedla, závisí výsledek dost značně na přesnosti, včetně přesnosti zadání počátečních hodnot. A zde je právě zásadní problém: my totiž nemůžeme tlak, teplotu ani další veličiny změřit naprosto přesně - vždy jen na nějaký (ale pevně daný) počet desetinných míst. Proto jsou výsledky výpočtů vždy nějakým způsobem zkreslené: proto je pravděpodobné, že zítra bude takové počasí, jaké dnes hlásili, v předpovědi počasí - ale jak bude za týden, za měsíc (nebo dokonce za rok) - nuže, to lze jen přibližně odhadovat a skutečnost se může hodně, hodně lišit. Pokud jste četli pozorně, víte teď také, že v tomhle nám nepomohou ani daleko rychlejší a výkonnější počítače. Takže jestliže vám začátkem prázdnin meteorologové předpovědí, že po celý červenec bude krásně a teplíčko, vy odjedete na dva týdny na dovolenou a celý druhý týden bude pršet, nemějte jim to za zlé, oni za to nemohou. To se jenom příroda vydala po vedlejší smyčce...
Fraktály tohoto typu vám Chaos Pro nabízí také, a to pod názvem Dynamic System.

Chaos Pro 3.0

Hodnocení: 9,0 z 10
Autor: M. Pfingstl
Cena: -
Typ: PD

+

generování fraktálů v multitaskingu, velmi schopný editor vzorců, další typy fraktálů (nejen v komplexních číslech

-

větší nároky na hardware

Další a další fraktály
Fraktály typu Bifurcation přibližně popisují vývoj populace - asi takto: vím, kolik králíků mi v nějakém údolí (odkud nemohou utéct) žilo letos, vím, kolik tam mají potravy. Kolik jich tam bude za rok, za dva roky atd.? Při určitém množství potravy se počet králíků po několika letech ustálí, při jiném se budou střídat 2, 4 nebo 8 nebo více hodnot, při dalších bude počet králíků v jednotlivých letech víceméně náhodný. Tuto závislost zachycuje příslušný fraktál. Vývoj lze samozřejmě vztáhnout i na jiné živočichy.
Na podobném principu jsou založeny fraktály typu Lyapunov Space: i zde se simuluje vývoj populace, zkoumá se však, jestli při daných hodnotách dojde k ustálení hodnot, nebo se nějaký počet hodnot bude pořád dokola opakovat, nebo jestli vznikne úplný chaos. Podle toho se pak bodům přiřadí barvy.
Fraktály Plasma napodobují neuspořádaný Brownův pohyb můžeme se pohybovat v určitém prostoru různými směry, vzdálenost, u níž se pohneme v každém kroku se určí náhodně: přitom však malé vzdálenosti padnou častěji než velké. To je stručný popis, ale podrobněji by to bylo dost složité.
Diffusion fraktály pro změnu (nečekaně?) simulují difúzi dvou kapalin a podobné jevy.
Na některých obrázcích kolem tohoto článku jsem se pokusila představit vám různé typy fraktálů, které Chaos "umí". Vezmete-li si lupu (bystrozrací nemusí), snad na lištách jednotlivých oken zjistíte, o jaký typ zrovna jde, a uděláte si tak obrázek o tom, co se zase skrývá za vší tou teorií, do které vás stále tahám.
A jen tak mimochodem, autor Chaosu má dobrý smysl pro humor: někde za tímto článkem byste měli najít pár perliček, opsaných z nápovědy.

FU neboli FractalUniverse
Program FU je shareware, za Poplatek 20 DM obdržíte od autora keyfile. Omezení demoverze: nelze ukládat hotové obrázky a nastavení, po spuštění demoverze se po dlouhou dobu objevují různé informace o Programu a jeho tvůrcích (totéž po volbě položky About...) a teprve po skončení této "show" můžete s programem pracovat. Demoverze, kterou jsem zkoušela, byla z poloviny minulého roku.
FU má sice hezkou nápovědu, ale přečtou si ji jen ti, kdo ovládají němčinu (myslím, že znalost angličtiny je mezi uživateli počítačů lepší). Program v současné době nabízí 68 připravených vzorců pro fraktály typu Mandelbrot, Julia, Newton-R, interferenční a magnetické. Vestavěný je rovněž interprety vzorců, který vám umožní vlastní umělecký rozlet. Zajímavostí je Inspect-mód - viz dále. Podobně jako Chaos Pro má i FU podporu ARexxu a umožňuje vytváření fraktálních animací.
K provozování FU potřebujete systém 2.0 nebo vyšší, doporučuje se výkonnější procesor nebo turbokarta (kolem fraktálů se vždy musí provádět velké množství výpočtů).
Zvláštností FU je způsob generování barevné palety - pro červenou, zelenou a modrou složku barev nadefinujete prostě nějaký průběh (nechť je to například určitá část sinusovky pro červenou, trojúhelníkový průběh pro zelenou a ořezané trojúhelníky pro modrou) - tyto funkce jsou spojité, čímž dostaneme takovou paletu, že barvy se mění plynule, jakoby duhově. Pro vylepšení vzhledu fraktálů nabízí FU 12 možností vybarvení vnitřku a 18 vybarvení vnějšku dané množiny.
Také u FU lze poměrně snadno volit výřez pro zoom, zde však musím poznamenat, že u okna pro nastavení parametr pro zoom (i u dalších) se program nedokáže vyrovnat se změnou velikostí fontu: máte-li v systému nastaven větší font, než program očekává, budou okna větší a vylezou vám z obrazovky.
FractalUniverse používá dvě obrazovky - jednu pro řízení a komunikaci s programem, na druhé se pak vykresluje vlastní fraktál. Postup práce je následující: po případném nastavení preferencí navolíte typ fraktálu a vzorec, který chcete vykreslit (v okně Formula), stiskem tlačítka Render pak spustíte výpočet.
Zmínila jsem se o funkci Inspect. Chcete-li vykreslovat detaily fraktálů, obvykle musíte "naslepo" zvolit nějaký výřez, nechat ho napočítat, podívat se, co vyšlo, a pokud to není Právě to, co jste chtěli, opakovat celý postup. Funkce Inspect tohle všechno dost zjednoduší - po její volbě stačí kliknout někam do vykresleného obrázku; dokud držíte stisknuté tlačítko myši, můžete libovolně přejíždět po obrázku a v malém okně se vám ukazuje struktura fraktálu v daném místě, tj. přibližný tvar obrázku, který byste dostali pomocí zoom v daném místě. Takto lze snadno odhalit různé spirály, hvězdy a podobné půvabné tvary ve zkoumaném fraktálu. Tato funkce opravdu u jiných podobných programů nemá obdoby.

Nejen zábava
Jak jste se mohli přesvědčit, svět fraktálů je nejen krásný, ale i složitý. Někteří z vás si teď možná říkají: no, pěkné to je, ale co s tím, je to k něčemu užitečné? Odpověd zní - ano.
Fraktály (konkrétně iterační systémy funkcí) jsou základem některých metod používaných ke kompresi obrázků. Pokud jste si někdy pohrávali s různými kreslícími programy (teď mám na mysli zvláště různé programy určené hlavně pro profesionální grafiku) a se softwarem pro zpracování fotografií, jistě jste si všimli, že výsledky vaší práce (mnohobarevné obrázky a obrázky ve vyšších rozlišeních) zabírají strašně moc místa; je tedy potřeba je komprimovat. Zvláště v případě fotografií jde obvykle o různé záběry s přírodními motivy nebo texturami, o nichž jsme si řekli jednu důležitou typickou věc: jejich motivy se stále opakují v menších a menších detailech.
Princip komprese pak můžeme zjednodušeně popsat takto: vezmeme obrázek, nějak ho natočíme a zmenšíme tak, aby výsledek "pasoval" na některou část původního obrázku. Toto opakujeme tak dlouho, až celý obrázek Pokryjeme zmenšenými kopiemi sebe sama (v různých velikostech a polohách). Ty zaznamenáme a matematicky - to jest nějakými vzorečky - popíšeme způsob, jakým jsme je zmenšovali, natáčeli a umísťovali. Při dekomprimaci si naopak vezmeme zmíněné vzorečky, napočítáme potřebné údaje (podobá se to konstrukci Mandelbrotovy množiny, viz minulé číslo) a do správných pozic naskládáme body. Zde sc využívá jedna milá vlastnost IFS: nejenže z rovnic můžeme napočítat obrázek, ale také z obrázku lze zrekonstruovat původní systém rovnic. Takže se předpokládá, že daný obrázek je výsledek nějakých rovnic, tyto rovnice najdeme a zaznamenáme. Obrázek pak lze znovu kdykoliv rekonstruovat.
Pro úplnost - takto lze komprimovat samozřejmě pouze černobílé obrázky (jak bylo řečeno, fraktály jsou vlastně černobílé obrázky, kde barva bodu znamená, zda daný bod patří nebo nepatří do nějaké množiny; všechny ty další barvičky jsou vlastně jen pro efekt...) - co s tím? V praxi se to řeší tak, že z jednoho barevného obrázku se udělají čtyři černobílé; jeden z nich zachytí intenzitu (to jest: jak byl který bod světlý), další pak červenou, zelenou a modrou složku obrázku (jistě víte, že třeba i obraz v televizi se skládá ze tří takto barevných paprsků - a co různých barev z toho jde vykouzlit!). Jednotlivé obrázky se potom popsaným způsobem zkomprimují.
Většinou je možno zvolit, jak moc chcete obrázky komprimovat. Pokud vám nevadí, že ztratíte nejdrobnější detaily, lze ušetřit opravdu hodně místa. Algoritmy jsou dnes již tak propracovaně, že jen těžko rozlišíte originál a obrázek po komprimaci a dekomprimaci. Znovu připomínám, že metoda je založena na opakování vzorů - například stereogramy typu SIRDS (viz jiný článek v tomto a minulém čísle) prakticky vůbec komprimovat nejdou; je to totiž skutečně naprosto neuspořádané seskupení náhodných bodů.

Fractal Universe 1.6

Hodnocení: 8,0 z 10
Autor: Stefan Kost
Cena: DM 20,-
Typ: shareware

+

Inspect mód, editace palety

-

při použití většího fontu se okna nevejdou na obrazovku


Pozn.: články boli naskenované ako text a preto obsahujú aj zopár chýb. Taktiež neručíme za zdrojové kódy (Asm, C, Arexx, AmigaGuide, Html) a odkazy na web. Dúfame, že napriek tomu vám táto databáza dobre poslúži.

Žiadna časť nesmie byť reprodukovaná alebo inak šírená bez písomného povolenia vydavatela © ATLANTIDA Publishing