Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel...

41
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

Transcript of Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel...

Page 1: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 2: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 3: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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á

Page 4: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně
Page 5: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 6: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 7: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 8: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 9: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 10: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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ý č��

Page 11: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 12: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 13: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 14: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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)

Page 15: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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.

Page 16: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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)

Page 17: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

××+××−+=××−×−××+=

××+××−+=

+

+

+

Page 18: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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)

Page 19: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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ů

Page 20: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 21: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 22: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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)��

Page 23: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 24: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 25: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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|

Page 26: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 27: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 28: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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.

Page 29: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 30: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 31: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 32: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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ů

Page 33: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 34: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

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

Page 35: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 36: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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ů

Page 37: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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ů

Page 38: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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

Page 39: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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.

Page 40: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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)

Page 41: Základy počítačové grafikyrencab.xf.cz/Prezentace_soubory/Fraktaly/07zpg_fractaly.pdf · Pavel Tišnovský Fakulta Informačních Technologií Vysoké učení technické v Brně

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