Základy počítačové grafiky
Ústav počítačové grafiky a multimédií
Prezentace přednášek
Fraktály
Téma přednášky
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 3
Motto
„Fractal Geometry Is Infinite.Fractal Geometry Is Nature.
Nature Is Infinite“
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 4
Obsah:
• Fraktál, dimenze objektu, soběpodobnost• L-systémy• Systémy iterovaných funkcí
(lineární a nelineární IFS)• Dynamické systémy• Fraktály v komplexní rovině• Fraktály ve vyšších dimenzích• Stochastické fraktály
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 5
Fraktál, dimenze objektu, soběpodobnost• Hausdorffova dimenze• Mandelbrotova definice fraktálu• Měření Hausdorffovy dimenze• Soběpodobnost
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 6
Hausdorffova dimenze• Geometricky hladké křivky – Topologická dimenze (TD) je
rovna (0), 1, 2, 3• Měření délky ostrova v různých měřítcích – při zmenšování
měřítka délka roste limitně k nekonečnu• Pobřeží v rovině zabírá „více místa“ než hladká křivka,
avšak nevyplňuje celou plochu – 1<dimenze<2• Dimenze není celočíselná – Hausdorffova dimenze (HD)• Hodnota HD udává s jakou rychlostí roste délka (objem,
obsah) objektů do nekonečna při změně měřítka• HD ~ TD -> málo členitý objekt• HD>>TD -> velmi členitý objekt• HD=TD+1 -> limitní případ (např. Mandelbrotova množina)• (Hausdorffova dimenze se někdy nazývá též fraktální
dimenze)
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 7
Mandelbrotova definice fraktáluFraktál je množina, jejíž Hausdorffova dimenze je
ostře větší než dimenze topologická.
• Někteří matematikové s touto definicí scela nesouhlasí• Žádná matematicky přesná definice zatím neexistuje• HD byla známa dlouho před definováním pojmu fraktál, ale
neměla žádné praktické využití.• Podmínka pro HD:
N - počet dílů, na které se objekt rozdělí
s - měřítko
D - Hausdorffova dimenze
1=× DsN
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 8
Základní vlastnosti fraktálu• Soběpodobnost• Nezávislost na měřítku• Generování pomocí procedurálních technik, specielně
iterativními metodami
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 9
Měření Hausdorffovy dimenze
Úsečka: výchozí úsečka má jednotkovou délku.Úsečku rozdělíme na N dílů, tj. podobně, jako byse N-násobně zvětšila. Měřítko tedy musíme N-krát zmenšit.
1loglog
1log
logloglog
0loglogloglog1loglog
1
1
===−=
=+=+=
=
=
NN
s
NsND
sDNsNNs
NsN
s
D
D
D
TD=HD->úsečka není fraktál
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 10
Měření Hausdorffovy dimenze
Čtverec: výchozí čtverec má jednotkovou délku hran (plochaje též jednotková). Po dvojnásobném zjemnění čtverecvypadá tak, jako vy měl čtyřnásobnou plochu. Měřítko se tedymusí změnit podle vztahu:
2
211
log21log
loglog
1log
log
1
=====
=
N
NNN
s
ND
Ns
TD=HD->čtverec není fraktál
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 11
Měření Hausdorffovy dimenze
Křivka Kochové: zjemnění spočívá v tom, že se každáúsečka předchozího útvaru nahradí dvěma úsečkami setřetinovou délkou, a dalšími dvěma, které tvoří dvě stranyrovnostranného trojúhelníku.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 12
Měření Hausdorffovy dimenze
Při trojnásobném zjemnění se délka zvětšíčtyřikrát, proto Hausdorffova dimenze není celéčíslo. Pro N se musí měřítko zmenšit na třetinu:
12618595.13log4log
1log
log431
>≈==
=
=
s
ND
N
s
TD=1 křivka KochovéHD>1 je fraktálvlastnosti:• je po celé délce spojitá• nemá v žádném bodě derivaci• zabírá konečný prostor• je nekonečně dlouhá
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 17
Nelineární deterministické fraktályNelineární
deterministickéfraktály
Dynamickésystémy
NelineárníIFS
Rovina x-yProstor x-y-z
Komplexnírovina
Hyperkomplexníprostor
4D2D2D, 3D
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 18
Stochastické fraktály
Brownůvpohyb
Stochastickéfraktály
OtevřenéL-systémy
Simulacedifůze
Spektrálnísyntéza
Náhodnáprocházka
Přesunprostředního
bodu
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 19
Obsah:
• Fraktál, dimenze objektu, soběpodobnost• L-systémy• Systémy iterovaných funkcí
(lineární a nelineární IFS)• Dynamické systémy• Fraktály v komplexní rovině• Fraktály ve vyšších dimenzích• Stochastické fraktály
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 20
L-systémy• L-systém = Lindenmayerův systém = LOGO like systém• Formální gramatika pro generování řetězců• Množina pravidel pro přepis řetězce X na řetězec např. XYX• Rekurzivní aplikací těchto pravidel na startovní řetězec
vzniká posloupnost znaků, které slouží ke generovánífraktální struktury
• Interpretace výsledného řetězce: řetězec=množinaelementárních grafických příkazů
• Pomocí L-systémů lze generovat fraktální struktury, které seskládají většinou z úseček (lze rozšířit)
• Každý L-systém obsahuje základní úhel otočení, axiom(startovní řetězec) a přepisovací pravidla
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 21
L-systémy – „želví grafika“• Základem pro kreslení L-systémů je „želví grafika“• Vychází se z jazyka LOGO, který „želví grafiku“ používal
jako názornou pomůcku při výuce programování• „Želva“ je neviditelná entita, která je umístěna v rovině
(prostoru) a má zadanou orientaci• „Želva“ reaguje na zadané příkazy (většinou „F“, „B“, „+“, „-“)
a interpretuje je tak, že se posunuje/otáčí a kreslí přitomúsečku ze staré do nové pozice
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 22
L-systém – přepisovací pravidla• Přepisovací pravidla jsou zadávána ve formátu: a=string• Tyto pravidla přepisují jeden znak „a“ na řetězec „string“• Často používané příkazy pro kreslení:
– „F“ kresli úsečku směrem dopředu– „B“ kresli úsečku směrem dozadu– „+“ zvyš úhel natočení želvy– „-“ sniž úhel natočení želvy
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 23
L-systém – kreslení pomocí želvy
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 24
L-systém – křivka Kochové
Sněhová vločka Kochové
initial string (axiom): F--F--Ftransformation rule: F=F+F--F+Fangle: 60o
Křivka Kochové
initial string (axiom): Ftransformation rule: F=F+F--F+Fangle: 60o
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 25
L-systém – křivka Kochové
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 26
L-systém – Sierpinského trojúhelník
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 27
L-systém – Hilbertova křivka
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 28
Závorkové L-systémy• Závorkový L-systém je běžný L-systém rozšířený o
zásobník.• Jsou přidány dvě operace: push a pop (uložení pozice želvy
na zásobník a vyjmutí pozice želvy ze zásobníku)• Pro jednodušší psaní a úsporu operační paměti se tyto
operace zkracují na znaky v řídicím „[“ a „]“.• Rozšířené příkazy pro kreslení:
– „F“ kresli úsečku směrem dopředu– „B“ kresli úsečku směrem dozadu– „+“ zvyš úhel natočení želvy– „-“ sniž úhel natočení želvy– „[“ uložení pozice želvy na zásobník– „]“ vyjmutí pozice želvy ze zásobníku
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 29
Závorkové L-systémy
Top of stack
Poziceželvy
Poziceželvy
Druhá položka
Třetí položka
push pop
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 30
Závorkové L-systémyFraktál stromu
initial string (axiom): +++FXtransformation rule: X=0.6[-FX]+FXangle: 30o
Úhel mezivětvemi
30o+30o=60o
Další větevbude zkrácena
na 60%
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 31
L-systémy v 3D• L-systémy lze použít i v 3D prostoru• Želva je orientována pomocí tří vektorů: up, left, forward• Želva kreslí úsečky ve 3D, ty lze převést např. na
trojúhelníky a potom zobrazit
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 32
L-systémy v 3D• Nové příkazy ve 3D:
+ turn right around up vector- turn left around up vector& pitch down around left vector^ pitch up around left vector< roll left around forward vector> roll right around forward vector| turn 180 deg around up vector (nejde o základní příkaz)% roll 180 deg around forward vector (nejde o základní příkaz)$ pitch 180 deg around left vector (nejde o základní příkaz)F move forward and draw full length (zaznamenat nový vrchol). don't move (zaznamenat nový vrchol)[ push current state on stack] pop current state on stack
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 33
L-systémy v 3D - ukázka
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 34
L-systémy v 3D - strom1000 blobůprogram L-ParserRenderer POVRay
Angle: 100
Axiom: pRules:a=&am=+mn=-np=FF[cag]>(120)[cag]>(120)[cag]>(50)!(0.9)'~(3)pg=~(3)!'F[cmb][cnb]^(5)gb=~(3)!'F[cmF][cnF]^(3)b
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 35
Obsah:
• Fraktál, dimenze objektu, soběpodobnost• L-systémy• Systémy iterovaných funkcí
(lineární a nelineární IFS)• Dynamické systémy• Fraktály v komplexní rovině• Fraktály ve vyšších dimenzích• Stochastické fraktály
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 36
Systémy iterovaných funkcí – IFS• IFS = Iterated Function Systém• Fraktál je soběpodobný -> lze najít zobrazení z celého
obrazce na jeho menší části• Iterace těchto zobrazení na množinu bodů vede ke
konvergenci k atraktoru• IFS se skládá z množiny těchto zobrazení• Většinou se jedná o afinní transformace• IFS lze většinou popsat malým množstvím zobrazení ->
kompaktní struktura popisující fraktál
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 37
Systémy iterovaných funkcí – IFS• Místo pouze jedné transformace x->F(x) máme množinu
transformací, mezi kterými náhodně vybíráme (algoritmusnáhodné procházky)
• Iterativní opakování transformací na množině bodůvygeneruje výsledný IFS fraktál
• Použití IFS:– Generování fraktálních obrazců– Fraktální komprese obrazu
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 38
IFS – algoritmus vizualizace• Vyber náhodný bod v rovině (prostoru)• Náhodně vyber jednu transformaci z množiny zadaných
transformací• Aplikuj transformaci na vybraný bod -> souřadnice nového
bodu• Vykresli nový bod• Opakuj body 1-5 po zadaný počet iterací (např. 1000)
• Pro rychlejší vykreslování obrazce lze u každého mapovánízvolit jeho pravděpodobnost.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 39
IFS – Sierpinského trojúhelník
Sierpinského trojúhelník definovaný třemiafinními transformacemi. Každá transformacemá pravděpodobnost 1/3
Modifikovaný Sierpinského trojúhelníkdefinovaný č��
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 41
IFS – Sierpinského trojúhelníkPravděpodobnosti transformací:
p1=0.10
p2=0.45
p3=0.45
Transformační matice A:0.5 0.0 0.0 0.50.5 0.0 0.0 0.50.5 0.0 0.0 0.5
Translační matice B:-0.50 0.00 0.50 0.00 0.00 0.86
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 42
IFS – ukázky
Binární strom Kapradina
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 43
IFS – ukázky
Spirála Kaligrafické „Z“Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 44
IFS – ukázky
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 45
3D IFS• IFS lze generovat i v 3D prostoru
• Transformační matice A a translační matice B se rozšíří o jeden řádek
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 46
3D IFS
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 47
Nelineární IFSJsou použity nelineární transformace
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 48
Obsah:
• Fraktál, dimenze objektu, soběpodobnost• L-systémy• Systémy iterovaných funkcí
(lineární a nelineární IFS)• Dynamické systémy• Fraktály v komplexní rovině• Fraktály ve vyšších dimenzích• Stochastické fraktály
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 49
Dynamické systémy• Dynamický systém• Lineární dynamický systém• Nelineární dynamický systém• Stavový prostor• Stupně volnosti• Atraktor dynamického systému• Podivný atraktor• Dynamický model růstu• Bifurkační diagram• Způsoby vykreslení dynamických systémů• Ukázky dynamických systémů
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 50
Dynamický systém• Dynamický systém sestává ze stavového prostoru a
dynamických podmínek.• Stavový prostor – souřadnice popisující stav systému v
daném čase• Dynamické podmínky – popisují změnu systému v čase.
Jsou většinou popsány soustavou diferenciálních rovnic.• Stav systému – popsán vektorem, ležícím ve stavovém
prostoru• Změna stavu systému – provedení diferenciálních rovnic a
nahrazení starého stavového vektoru vektorem novým
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 51
Základní dělení dynamických systémů• Deterministický dynamický systém
– Lze poměrně přesně popsat například soustavou diferenčních nebodiferenciálních rovnic
• Stochastický (náhodný) dynamický systém– Při popisu systému jsme odkázáni na statistické vlastnosti systému:
střední hodnota, disperze, směrodatná odchylka, centrální momentaj.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 52
Lineární dynamický systém• Lineární systém je takový systém, v němž lze uplatnit
princip superpozice• Princip superpozice lze ilustrovat na následujícím příkladu:
• Pro funkci f(x) lze potom využít principu superpozice.• Superpozice využíváme při řešení velkého množství
problémů, například při řešení průtoku elektrického proudu velektronických obvodech nebo ve fyzice při skládánípůsobení sil na hmotný bod.
• Obecně platí, že je-li systém lineární a lze využítsuperpozice, je řešení takového systému často velmijednoduché a jednoznačné. Chování takových systémů lzepředpovědět i do budoucnosti
0)(0)(0)( =+→=∧= yxfyfxf
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 53
Nelineární dynamický systém• Nelineární systém je takový systém, kde neplatí princip
superpozice -> jestliže f(x)=0 ^ f(y)=0, není zaručeno, žetaké f(x+y)=0. V nelineárním systému platí principsuperpozice pouze pro malou množinu izolovaných bodů,kterým říkáme fixní body.
• Je-li systém nelineární, je nutné pro výpočet změny stavusystému řešit diferenciální rovnice, což je mnohdy velmisložité. Také není zaručeno, že se nám podaří předpovědětstav systému i do budoucnosti.
• V případě elektrických obvodů je nelineárním prvkemnapříklad dioda. Pro diodu neplatí klasický Ohmův zákon aje-li dioda ve složitějším elektrickém obvodu, nelze tentoobvod řešit běžnými metodami (superpozice, smyčkovéproudy).
• Někdy se takový systém pro snažší výpočty linearizuje, tj.nelineární závislost se nahradí závislostí lineární.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 54
Stavový prostor dynamického systému• Stavový prostor určuje, jakých hodnot může nabývat
stavový vektor dynamického systému. Stavový vektor jetvořen množinou proměnných, které mohou nabývat hodnotz určitého intervalu. Interval všech těchto hodnot potomurčuje celý stavový prostor.
• Konečný stavový prostor má omezené množství stavů.Například stavový prostor vyhozené koruny má pouze dvastavy, stavový prostor vržené kostky má šest stavů atd.
• Spočitatelný stavový prostor má sice nekonečnémnožství stavů, ale tyto stavy jsou spočitatelné. Toznamená, že každému stavu můžeme přiřadit nějaképřirozené číslo.
• Nekonečný stavový prostor má jako stavové proměnnéreálná čísla, je tedy nekonečný a není spočitatelný.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 55
Stupně volnosti• Stupně volnosti udávají počet vzájemně nevázaných
stavových proměnných ve stavovém vektoru dynamickéhosystému.
• Je-li dynamickým systémem popsán hmotný bod pohybujícíse na ploše, má tento systém dva stupně volnosti.
• Pohybuje-li se tento bod v prostoru, má systém tři stupněvolnosti.
• Možné je mít i více stupňů volnosti, například kdyžuvažujeme barvu nebo teplotu objektu.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 56
Atraktor dynamického systému• Atraktor (anglicky attractor) dynamického systému je stav,
do kterého systém směřuje.
• Množina, ve které je stavový vektor, když je systém vnekonečném čase.
• Atraktory rozdělujeme do několika tříd:– atraktorem jsou pevné body– atraktorem jsou periodické body– atraktorem jsou kvaziperiodické body– atraktor tvoří chaoticky umístěné body– atraktor je na pomezí mezi chaotickým a uspořádaným
systémem (podivný atraktor)
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 57
Atraktor dynamického systému• Jsou-li atraktorem dynamického systému pevné body, jde o
nejjednodušší případ.• Systém se v nekonečném čase ustálil v nějakém stabilním
stavu a v podstatě už nejde o dynamický systém.• Příkladem může být kyvadlo, které se vlivem odporu
vzduchu a odporu ložisek zastaví v nejnižším bodě svédráhy.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 58
Atraktor dynamického systému• Jsou-li atraktorem periodické (resp. kvaziperiodické)
body, jde také o jednoduchý případ.• Systém se ustálil tak, že osciluje mezi několika stavy.• Příkladem je těleso, které se na své cestě vesmírem
dostane do blízkosti velmi hmotného tělesa.Po určitém čase se pohyb tohototělesa ustálí na eliptické dráze.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 59
Atraktor dynamického systému• Je-li atraktor chaotický, znamená to, že výsledný atraktor
nelze nijak dopředu předpovědět.• To je způsobeno tím, že je systém velmi citlivý na počáteční
podmínky.• Chaotičnost v tomto případě neznamená náhodnost,
protože se bavíme o deterministických systémech.• Příkladem může být koule postavená na vrcholku jehlanu.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 60
Podivný atraktor• Podivný atraktor (anglicky strange attractor) je nejzajímavějším
případem atraktoru.• Tento typ atraktoru vzniká, je-li systém popsán minimálně třemi
diferenciálními rovnicemi. Takový systém může mít velmi komplikovanýatraktor, který sice bude chaotický, ale přesto bude vykazovat určitépravidelnosti. Termín podivný atraktor není ještě přesně matematickydefinován, ale považujeme za něj takový atraktor, který vykazuje stejnégeometrické vlastnosti, jaké mají fraktály.
• První dynamický systém, který měl podivný atraktor, vytvořil EdwardLorenz v roce 1963 (viz dále). Šlo o jednoduchý systém se třemidiferenciálními rovnicemi, které však ve svém důsledku vytvořily přisimulaci chaotický atraktor, který měl fraktální strukturu. Na těchtorovnicích bylo také vidět velkou citlivost na počátečních podmínkách. Ipři velmi malé změně počátečních podmínek byl výsledek diametrálněodlišný.
• Termín strange attractor poprvé zavedli ve své práci Ruelle a Takens vroce 1970.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 61
Dynamický model růstu• Populační růst v určitém časovém období (např. rok) závisí
na populačním růstu v předchozím časovém období.• Populační růst klesá, jakmile celková část populace
dosáhne určité hodnoty Xm. Tento dynamický (jelikož semění v čase) proces je nelineární.
• Výpočet vychází z matematického modelu omezeného růstupopulace po jednotlivých generacích:
• kde Pn je počet jedinců v n-té generaci a Gr je velikost růstu.
• Hodnoty Pn jsou v rozmezí 0..1
• Hodnoty Gr jsou v rozmezí 0% - 100%
)1(1 nnrn PPGP −××=+
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 62
Dynamický model růstu - vlastnosti• Pro Gr<200%, se po určité době stav populace ustálí na
hodnotě Xm a nenastávají žádné odchylky.– Hodnota Xm je tedy pro tuto hodnotu růstu atraktorem.
• Pro Gr=200% se hodnoty Xm nikdy nedosáhne. Systémosciluje mezi hodnotou, která je menší než Xm a hodnotou,která je větší než Xm.– Existují tedy dvě velikosti populace, které se každý rok vyměňují.– Tyto dvě hodnoty jsou atraktorem, který je periodický.
• Jestliže Gr=245%, nastává oscilace mezi čtyřmi stavy.Hodnoty Xm se samozřejmě nikdy nedosáhne.– Tyto čtyři stavy jsou tedy atraktorem.
• Pro Gr>245% nastává postupně oscilace mezi osmi,šestnácti, dvaatřiceti atd... stavy.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 63
Dynamický model růstu - vlastnosti• Zajímavý efekt nastane, je-li Gr>257%. Pro tyto hodnoty se
systém stává chaotický, to znamená, že velikost populací vnásledujících letech je nepředvídatelná.
• Vzdálenost parametrů intervalů, kde jsou periody stabilní(tedy například oněch 245%), se nazývá Feigenbaumovočíslo.
• Toto číslo (přesněji řečeno konstanta) je univerzální, stejnějako například číslo p nebo e. Označuje se d a mápřibližnou hodnotu d ~ 4.669 201 660 910.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 64
Bifurkační diagramBifurkační diagram, kde jsou zobrazeny neustálené hodnoty(již od první iterace)
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 65
Bifurkační diagramBifurkační diagram, kde jsou zobrazeny ustálené hodnoty(po 1000 iteracích)
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 66
Vykreslení dynamického systému• Postupným řešením stavu dynamického systému pro dané
počáteční podmínky získáme orbit (trajektorii)• Pokud nabývá stavová proměnná reálných hodnot a systém
je v čase spojitý, získáme rovinnou či prostorovou křivku• Pokud počítáme s diskrétním časem, získáme množinu
izolovaných bodů, které lze spojit pomocí čar nebointerpolačních křivek
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 67
Vykreslení dynamického systémuZjisti počáteční hodnoty x0,y0,z0Zjisti počet iteracíZjisti hodnoty všech parametrů p0..pnfor (n=0; n<počet_iterací; n++) do xn+1=f1(xn,yn,zn,p0..pn) yn+1=f2(xn,yn,zn,p0..pn) zn+1=f3(xn,yn,zn,p0..pn) vykresli_bod(xn+1,yn+1,zn+1)done• Pro 2D systémy není nutné počítat proměnnou z.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 68
Lorenzův atraktorEdward Lorenz 1963
• První systém s podivným atraktorem• Fraktál byl objeven při výzkumu změny počasí v čase• Velká závislost na počátečních podmínkách• Výpočet vychází ze soustavy rovnic:
xycztz
zxybxty
ayaxtx
+−=∂∂
−−=∂∂
+−=∂∂
Které lze upravit a převéstna diskrétní podobu:
)()()()()(
)()(
1
1
1
dtyxdtzczzdtxzdtydtxbyy
dtyadtxaxx
nnnnn
nnnnnn
nnnn
××+××−+=××−×−××+=
××+××−+=
+
+
+
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 69
Lorenzův atraktor
Počáteční podmínky:
dt=0.02 a=5 b=15 c=1Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 70
DynamicVychází ze soustavy diferenciálních rovnic:
))(()())(()(
txftytyftx
=′−=′
Kterou lze převést do diskrétní podoby zavedenímkonstantní změny času dt:
)()(
1
1
nnn
nnn
xfdtyyyfdtxx
×+=×−=
+
+
Poslední dva výrazy v podstatě udávají tvar iteračnísmyčky. Parametry jsou počáteční hodnoty x,y azměna dt. Funkce f()= sin(kn + a*fn1(b*kn))
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 71
Dynamic
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 72
Dynamic (barevná paleta)
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 73
DynamicParametry:
x0= 0
y0= 0
dt= 0.1
a = 1
b = 3
fn= cos
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 74
Gingerbreadman
voidfraktal_ginger ( float startx, /* pocatecni podminky */ float starty, /* pro iteraci */ int maxiter, /* maximalni pocet iteraci */ float scale, /* meritko pro vykresleni */ float pan) /* posun na obrazovce */{ float x = startx; /* pocatecni podminky */ float y = starty; float x2; /* pomocna promenna */ int iter = maxiter; /* citac iteraci */ while (iter--) { /* iteracni smycka */ x2 = x; x = 1.0 - y + fabs (x); y = x2; putpixel (x * scale + pan, y * scale + pan, iter); }}Priklad volani: fraktal_ginger(-0.1, 0.0, 30000, 30, 60);
Science of Fractal Images strana 149
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 75
Gingerbreadman
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 76
Henon
void fraktal_henon (float startx, /* pocatecni podminky */float starty, /* pro iteraci */
float a, float b, int maxiter, /* maximalni pocet iteraci */ float scale, /* meritko pro vykresleni */ float pan) /* posun na obrazovce */{ float x = startx; /* pocatecni podminka */ float y = starty; float x2; int iter = maxiter; /* citac iteraci */ while (iter--) { /* iteracni smycka */ x2 = x; x = 1.0 + y - a * x * x; y = b * x2; putpixel (x * scale + pan, y * scale + pan, iter); }}Priklad volani: fraktal_henon (0.0, 0.0, 1.4, 0.3, 30000, 50, 60);
Michel Henon (astronom)zobrazení orbitu astronomických objektůvychází se z diferenciálních rovnic pro pohyb astronomických objektů
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 77
Henon
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 78
MartinA. K. Dewdneyčasopis Computer Recreationsvoid fraktal_martin(float startx, /* pocatecni podminky */ float starty, /* při iteraci */ float a, int maxiter, /* maximalni pocet iteraci */ float scale, /* meritko pro vykresleni */ float pan){ /* posun na obrazovce */ float x = startx; /* pocatecni podminka */ float y = starty; float x2; int iter = maxiter; /* citac iteraci */ while (iter--) { /* iteracni smycka */ x2 = x; x = y - sin (x); y = a - x2; putpixel (x * scale + pan, y * scale + pan, iter); }}Priklad volani: fraktal_martin (0.0, 0.0, 3.14, 30000, 5, 160);
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 79
Martin
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 80
Kamtorus
void fraktal_kamtorus ( float start, /* pocatecni a koncova */ float end, /* hodnota orbitu */ float step, /* krok zvetsovani orbitu */ float alfa, /* uhel natoceni pri kazde iteraci */ int maxiter, /* maximalni pocet iteraci */ float scale, /* meritko pro vykresleni */ float pan) /* posun na obrazovce */{ float orbit; /* aktualni hodnota orbitu */ float x, y, x2; /* souradnice iterovaneho bodu */ int iter; for (orbit = start; orbit < end; orbit += step) { x = orbit / 3.0; /* pocatecni nastaveni orbitu */ y = orbit / 3.0; iter = maxiter; while (iter--) { /* iteracni smycka */ x2 = x; x = x2 * cos (alfa) + (x2 * x2 - y) * sin (alfa); y = x2 * sin (alfa) - (x2 * x2 - y) * cos (alfa); putpixel (x * scale + pan, y * scale + pan, iter); } }}Priklad pouziti: fraktal_kamtorus (0.0, 1.8, 0.15, 1.5, 300, 80, 160);
Lze jednoduše rozšířit do 3D tak, že se hodnota orbitupovažuje za třetí souřadnici
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 81
Kamtorus
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 82
Kamtorus 3D
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 83
Hopalong
void fraktal_hopalong ( float startx, /* pocatecni podminky */ float starty, /* pro iteraci */ float a, float b, float c, int maxiter, /* maximalni pocet iteraci */ float scale, /* meritko pro vykresleni */ float pan) /* posun na obrazovce */{ float x = startx; /* pocatecni podminka */ float y = starty; float x2, pom; int iter = maxiter; /* citac iteraci */ while (iter--) { /* iteracni smycka */ x2 = x; pom = x; if (pom > 0) x = y - sqrt (fabs (b * x - c)); else x = y + sqrt (fabs (b * x - c)); y = a - x2; putpixel (x * scale + pan, y * scale + pan, iter); }}Priklad pouziti: fraktal_hopalong (0, 0, 0.4, 1.0, 0.0, 60000, 50, 160);
A. K. Dewdneyčasopis Computer Recreations
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 84
Hopalong
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 85
ChipMichael Peters (autor programu HOP)Tento systém lze získat z předchozího malou změnouvýrazů v iterační smyčce:
nn
nnnnn
xay
bxccxbxyx
yx
−=
−××−××−=
==
+
+
1
1
0
0
lnarctanlncos)sign(
00
a,b,c jsou parametry, které ovlivňují vzhled fraktálu.
x0 a y0 �þx1J/TT3 1 Tf2.38320 Tc0 Tw<00fe>Tj/TT4 1 Tf0.496�þ Tí vz7(e)-0 T(chnologifrao002 ) 0 1(V)��
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 89
PickoverClifford Pickover Chaos in Wondeland
dynamický systém definovaný soustavou rovnic:
nn
nnnn
nnnn
xzdycxzybxzayx
sincossincossin
1
1
1
=−=
−=
+
+
+
a,b,c,d jsou parametry iterační smyčky
x0,y0,z0 jsou počáteční podmínky
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 90
Pickover
Parametry:
a=2.24 b=0.43 c=-0.65 d=-2.43 x0=0 y0=0
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 91
Latoocarfian
Clifford Pickover Chaos in Wondelandzobecněný fraktál „Pickover“
dynamický systém definovaný soustavou rovnic:
a,b,c,d jsou parametry iterační smyčky
x0,y0,z0 jsou počáteční podmínky
f1,f2,f3,f4 jsou libovolné funkce s jedním parametrem typu float vracející typ float
)()()()(
431
211
aydfaxfybxcfbyfx
nnn
nnn
+=+=
+
+
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 92
Latoocarfian
Parametry:a=-0.966 b=2.87 c=0.76 d=0.74x0=0 y0=0f1~sin f2~sin f3~sin f4~sin
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 93
Mandelbrotovo mračno• Zobrazení “orbitů” při výpočtu Mandelbrotovy množiny.
• Vychází se z rovnice Mandelbrotovy množiny:
C∈+=+
czczz nn
,
21
• Zobrazovány jsou polohy bodů (tj. komplexních čísel zn) připrovádění iterační smyčky.
• Aby se zabránilo zaplnění obrázku náhodnými body, jezavedena hranice (threshold), která udává, od které iteracese body zobrazují.
• Další možností je zobrazovat pouze ty body, kterénedivergují (tedy nemají pevný bod v nekonečnu).
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 94
Mandelbrotovo mračno – zdrojový kódvoid mandel_cloud (float xmin, float ymin, float xmax, float ymax, /* rohy v C-rovine */ float maxiter, /* maximalni pocet iteraci */ int step, /* pocet deleni v C-rovine */ float startx, float starty, /* poc. podminky ve vypoctu */ float scale, float pan) { /* zvetseni a posun */ int x, y; /* pozice na obrazovce */ int iter; /* pocitadlo iteraci */ int threshold=maxiter-10; /* hranice pro zobrazeni */ float xpos, ypos; /* pozice v mnozine */ float zx1, zy1, zx2, zy2, cx, cy; /* pro pocitani z^2+c */ float xd, yd; /* prirustex x a y */ ypos = ymin; /* pocatecni nastaveni */ xd=(xmax-xmin)/step; yd=(ymax-ymin)/step; /* vypocet prirustku ve smeru souradnych os */ for (y = 0; y < step; y++) { ypos += yd; xpos=xmin; /* dalsi radek */ for (x = 0; x < step; x++) { xpos += xd; /* dalsi bod v radku */ zx1 = startx; zy1 = starty; /* "zkresleni" poc. iterace */ cx = xpos; cy = ypos; /* pocatecni pozice v mnozine */ iter = maxiter; while (iter--) { /* iteracni smycka */ zx2 = zx1 * zx1; zy2 = zy1 * zy1; /* zx1^2, zy1^2 */
if ((zx2 + zy2) > 4.0) break; /* test na bailout */ zy1 = 2.0 * zx1 * zy1 + cx; zx1 = zx2 - zy2 + cy; /* z=z^2+c */ if (iter < threshold) putpixel (zx1*scale + pan, zy1 * scale + pan, iter); } } }}
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 95
Mandelbrotovo mračno – celkový pohled
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 96
Mandelbrotovo mračno – detailní výřez
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 97
Obsah:
• Fraktál, dimenze objektu, soběpodobnost• L-systémy• Systémy iterovaných funkcí
(lineární a nelineární IFS)• Dynamické systémy• Fraktály v komplexní rovině• Fraktály ve vyšších dimenzích• Stochastické fraktály
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 98
Fraktály v komplexní rovině• Komplexní parabola• Mandelbrotova množina• Juliovy množiny• Inverzní způsob vykreslení Juliových množin• Další funkce v komplexní rovině
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 99
Komplexní parabola(~1925) Julia, Fatou, ….(1980) Mandelbrot,Douday….
kruzniceatraktorz
atraktorz
atraktorzzzzzc
cczczzfz nnn
→=
∞=→>
=→<→→→→=
≠∈+==+
1
1
01:0
0,)(
0
0
0
80
40
200
21
C
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 100
Komplexní parabolaPro |c|<=z a |z|>2 posloupnost diverguje:
zcz
zczcz
czz
zczczz
czzzcz
czczzzz
czczz
≥+
≥−>+
≥∧>
≥−→≥−
≥−+→≥
−>+→>∧>
−≥+∧>
2
2
22
22
2
2
22
222
2
|zn|>2->divergence
|c|>2->divergence
jinak se musí iterovat
|z2|
|c||z2 +c|
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 101
Mandelbrotova množinaBenoit B. Mandelbrot (*1924, 1974 IBM, 1984 Harvard)
Anglicky: Mandelbrot Set, M-set
nelineární deterministický fraktál
HD=2 TD=1
z0=[0,0]
c0=[x,y] ~ pozici pixelu v komplexní rovině
Potenciál = únikový počet iterací (bod konverguje k nekonečnu)
∞=→+≥ nn zcz lim2
c je v intervalu (-2,-2)..(2,2)test na bailout: |z|>2 -> |z|2>4 (optimalizace)orbit (bod):•diverguje•konverguje k pevnému bodu•dostane se do cyklu -> periodicity check
C∈+==+
czczzfz nnn
,)( 2
1
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 102
Mandelbrotova množina - výpočetvoid mandel(float xmin, float xmax, float ymin, float ymax,int maxiter){ int x,y,iter; /* pozice na obrazovce a pocitadlo iteraci */ float xpos,ypos; /* pozice v mnozine */ float zx1,zy1,zx2,zy2; /* pro vypocet z^2+c */ float cx,cy; /* -//- */ float xd,yd; /* prirustex x a y */ ypos=ymin; xd=(xmax-xmin)/RES_X; /* vypocet prirustku */ yd=(ymax-ymin)/RES_Y; for (y=0; y<RES_Y; y++) { ypos+=yd; xpos=xmin; /* dalsi radek */ for (x=0; x<RES_X; x++) { xpos+=xd; /* dalsi pixel */ zx1=0; zy1=0; /* pocatecni iterace */ cx=xpos; cy=ypos; /* pocatecni pozice v mnozine */ for (iter=0;iter<maxiter;iter++) { /* iterace */
zx2=zx1*zx1; zy2=zy1*zy1; if ((zx2+zy2)>4) break; /* test na bailout */ zy1=2*zx1*zy1+cy; zx1=zx2-zy2+cx; /* z=z^2+c */
} putpixel(x,y,iter); /* vystup */ } }}
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 103
Mandelbrotova množina – celkový pohled
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 104
Mandelbrotova množina - detail
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 105
Mandelbrotova množina - soběpodobnost
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 106
Mandelbrotova množina – barevná paleta
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 107
Mandelbrotova množina – změna zn=0
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 108
Mandelbrotova množina – vyšší mocniny
Změna vzorce:
místo zn+1->zn2+c je zn+1->zn
4+c
symetrie ~ mocnině-1 použité při výpočtu
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 109
Mandelbrotova množina – urychlení• Rychlá kontrola velikosti kompl. čísla bez odmocniny• Fixed point operace (pouze některé platformy)• Test, jestli je část obrazce symetrická (symmetry test)• Test periodicity bodů (periodicity checking)• Výpočet hranice množiny (boundary check)• Při animacích výpočet pouze nových bodů
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 110
Mandelbrotova množina – test periodicity#define PER_CHECK 0.0001#define PER_PERIOD 16int mtest(double ccx,double ccy){ double zx=0,zy=0,zx2,zy2; double zzx=0,zzy=0,zzx2,zzy2; int i=0; int period=0; double dst; do { if (period==PER_PERIOD) { zzx2=zzx*zzx; zzy2=zzy*zzy; zzy=2.0*zzx*zzy+ccy; zzx=zzx2-zzy2+ccx; period=0; } zx2=zx*zx;zy2=zy*zy; zy=2.0*zx*zy+ccy; zx=zx2-zy2+ccx; i++; period++; dst=ldabs(zx-zzx)+ldabs(zy-zzy); if (dst<PER_CHECK) { i=MAXITER; result2=1; } } while (i<MAXITER && zx2+zy2<4.0); return (i);}
void mandel(void){ double zx,zy,zx2,zy2,cx,cy; int x,y,i; int color; cy=-2.0; for (y=0;y<480;y++) { cx=-2.0; for (x=0;x<480;x++) { i=0;zx=0;zy=0; color=mtest(cx,cy); if (color==15) { do { zx2=zx*zx; zy2=zy*zy; zy=2.0*zx*zy+cy; zx=zx2-zy2+cx; i++; putpixel(MAX_X*zx), (MAX_Y*zy),1); } while(i<MAXITER && zx2+zy2<4.0); } cx=cx+4.0/480.0; } cy=cy+4.0/480.0; }}
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 111
Mandelbrotova množina a číslo p
#include <stdio.h>void main(void){ long double x,y,x2,y2,cx,cy,xx,u; long double i=0.0; do { printf("Zadej cy: "); scanf("%Lf",&cy); if (cy>5) break; cx=-0.75; i=0.0; x=y=0.0; do { x2=x*x; // x^2 y2=y*y; // y^2 xx=x2-y2+cx; // x^2-y^2+cx y=2.0*x*y+cy; x=xx; i++; } while ( (x2+y2)<4.0 && i<10000000.0); i--; u=i; printf("%Lf \t %Lf \t %30.26Lf \n",i,u,u*cy); } while (cy<5.0);}
Pro cy jdoucí k 0 se výsledek blíží k číslu PI
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 112
Mandelbrotova množina - zajímavosti• Nejkomplexnější tvar, který lze vytvořit v rovině• Přímá souvislost s bifurkačním diagramem (zdvojení period)• Uvnitř Mandelbrotovy množiny lze nalézt geometricky
vyjádřené matematické řady:– mocninná řada o základu 2– číselná řada racionálních čísel– Fibbonaciho posloupnost– „geometrické výpočty“ – součet, součin
• Uvnitř Mandelbrotovy množiny lze nalézt (vypočítat)matematické konstanty:– p– e (základ přirozených logaritmů)– a, ß (viz bifurkační diagram) – tato čísla jsou stejně univerzální jako
p nebo e.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 113
Mandelbrotova množina - krajina
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 114
Juliovy množiny
(1925) Julia, Fatou… Mandelbrot
nelineární deterministický fraktál
HD=0..2 TD=1
z0=[x,y] ~ pozici pixelu v komplexní rovině
c0=[cx,cy] determinuje tvar Juliovy množinyc je v intervalu (-2,-2)..(2,2)z je v intervalu (-2,-2)..(2,2)test na bailout: |z|>2 -> |z|2>4 (optimalizace)c je vně M-set -> Juliova množina je spojitác je mimo M-set -> -//- je nespojitá (Fatou dust)c je na hranici -> limitní případ kdy HD=TD+1=2
∞=→+≥ nn zcz lim2
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 115
Juliovy množiny - výpočetvoid julia(float xmin, float xmax, float ymin, float ymax, float cx, float cy, int maxiter){ int x,y; /* pozice na obrazovce */ int iter; /* pocitadlo iteraci */ float xpos,ypos; /* pozice v mnozine */ float zx1,zy1,zx2,zy2; /* pro pocitani z^2+c */ float xd,yd; /* prirustex x a y */ xpos=xmin; /* pocatecni nastaveni */ ypos=ymin; xd=(xmax-xmin)/RES_X; /* vypocet prirustku */ yd=(ymax-ymin)/RES_Y; for (y=0; y<RES_Y; y++) { ypos+=yd; /* dalsi radek */ xpos=xmin; for (x=0; x<RES_X; x++) { xpos+=xd; /* dalsi pixel */ zx1=xpos; /* pocatecni iterace */ zy1=ypos; for (iter=0;iter<maxiter;iter++) {/* iterace */
zx2=zx1*zx1; zy2=zy1*zy1;if ((zx2+zy2)>4) break; /* test na bailout */zy1=2*zx1*zy1+cy;zx1=zx2-zy2+cx; /* z=z^2+c */
} putpixel(x,y,iter); /* vystup */ } }}
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 116
Juliovy množina - ukázka
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 117
Juliovy množiny – symetrie: zn+1=zn2+c
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 118
Juliovy množiny – symetrie: zn+1=zn3+c
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 119
Juliovy množiny – symetrie: zn+1=zn4+c
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 120
Porovnání symetrií u různých mocninMandelbrotova množina
Juliovy množiny
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 121
Juliovy množiny – inverzní výpočet
Výchozí vzorec:
Provádíme zpětný výpočet:
Vzorec má dva výsledky: kladný, záporný (vše vkomplexní rovině)
Zobrazují se orbity, ne dosažený počet iterací.
Traverzace binárního stromu:
• první levý
• první pravý
• náhodná procházka
czz nn +=+2
1
czz nn −=−1
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 122
Juliovy množiny – inverzní výpočet
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 123
Juliovy množiny – inverzní výpočet
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 124
Další komplexní funkce• v komplexní rovině lze použít i další funkce pro
generování fraktálů• vykreslení stejné jako u Mandelbrotovy množiny• existují i příslušné „Juliovy množiny“ – konstantní c• u téměř všech funkcí v komplexní rovině
nalezneme v obrázku malou kopii Mandelbrotovymnožiny
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 125
Fraktál generovaný funkcí „Magnet“• funkce „Magnet“ byla vytvořena při studiu změny
magnetizace v teplotním okolí Courierova bodu• pro snadný výpočet přechod do komplexní roviny
(jako v elektronice – střídavý proud a výpočetobvodů pomocí impedance)
22
1 )2(2)1(
−+−+
=+ czcz
zn
nn
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 126
Fraktál generovaný funkcí „Magnet“
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 127
Obsah:
• Fraktál, dimenze objektu, soběpodobnost• L-systémy• Systémy iterovaných funkcí
(lineární a nelineární IFS)• Dynamické systémy• Fraktály v komplexní rovině• Fraktály ve vyšších dimenzích• Stochastické fraktály
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 128
Fraktály ve vyšších dimenzích• Hyperkomplexní čísla• Zobrazení hyperkomplexních fraktálů• Doporučení pro experimenty• Hyperkomplexní algebra• Quaternionová algebra• Ukázky 4D fraktálů
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 129
Hyperkomplexní čísla• Rozšíření Juliových množin z prostoru komplexních čísel do
prostoru hyperkomplexních čísel• Jedná se o čtyřrozměrné těleso• V komplexní rovině existují dva jednotkové vektory: 1, i• V hyperkomplexní rovině existují čtyři jednotkové vektory:1, i, j, k
• Používají se dvě algebry (sady operátorů)– Hyperkomplexní– Quaternionová
• Každá algebra nesplňuje některý zákon, který je splněn vkomplexní rovině – není jednoznačné, kterou algebru použít
• V rovině pouze jedna algebra – mn. Komplexních čísel saditivní a multiplikativní operací (i*i=-1)
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 130
Výpočet hyperkomplexních fraktálů• Podobné s výpočtem Mandelbrotovy množiny a Juliových
množin v komplexní rovině• Místo dvou smyček (pro x a y) jsou obecně čtyři smyčky
(x, y, z, w)• Výplň prostoru (voxelový model) nebo upravený Z-buffer
(pouze jeden pohled na fraktál)• Možnost raytracingu – složitý výpočet normál
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 131
Zobrazení hyperkomplexních fraktálů• Výběr algebry (hyperkomplex, quaternion)• Výběr typu fraktálu (Julia, Mandelbrot)• Výběr vhodné funkce pro iteraci (např. z->z2+c)
• Výpočet (např. vyplňování voxelů, Z buffer)• Ořezání 4D fraktálu 3D prostorem• Transformace a zobrazení 3D fraktálu na 2D obrazovku• Další dvě nezobrazené dimenze lze dále využít:
• barva povrchu
• průhlednost
• Textura
• Výsledkem je těleso - lze použít např. v CSG
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 132
Doporučení pro experimenty• Na rozdíl od fraktálů v komplexní rovině používat malý počet
iterací, jinak je „povrch” nespojitý
• Nejprve zobrazit M-set v 2D a zjistit vhodné C pro vykreslení2D Juliovy množiny, z toho pak vycházet pro 4D
• Periodicity check moc neurychluje, protože v 4D mají orbitydelší periodu
• Při stínování zjistit pseudonormály ze sousedních bodů, alepozor na nespojitosti
• 4D M-set je většïnou nezajímavý
• je lepší použít vyšší bailout (16 a více)
• vyšší mocniny ve vzorci z->zn+c velmi zpomalují výpočet
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 133
Hyperkomplexní algebra• Splněn komutativní zákon a*b=b*a
• Není zaručena existence inverzního prvku:
• Základní pravidla pro počítání:ij= kjk= -iki= -jji= kkj= -iik= -jii= jj = -kk = -1ijk= 1
Hh
Hh ∈⇐∈∀ 1
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 134
Hyperkomplexní algebra – příkladpro h1 = 1x1+iy1+jz1+kw1 h2 = 1x2+iy2+jz2+kw2 je:h1*h2= 1(x1x2-y1y2-z1z2+w1w2)+ +i(y1x2+x1y2-w1z2-z1w2)+ +j(z1x2-w1y2+x1z2-y1w2)+ +k(w1x2+z1y2+y1z2+x1w2)pro h = 1x+iy+jz+kw je:h2= (1x+iy+jz+kw)2 = =x2+ixy+jxz+kxw+ixy+i2y2+ +ijyz+ikyw+jxz+ijyz+j2z2+ +jkzw+kxw+ikyw+jkwz+k2w2 = = 1(x2-y2-z2+w2)+ +i(2xy-2zw)+ +j(2xz-2yw)+ +k(2xw+2yz)
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 135
Quaternionová algebra• Není splněn komutativní zákon: ab<>ba
• Ke každému prvku existuje prvek inverzní:
• Základní pravidla pro počítání:ij= kjk= iki= jji= -kkj= -iik= -jii= jj = kk = -1ijk= -1
Qq ∈⇔∈∀ 1
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 136
Quaternionová algebra - příkladpro q1 = 1x1+iy1+jz1+kw1 q2 = 1x2+iy2+jz2+kw2 platí:q1q2= 1(x1x2-y1y2-z1z2-w1w2)+ +i(y1x2+x1y2+w1z2-z1w2)+ +j(z1x2-w1y2+x1z2+y1w2)+ +k(w1x2+z1y2-y1z2+x1w2)pro q = (1x+iy+jz+kw):q2 = (x+iy+jz+kw)2 = = x2+ixy+jxz+kxw+ixy+i2y2+ +ijyz+ikyw+jxz+ijyz+j2z2+ +jkzw+kxw+ikyw+jkwz+k2w2 = = 1(x2-y2-z2-w2)+ +2ixy+2jxz+2kxw
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 137
4D fraktály – změna prvního parametru
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 138
4D fraktály – změna druhého parametru
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 139
4D fraktály – změna třetího parametru
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 140
4D fraktály – změna čtvrtého parametru
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 141
Ukázky 4D fraktálů
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 142
Ukázky 4D fraktálů
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 143
Ukázky 4D fraktálů
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 144
Ukázky 4D fraktálů
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 145
Ukázky 4D fraktálů
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 146
Ukázky 4D fraktálů
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 147
Ukázky 4D fraktálů
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 148
Ukázky 4D fraktálů
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 149
Ukázky 4D fraktálů – CSG operace
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 150
Ukázky 4D fraktálů – stereo pohled
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 151
Obsah:
• Fraktál, dimenze objektu, soběpodobnost• L-systémy• Systémy iterovaných funkcí
(lineární a nelineární IFS)• Dynamické systémy• Fraktály v komplexní rovině• Fraktály ve vyšších dimenzích• Stochastické fraktály
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 152
Stochastické fraktály• Při výpočtu se používají generátory náhodných čísel• Fraktál je při každém spuštění algoritmu jiný• Typy stochastických fraktálů
– Simulace difůze– Simulace Brownova pohybu– Midpoint algoritmus
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 153
Simulace difůze• Generování začíná z jednoho bodu uprostřed obrazovky• Další body se náhodně posunují po obrazovce• Při setkání s již nakresleným bodem je nový bod vykreslen• Generování končí při dosažení okrajů obrazovky• Zrychlení – ohraničená oblast okolo již vygenerovaných
bodů, ve které se testuje. Tato oblast se postupně zvětšuje.• Tvar hranice ohraničené oblasti určuje tvar výsledného
fraktálu.• Alternativa – začíná se na dolním okraji obrazovky ->
generování rostlin
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 154
Simulace difůze
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 155
Simulace difůze
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 156
Brownův pohyb
t0 t0.5 t1
X(t0)
X(t0.5)
X(t1)
X(t0,5+d)d
+
++=
+ d
tXtXttdtXt
2)()(
,2
)(, 0101
21
21
Fraktál je generovaný rekurzivním algoritmem, který náhodněvybere hodnotu „d“ v polovině předchozí úsečky, úsečkurozpůlí a posune jejich společný bod o hodnotu „d“.Amplituda náhodné hodnoty „d“ se postupně snižuje.
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 157
Brownův pohyb• Midpoint algoritmus
– Rozšíření předchozího postupu z 1D do 2D– Tvoří se 2D „mraky“– Animace mraků:
• Změna barevné palety• Kombinace dvou bitmap s posunem
– Lze generovat i výškovou mapu - „height field“• Barva určuje výšku v daném místě
– Lze rozšířit i do vyšších dimenzí (3D mraky,animace 2D a 3D mraků)
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 158
Brownův pohyb
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 159
Odkazy na Internetu• www.fractalus.com• www.fractint.org• www.povray.org• www.fit.vutbr.cz/~tisnovpa• spanky.triumf.ca/www/fractint• www.math.binghamton.edu/MATH/topics/mandel/index.html• www.olympus.net/personal/dewey/mandelbrot.html• www.cygnus-software.com/• www.geocities.com/SoHo/Lofts/5601/gallery.htm
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 160
Aplikace pro vytváření fraktálů• FractInt (DOS, Windows, Unixy)• QUAT (DOS, Windows, Unixy)• UltraFractal (Windows)• Xaos (DOS, Windows, Unixy)• POVRay (vše, kde existuje překladač cc)• FractalExtreme (Windows)• IFS Editor (Windows)• GIMP + pluginy (Windows, Unixy)
Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně 161
Literatura• Barnsley M.: Fractals Everywhere, Academic Press Inc.,1988, 1993. ISBN 0-12-079062-9
• Barnsley M. and Anson L.: The Fractal Transform, Jonesand Bartlett, April, 1993. ISBN 0-86720-218-1
• Hao, B. ed.: Chaos, World Scientific, Singapore, 1984• Mandelbrot B.: The Fractal Geometry of Nature, W. H.
FreeMan, New York. ISBN 0-7167-1186-9• Peitgen H. O. and Richter P. H.: The Beauty of Fractals,
Springer-Verlag, New York, 1986. ISBN 0-387-15851-0• Prusinkiewicz P. and Lindenmayer A.: The Algorithmic
Beauty of Plants, Springer-Verlag, NY, 1990. ISBN 0-387-97297-8
• Gleick, J.: Chaos, Ando Publishing, Brno 1996
Top Related