ˇ e vysok´e uˇcen´ı technick´e v Praze Cesk´ Fakulta elektrotechnick´a
ˇ VUT FEL katedra pocˇı´tacˇu˚ C
Diplomov´a pr´ace
Simulace vzniku a v´ yvoje p´ıseˇ cn´ ych dun Martin Fousek
Vedouc´ı pr´ace: Ing. Jaroslav Sloup
Studijn´ı program: Informatika a v´ ypoˇcetn´ı technika leden 2006
Prohl´ aˇ sen´ı Prohlaˇsuji, ˇze jsem svou diplomovou pr´aci vypracoval samostatnˇe a pouˇzil jsem pouze podklady uveden´e v pˇriloˇzen´em seznamu. Nem´am z´avaˇzn´ y d˚ uvod proti uˇzit´ı tohoto ˇskoln´ıho d´ıla ve smyslu §60 Z´akona ˇc. 121/2000 Sb., o pr´avu autorsk´em, o pr´avech souvisej´ıc´ıch s pr´avem autorsk´ ym a o zmˇenˇe nˇekter´ ych z´akon˚ u (autorsk´ y z´akon).
V Praze dne 27.1. 2006
.............................................................
ii
Abstract This diploma thesis is focused on a simulation of wind activity in sandy areas. Main goal is creation and evolution of dunes, large scale patterns created by wind. Used method is not based on exact physical processes, due to the enormous complexity of such approach. Like in similar works, quite simple equations, that are the results of field observations, were used instead.
Abstrakt Tato diplomov´a pr´ace se zab´ yv´a simulac´ı vlivu vˇetru na ˇcistˇe p´ıseˇcn´ y povrch s kamenit´ ym podloˇz´ım, pˇredevˇs´ım vznikem dun a v´ yvojem jejich tvaru. Metoda k tomu pouˇzit´a nen´ı postavena na pˇresn´em fyzik´aln´ım popisu proudˇen´ı vˇetru p´ıseˇcnou krajinou, jehoˇz vyj´adˇren´ı by bylo krajnˇe komplikovan´e a v´ ypoˇcetnˇe velmi n´aroˇcn´e. Stejnˇe jako v ostatn´ıch publikovan´ ych prac´ıch na podobn´e t´ema se i v t´eto pouˇz´ıv´a pomˇernˇe jednoduch´ ych vztah˚ u a rovnic, odvozen´ ych z pozorovan´ı z´akladn´ıch dˇej˚ u v p´ıseˇcn´ ych krajin´ach.
iii
Obsah ´ 1 Uvod
2
´ 2 Uvod do problematiky 2.1 Terminologie . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Pohyb p´ısku zp˚ usoben´ y vˇetrem . . . . . . . . . . . . . . . 2.3 Ukl´ad´an´ı p´ısku . . . . . . . . . . . . . . . . . . . . . . . . ´ ad´an´ı p´ısku v mal´em mˇeˇr´ıtku aneb wind-ripples 2.3.1 Ukl´ 2.3.2 Ukl´ad´an´ı p´ısku ve velk´em mˇeˇr´ıtku aneb duny . . . 2.4 Typy dun . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Prostˇred´ı umoˇzn ˇuj´ıc´ı vznik uveden´ ych typ˚ u dun . . . . . . 2.6 C´ıle t´eto diplomov´e pr´ace . . . . . . . . . . . . . . . . . .
. . . . . . . .
. . . . . . . .
3 3 4 4 5 5 7 7 8
3 Popis metod pouˇ zit´ ych v prac´ıch na podobn´ e t´ ema 3.1 Simulace p´ıseˇcn´ ych oblast´ı . . . . . . . . . . . . . . . . 3.2 Simulace wind-ripples pomoc´ı bump-mapping . . . . . 3.3 Simulace wind-ripples jejich pˇr´ım´ ym zobrazen´ım . . . 3.4 Integrodiferenci´aln´ı model wind-ripples . . . . . . . . 3.5 Simulace vzniku a v´ yvoje dun bunˇeˇcn´ ym automatem . 3.6 Simulace vzniku a v´ yvoje dun na diskr´etn´ı mˇr´ıˇzce . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
10 10 10 11 12 14 14
4 Teoretick´ y rozbor modelu 4.1 Z´akladn´ı vlastnosti modelu . . . 4.2 Inicializace . . . . . . . . . . . . 4.3 Vˇetrn´a eroze . . . . . . . . . . . 4.4 Uloˇzen´ı . . . . . . . . . . . . . . 4.5 Pˇresun p´ısku vlivem gravitace . . 4.6 V´ıtr vanouc´ı libovoln´ ym smˇerem 4.6.1 Vˇetrn´e pole . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
16 16 17 17 17 20 20 20
5 Implementace 5.1 Model . . . . . . . . . . . . . . 5.1.1 Vytvoˇren´ı vˇetrn´eho pole 5.1.2 Vˇetrn´a eroze a ukl´ad´an´ı 5.1.3 Eroze vlivem gravitace .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
22 23 23 24 25
iv
. . . .
5.2
5.3
5.4
5.1.4 Aktualizace vˇetrn´eho st´ınu . . . . . . . . . . 5.1.5 Aktualizace hodnoty href . . . . . . . . . . . Visualizace . . . . . . . . . . . . . . . . . . . . . . . 5.2.1 V´ ypoˇcet norm´alov´ ych vektor˚ u vrcholu . . . . 5.2.2 Dynamick´e st´ıny . . . . . . . . . . . . . . . . LOD . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.1 V´ yhody a nev´ yhody pouˇzit´eho pˇr´ıstupu . . . 5.3.2 Struˇcn´ y popis neoptimalizovan´eho algoritmu 5.3.3 Zaveden´ı prahov´e vzd´alenosti . . . . . . . . . 5.3.4 Obalov´an´ı prahov´ ych vzd´alenost´ı . . . . . . . 5.3.5 Generov´an´ı obecn´eho triangle strip . . . . . . Vstup / v´ ystup . . . . . . . . . . . . . . . . . . . . . 5.4.1 Komprese dat . . . . . . . . . . . . . . . . . . 5.4.2 V´ıce dat v jednom souboru . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
26 27 28 28 29 31 33 34 34 36 36 39 39 40
6 Ovl´ ad´ an´ı programu 42 6.1 Pˇriloˇzen´ y k´od . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 6.2 Uˇzivatelsk´e prostˇred´ı a pohyb kamery . . . . . . . . . . . . . 42 6.3 Poˇzadavky na hardware . . . . . . . . . . . . . . . . . . . . . 43 7 Popis proveden´ ych experiment˚ u 7.1 Z´avislost na dostupn´em mnoˇzstv´ı p´ısku 7.2 Z´avislost na nastaven´ı parametru L0 . . 7.3 LOD . . . . . . . . . . . . . . . . . . . . 7.4 Umˇel´e objekty ve sc´enˇe . . . . . . . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
44 45 45 45 45
8 Z´ avˇ er
53
9 N´ avrhy dalˇ s´ıho rozvoje t´ ematu
54
A Pˇ r´ılohy A.1 Podrobn´ y popis uˇzivatelsk´eho prostˇred´ı A.1.1 Run . . . . . . . . . . . . . . . . A.1.2 Camera positions . . . . . . . . . A.1.3 Visualization . . . . . . . . . . . A.1.4 Wind . . . . . . . . . . . . . . . A.1.5 Terrain . . . . . . . . . . . . . . A.1.6 Average height . . . . . . . . . . A.1.7 Input / Output . . . . . . . . . .
58 58 58 58 59 60 60 61 61
1
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
Kapitola 1
´ Uvod V pouˇstn´ıch oblastech cel´eho svˇeta lze nal´ezt p´ıseˇcn´e duny rozmanit´ ych tvar˚ u a vˇsech moˇzn´ ych velikost´ı. Tyto u ´tvary, pˇrestoˇze dosahuj´ı v´ yˇsky aˇz des´ıtek metr˚ u, jsou sloˇzeny z p´ıseˇcn´ ych zrnek, tedy ˇc´asteˇcek vˇetˇsinou menˇs´ıch neˇz jeden milimetr. Je proto zaj´ımav´e zab´ yvat se studiem faktor˚ u, kter´e nˇeco takov´eho umoˇzn ˇuj´ı a na z´akladˇe tohoto studia pak navrhovat metody simulace, kter´e s menˇs´ı ˇci vˇetˇs´ı pˇresnost´ı dosahuj´ı v´ ysledk˚ u podobn´ ych pˇr´ırodˇe. Pˇresto prac´ı na podobn´e t´ema bylo publikov´ano jen nˇekolik. Tato diplomov´a pr´ace se k nim pˇrid´av´a a soustˇred´ı se pˇredevˇs´ım na visualizaci a drobn´a rozˇs´ıˇren´ı jiˇz navrˇzen´eho modelu, kter´ y vˇsak nikdy nebyl pouˇzit v oblasti poˇc´ıtaˇcov´e grafiky. V tomto textu bude postupnˇe vysvˇetleno, jak´e fyzik´aln´ı procesy se pod´ılej´ı na tvorbˇe dun a tak´e na tvorbˇe jevu o hodnˇe menˇs´ıho mˇeˇr´ıtka naz´ yvan´eho vˇetrn´e vlnky (wind ripples). Jak´e metody byly pouˇzity v jiˇz publikovan´ ych prac´ıch a bude pops´an model spoleˇcnˇe s implementac´ı pouˇzit´ y v t´eto diplomov´e pr´aci. V posledn´ıho dvou kapitol´ach pak je shrnuto, jak´ ych v´ ysledk˚ u tato pr´ace dos´ahla a jak´ ych ne a tedy jak´ ym smˇerem by se mˇel ub´ırat dalˇs´ı v´ yvoj.
2
Kapitola 2
´ Uvod do problematiky V t´eto kapitole je pops´ana terminologie pouˇz´ıvan´a v cel´em textu. D´ale jsou uvedeny dva z´akladn´ı pozorovan´e jevy, kter´e se daj´ı pˇri t´ematu vliv vˇetru na p´ıseˇcn´ y povrch simulovat. Nakonec je vysvˇetleno, ˇc´ım se tato diplomov´a pr´ace zab´ yvala a ˇc´ım ne, a zd˚ uvodnˇeno proˇc tomu tak je.
2.1
Terminologie
Ke zpˇrehlednˇen´ı popisovan´eho t´ematu by mˇel pˇrispˇet soupis d´ale pouˇz´ıvan´ ych term´ın˚ u. Vybran´e a d´ale popisovan´e informace z prac´ı ostatn´ıch autor˚ u jsou tak´e popisov´any pomoc´ı t´eto terminologie v r´amci snahy o sjednocen´ı. • T´ımto textem je d´ale oznaˇcov´an text t´eto diplomov´a pr´ace. • Dvourozmˇernou mˇr´ıˇzkou, pokud nen´ı uvedeno jinak, se rozum´ı datov´a struktura, do kter´e se pˇristupuje pomoc´ı dvou index˚ u x a y. Jej´ı grafick´a reprezentace je pravideln´a, ˇctvercov´a mˇr´ıˇzka. • Buˇ nkou se rozum´ı jedna libovoln´a pozice v mˇr´ıˇzce. • h(x, y) je hodnota uloˇzen´a v buˇ nce urˇcen´e (x, y). Grafick´a reprezentace je v´ yˇska buˇ nky v mˇr´ıˇzce. ~ oznaˇcen´ı pro vektor pˇresunu. Je urˇcen rozd´ılem pozic dvou bunˇek • L ~ = (x, y)−(x0 , y 0 ). Jeho velikost L je poˇcet bunˇek mezi (x, y) a (x0 , y 0 ) L vˇcetnˇe (x, y). • q znaˇc´ı mnoˇzstv´ı pˇrenesen´eho p´ısku. Jedn´a se vˇzdy o ˇc´ıslo, o kter´e je sn´ıˇzena hodnota buˇ nky jedn´e a nav´ yˇsena hodnota buˇ nky jin´e. Zde se tak´e sluˇs´ı upozornit, ˇze anglick´e term´ıny, u nichˇz nebyl zn´am odborn´ y ˇcesk´ y pˇreklad, z˚ ustaly v p˚ uvodn´ım znˇen´ı obˇcas s titulky.
3
2.2
Pohyb p´ısku zp˚ usoben´ y vˇ etrem
Hlavn´ım ˇcinitelem, kter´ y v p´ıseˇcn´ ych oblastech zp˚ usobuje pˇresun materi´alu, je v´ıtr. Pro lepˇs´ı pochopen´ı toho, jak zde nakonec vznikaj´ı tvary dosahuj´ıc´ı v´ yˇsky des´ıtek metr˚ u je tˇreba se uch´ ylit k pozorov´an´ı vlivu vˇetru na ˇc´asteˇcky rozmˇeru okolo 1mm a m´enˇe, tedy p´ıseˇcn´ ych zrnek. Existuj´ı dva pozorovan´e zp˚ usoby pohybu jednotliv´ ych zrnek p´ısku. V´ yraznˇejˇs´ı vliv na pˇresun materi´alu m´a prvn´ı z nich naz´ yvan´ y saltation. T´ımto zp˚ usobem se pohybuje zhruba 75% pˇresunovan´eho materi´alu. Tento proces je odstartov´an t´ım, ˇze rychlost vˇetru pˇres´ahne pr´ah naz´ yvan´ y fluid treshold. P˚ usoben´ım tlaku vˇetru t´eto rychlosti jsou z p´ıseˇcn´eho povrchu vyr´aˇzena jednotliv´a zrnka p´ısku. Takto vyraˇzen´e zrnko je vˇsak ve vˇetˇsinˇe pˇr´ıpad˚ u pˇr´ıliˇs tˇeˇzk´e na to, aby bylo trvale un´aˇseno vˇetrem, a proto opisuje balistickou kˇrivku a dopad´a zpˇet na povrch. Po dopadu se m˚ uˇze odrazit nebo b´ yt pohlceno povrchem. Kaˇzdop´adnˇe tento dopad vyr´aˇz´ı z povrchu dalˇs´ı zrnka, kter´a jsou urychlena vˇetrem, dopadaj´ı na povrch, vyr´aˇz´ı z povrchu dalˇs´ı zrnka a proces se kask´adovitˇe ˇs´ıˇr´ı. Jakmile je takov´ yto proces odstartov´an, rychlost vˇetru uˇz nemus´ı b´ yt tak velk´a aby tlak vˇetru vyr´aˇzel zrnka z povrchu. Rychlost vˇetru dostaˇcuj´ıc´ı k zachov´an´ı procesu je pak takov´a, kter´a vyr´aˇzen´ ym zrnk˚ um dod´a alespoˇ n tu samou energii, kterou cel´ y syst´em ztr´ac´ı pˇri dopadu zrnek zpˇet na povrch. Tato udrˇzovac´ı rychlost se oznaˇcuje jako impact treshold. V´ yˇska letu zrnka se ud´av´a v jednotk´ach aˇz des´ıtk´ach cm. Pozorov´an´ım a mˇeˇren´ım bylo zjiˇstˇeno, ˇze se stoupaj´ıc´ı rychlost´ı vˇetru mnoˇzstv´ı pˇren´aˇsen´eho p´ısku stoup´a exponenci´alnˇe. Tˇeˇzk´a zrnka p´ısku 1 se u ´ˇcastn´ı procesu saltation jen pˇri siln´ ych vˇetrn´ ych smrˇst´ıch. Vˇetˇsinu ˇcasu jsou vˇsak souˇc´ast´ı druh´eho procesu oznaˇcovan´eho creep 2 . Pˇri nˇem nejsou tˇeˇzk´a zrnka vyr´aˇzena vˇetrem ani dopadaj´ıc´ımi lehk´ ymi zrnky pˇr´ımo do vzduchu, ale pod vlivem n´araz˚ u dopadaj´ıc´ıch zrnek se pouze pomalu kut´al´ı po povrchu. Tento zp˚ usob se pod´ıl´ı zbyl´ ymi 25% na mnoˇzstv´ı pˇresunovan´eho p´ısku.
2.3
Ukl´ ad´ an´ı p´ısku
M´a-li doch´azet k akumulaci p´ısku, je potˇreba, aby se rychlost vˇetru un´aˇsej´ıc´ıho p´ısek na urˇcit´em m´ıstˇe sniˇzovala. D˚ usledkem toho se sn´ıˇz´ı i objem pˇren´aˇsen´eho materi´alu a dojde k ukl´ad´an´ı. Takov´eto zpomalov´an´ı vˇetru nast´av´a mimo jin´e za pˇrek´aˇzkou nebo v ter´enn´ıch depres´ıch. Ke zpomalen´ı vˇetru vˇsak m˚ uˇze doj´ıt i bez pˇr´ım´eho vlivu ter´enu, d´ıky jevu oznaˇcovan´emu saltation drag. Tento jev je v´ ysledkem tˇren´ı mezi ˇc´asticemi vzduchu a p´ıseˇcn´ ymi zrnky a je nejsilnˇejˇs´ı pˇri povrchu, kde je koncentrace zrnek ve vzduchu nejvyˇsˇs´ı. Zaj´ımav´ ym d˚ usledkem velmi siln´ ych vˇetr˚ u pak je zd´anlivˇe paradoxn´ı 1 2
S pr˚ umˇerem vˇetˇs´ım neˇz 1 mm. Obˇcas se tak´e pro ten sam´ y jev objevuje oznaˇcen´ı reptation.
4
zv´ yˇsen´a intenzita ukl´ad´an´ı. Se stoupaj´ıc´ı rychlost´ı vˇetru stoup´a koncentrace zrnek, zvyˇsuje se tˇren´ı, rychlost vˇetru kles´a, doch´az´ı k ukl´ad´an´ı a kolobˇeh se opakuje.
2.3.1
´ ad´ Ukl´ an´ı p´ısku v mal´ em mˇ eˇ r´ıtku aneb wind-ripples
Jak anglick´ y n´azev napov´ıd´a, jedn´a se o vlnky tvarovan´e vˇetrem v p´ıseˇcn´em povrchu. Jsou charakteristick´ ym jevem nejen v rozlehl´ ych p´ıseˇcn´ ych oblastech, ale napˇr´ıklad i na pl´aˇz´ıch. Jejich v´ yˇska se pohybuje v ˇr´adu cm a rychlost jejich vzniku nebo kompletn´ı zmˇeny jejich vzoru se pohybuje v ˇr´adech minut aˇz des´ıtek minut. D˚ uvodem jejich vzniku je jak´akoliv byt’ i nepatrn´a nerovnost povrchu. Protoˇze zrnka vykon´avaj´ıc´ı saltation dopadaj´ı na povrch pod t´emˇeˇr stejn´ ym pomˇernˇe mal´ ym u ´hlem ˇcin´ıc´ım pr˚ umˇernˇe 10◦ , tak tato nerovnost zabraˇ nuje dopadu zrnek typu saltation do m´ıst za pˇrek´aˇzkou. Na obr´azku 2.1 je tato oblast mezi A a B. Sn´ıˇzenou koncentrac´ı dopadaj´ıc´ıch zrnek do t´eto oblasti je zde pak utlumen i pˇresun p´ısku. Naproti tomu do oblasti mezi body B a C uˇz zrnka dopadaj´ı a smˇerem od B do C zde doch´az´ı pˇresunu materi´alu. T´ım se prohlubeˇ n zvˇetˇsuje a vznik´a prvn´ı vlnka. V oblasti za bodem C, ve kter´e je t´ım, ˇze nen´ı naklonˇena, intenzita dopad˚ u trochu niˇzˇs´ı, vznik´a dalˇs´ı nerovnost a vˇse se opakuje.
ˇ Obr´azek 2.1: Sipky vyznaˇcuj´ı dopadaj´ıc´ı zrnka. Oblast mezi A a B je odst´ınˇena Se vzr˚ ustaj´ıc´ım vˇetrem vzr˚ ust´a vzd´alenost mezi jednotliv´ ym vlnkami, ´ ernˇe t´eto vzd´alenosti pak protoˇze u ´hel dopadu zrnek saltation kles´a. Umˇ vzr˚ ust´a v´ yˇska vlnek. Tento proces zvyˇsov´an´ı je vˇsak omezen, pˇri urˇcit´e rychlosti vˇetru se zaˇcnou pohybovat i tˇeˇzk´a zrnka a vypln´ı mezery a nerovnosti formuj´ıc´ı wind-ripples.
2.3.2
Ukl´ ad´ an´ı p´ısku ve velk´ em mˇ eˇ r´ıtku aneb duny
Pˇri odpov´ıdaj´ıc´ıch vˇetrn´ ych podm´ınk´ach a dostateˇcn´em pohybu a pˇresouv´an´ı materi´alu se mohou ukl´ad´an´ım p´ısku zaˇc´ıt formovat mnohem vˇetˇs´ı objekty neˇz wind-ripples. 5
Hlavn´ım jevem tvoˇr´ıc´ım duny je uˇz zmiˇ novan´ y efekt saltation drag. V´ıtr pravidelnˇe vanouc´ı p´ıseˇcnou krajinou je postupnˇe zpomalen nar˚ ustaj´ıc´ı koncentrac´ı zrnek ve vzduchu a na urˇcit´em m´ıstˇe doch´az´ı k ukl´ad´an´ı materi´alu a vznik´a z´arodek budouc´ı duny. 2.2a,b. Tento z´arodek nar˚ ust´a a pˇrid´av´a se dalˇs´ı jev, kter´ ym je zrychlov´an´ı vˇetru vanouc´ıho ter´enem vzh˚ uru. V´ıtr je zpomalov´an jevem saltation drag, protoˇze ale vane vzh˚ uru po dunˇe, jeho rychlost tolik nekles´a a nab´ır´a st´ale v´ıce zrnek p´ısku. Teprve po pˇrekon´an´ı vrcholku v´ıtr zˇretelnˇe zpomaluje a na z´avˇetrn´e stranˇe doch´az´ı k ukl´ad´an´ı 2.2c. Duna d´ale nar˚ ust´a, pˇriˇcemˇz po dosaˇzen´ı urˇcit´e v´ yˇsky pˇrest´av´a v´ıtr kop´ırovat z´avˇetrnou stranu a vane pˇres vrcholek duny paralelnˇe s povrchem. T´ım vznik´a dalˇs´ı jev sand trap. T´emˇeˇr vˇsechna zrnka p´ısku hnan´a vˇetrem smˇerem k vrcholku jsou po jeho pˇrekon´an´ı zachycena na z´avˇetrn´e stranˇe 2.2d. Sklon z´avˇetrn´e strany se zvˇetˇsuje a po pˇrekroˇcen´ı klidov´eho u ´hlu 3 doch´ az´ı k sesyp´an´ı ˇc´asti p´ısku po z´avˇetrn´e stranˇe avalanching. Sklon z´ avˇetrn´e strany se t´ım zmenˇs´ı, ale jelikoˇz neust´ale doch´az´ı k zachycov´an´ı nov´ ych a nov´ ych zrnek, sklon postupem ˇcasu opˇet nar˚ ust´a. Opakov´an´ı tohoto kolobˇehu sesyp´avaj´ıc´ıho se p´ısku a opˇetovn´eho zvyˇsov´an´ı sklonu z´avˇetrn´e strany zp˚ usobuje pomal´ y pˇresun duny ve smˇeru vˇetru.
Obr´azek 2.2: Vznik duny, sd je m´ısto nejvyˇsˇs´ı intenzity ukl´ad´an´ı. D´elka ˇsipky ukazuje rychlost vˇetru. (a,b) vznikaj´ıc´ı z´arodek duny. (c) v´ıtr vanouc´ı vzh˚ uru nab´ır´a dalˇs´ı zrnka. (d) sand trap. 3
Pro such´ y p´ısek pˇribliˇznˇe 33◦ .
6
2.4
Typy dun
Pˇres velkou r˚ uznorodost tvar˚ u dun se naˇsli spoleˇcn´e rysy jejich tvar˚ u v r˚ uzn´ ych p´ıseˇcn´ ych oblastech. Z´akladn´ı rozdˇelen´ı dun vych´az´ı z orientace jejich hˇrbetu v˚ uˇci hlavn´ımu smˇeru pˇresunu p´ısku. Toto rozdˇelen´ı d´av´a tyto typy dun transverse dunes, linear dunes a star dunes. Hlavn´ı smˇer pˇresunu p´ısku a hˇrbet transverse dune jsou na sebe kolm´e, se hˇrbetem linear dune jsou paraleln´ı a v pˇr´ıpadˇe star dune se p´ısek pohybuje ke stˇredu duny. V tˇechto kategori´ıch pak nast´av´a dalˇs´ı dˇelen´ı. • Transverse dunes – Dome dune Osamocen´a duna bez v´ yraznˇeji vytvoˇren´e n´avˇetrn´e a z´avˇetrn´e strany. Obr. 2.3a. – Barchan dune Duna se srpkovit´ ym p˚ udorysem, konce srpku jsou orientov´any po smˇeru vˇetru. Tento typ dun cestuje po vˇetru aniˇz by v´ yraznˇeji mˇenil sv˚ uj tvar. Obr. 2.3b. – Transverse dune Jedn´a se o p´ıseˇcn´ y hˇreben kolm´ y na smˇer vˇetru a cestuj´ıc´ı po smˇeru vˇetru. Obr. 2.3c. – Reversing dunes Podobn´a pˇredchoz´ımu typu, vznik´a v oblastech kde se smˇer vˇetru mˇen´ı o 180◦ . Obr. 2.3d. • Linear dunes – Seif dune Sinusov´eho tvaru s ostr´ ym hˇrbetem. ˇ asteˇcnˇe porostl´a vegetac´ı, vˇetˇs´ıch rozmˇer˚ – Sand ridge C´ u neˇz pˇredchoz´ı typ. • Star dunes – Star dune Jehlanovit´ y nebo kopulovit´ y tvar s vyb´ıhaj´ıc´ımi rameny. Obr. 2.3e. – Network dune V oblastech kde se pˇrevl´adaj´ıc´ı v´ıtr pravidelnˇe mˇen´ı pr˚ ubˇehem ˇcasu. Jedn´a se o soubory Transverse dunes, kter´e se navz´ajem pˇrekr´ yvaj´ı. Obr. 2.3f.
2.5
Prostˇ red´ı umoˇ zn ˇ uj´ıc´ı vznik uveden´ ych typ˚ u dun
V ˇcistˇe p´ıseˇcn´ ych oblastech, bez v´ yskytu vegetace a pˇrek´aˇzek, je hlavn´ım ˇcinitelem ud´avaj´ıc´ım typ dun zde panuj´ıc´ı vˇetrn´ y reˇzim. Podle zmˇen vˇetru bˇehem roku jej lze rozdˇelit na unimodal, bimodal a complex. V prvn´ım pˇr´ıpadˇe vane v´ıtr po cel´ y rok z jednoho smˇeru s mal´ ymi odchylkami. V druh´em pˇr´ıpadˇe se stˇr´ıdaj´ı dva sez´onn´ı vˇetry s odliˇsn´ ym smˇerem. Complex reˇzim znamen´a, ˇze v´ıtr bˇehem roku vane z v´ıce neˇz dvou smˇer˚ u nebo 7
vane takov´ ym zp˚ usobem, ˇze se smˇer vˇetru ned´a jednoznaˇcnˇe urˇcit. Dalˇs´ım faktorem ovlivˇ nuj´ıc´ım tvorbu dun v dan´e oblasti je mnoˇzstv´ı p´ısku, kter´e se na tvorbˇe dun pod´ıl´ı. Na obr´azku 2.4 je zobrazen diagram ukazuj´ıc´ı typy dun v z´avislosti na vˇetrn´em reˇzimu a dostupn´em mnoˇzstv´ı p´ısku.
2.6
C´ıle t´ eto diplomov´ e pr´ ace
Simulovateln´e jevy jsou tedy tvorba wind-ripples a simulace vzniku a v´ yvoje dun. Tato diplomov´a pr´ace se soustˇredila na t´ema dun. D˚ uvodem tohoto rozhodnut´ı bylo, ˇze zat´ımco na t´ema wind-ripples uˇz byly publikov´any na internetu volnˇe dostupn´e pr´ace v oboru poˇc´ıtaˇcov´a grafika, t´ematem visu-
Obr´azek 2.3: Typy dun. Pˇrevzato z [2]
8
Obr´azek 2.4: Typy dun v z´avislosti na vˇetrn´em reˇzimu a dostupnosti p´ısku v dan´e oblasti. Pˇrevzato z [2]
alizace vzniku a v´ yvoje dun pomoc´ı vztah˚ u popsan´ ych v t´eto kapitole se zˇrejmˇe jeˇstˇe nikdo nezab´ yval. I samotn´ ym autor˚ um jiˇz hotov´ ych prac´ı ˇslo pˇredevˇs´ım o zkoum´an´ı vlastnost´ı jimi navrˇzen´ ych model˚ u a ne o visualizaci. Dalˇs´ım d˚ uvodem t´eto volby je, ˇze t´ema dun je ˇsirˇs´ı neˇz t´ema wind-ripples, coˇz by mˇelo vyplynout z informac´ı uveden´ ych v t´eto kapitole.
9
Kapitola 3
Popis metod pouˇ zit´ ych v prac´ıch na podobn´ e t´ ema V t´eto kapitole jsou pops´any z´akladn´ı principy a metody pouˇz´ıvan´e pro simulaci v´ yvoje p´ıseˇcn´ ych oblast´ı, jak v mal´em tak velk´em mˇeˇr´ıtku, a jsou zde z´aroveˇ n s t´ımto popisem uvedeny pr´ace, kter´e danou metodu pouˇz´ıvaj´ı.
3.1
Simulace p´ıseˇ cn´ ych oblast´ı
At’ se jedn´a o simulaci vzniku a v´ yvoje dun nebo o simulaci wind ripples, lze u vˇetˇsiny prac´ı naj´ıt spoleˇcn´e rysy. Jsou to jednak datov´a struktura, kterou je dvou popˇr´ıpadˇe jednorozmˇern´a mˇr´ıˇzka, a pak tak´e z´akladn´ı simulaˇcn´ı sch´ema uveden´e v tabulce 3.1.
3.2
Simulace wind-ripples pomoc´ı bump-mapping
Tento postup byl pouˇzit ve velmi ˇcasto citovan´e pr´aci [3], kter´a se soustˇred´ı pˇredevˇs´ım na visualizace jevu. Jsou pouˇzity dvˇe dvourozmˇern´e mˇr´ıˇzky, jedna reprezentuje samotn´ y pouˇstn´ı ter´en, kter´ y bude zobrazen a druh´a je pomocn´a a pouˇz´ıv´a se pro generov´an´ı vlnek a n´asledn´e generov´an´ı bumb-map textury. Hodnoty pomocn´e mˇr´ıˇzky jsou na zaˇc´atku simulace inicializov´any n´ ahodn´ ymi ˇc´ısly. Pot´e prob´ıh´a simulace. Jej´ım prvn´ım krokem je generov´an´ı vlnek na mˇr´ıˇzce, kter´e prob´ıh´a shodnˇe s tabulkou 3.1. Po v´ ybˇeru erodovan´e buˇ nky je vyj´adˇrena velikost pˇresunu jako L = L0 + bh(x, y) ~ L0 v´ıtr fouk´a vˇzdy v kladn´em smˇeru osy x, proto staˇc´ı poˇc´ıtat s velikost´ı L. je kontroln´ı parametr odpov´ıdaj´ıc´ı s´ıle vˇetru, b je konstanta. Po pˇresunut´ı urˇcit´eho mnoˇzstv´ı materi´alu, reprezentovan´e sn´ıˇzen´ım hodnoty erodovan´e buˇ nky a zv´ yˇsen´ım hodnoty c´ılov´e buˇ nky, je pro obˇe buˇ nky a jejich nejbliˇzˇs´ı 10
1. Nastav poˇc´ateˇcn´ı hodnoty bunˇek mˇr´ıˇzky. 2. V mˇr´ıˇzce urˇci buˇ nku s ze kter´e bude odebr´ano mnoˇzstv´ı p´ısku q. 3. Podle v´ yˇsky a popˇr´ıpadˇe polohy s a aktu´aln´ıho stavu syst´emu vypoˇcti hodnotu q. Odeber materi´al, tedy h0 (s) = h(s) − q. 4. Zkontroluj stabilitu s a bl´ızk´eho okol´ı a proved’ pˇr´ıpadn´e opravn´e kroky. ~ 5. Vypoˇcti vektor pˇresunu L. ~ a proved’ uloˇzen´ı, tedy h0 (d) = h(d) + q. 6. Urˇci m´ısto uloˇzen´ı d = s + L 7. Zkontroluj stabilitu d a bl´ızk´eho okol´ı a proved’ pˇr´ıpadn´e opravn´e kroky. 8. Uprav stavov´e promˇenn´e podle nov´e situace a pokraˇcuj bodem 2. Tabulka 3.1: Z´akladn´ı sch´ema pr˚ ubˇehu simulac´ı jak wind-ripples tak vzniku a v´ yvoje dun. Body 4 a 7 jsou vˇetˇsinou pouˇz´ıv´any ke kontrole pˇrekroˇcen´ı klidov´eho u ´hlu svahu a odpov´ıdaj´ıc´ım pˇresun˚ um materi´alu. okol´ı aplikov´ana difusn´ı funkce. Tato funkce pˇredstavuje sesyp´av´an´ı materi´alu vlivem gravitace. Cyklus eroze ukl´adan´ı prob´ıh´a aˇz do zformov´an´ı vlnek na pomocn´e mˇr´ıˇzce a pot´e nastoup´ı druh´ y krok algoritmu. Pro kaˇzdou buˇ nku pomocn´e mˇr´ıˇzky je urˇcen jej´ı norm´alov´ y vektor. Norm´alov´e vektory jsou pak pouˇzity pro generov´an´ı bump-mapping textur, kter´e jsou kombinov´any s texturou p´ıseˇcn´eho povrchu. Tato kombinace textur je pak nan´aˇsena na v´ ysledn´ y povrch reprezentovan´ y hlavn´ı mˇr´ıˇzkou a tak je efektu wind-ripples doc´ıleno aniˇz by se zv´ yˇsil poˇcet polygon˚ u hlavn´ıho modelu.
3.3
Simulace wind-ripples jejich pˇ r´ım´ ym zobrazen´ım
Pˇr´ıkladem pr´ace vyuˇz´ıvaj´ıc´ı tento postup je [5]. I tato se chov´a podle sch´ematu tabulky 3.1 a pouˇz´ıv´a dvourozmˇernou mˇr´ıˇzku. Autoˇri definuj´ı chov´an´ı navrˇzen´eho modelu pomoc´ı dvou jev˚ u. Prvn´ım z nich je saltation a odpov´ıd´a v tabulce 3.1 bod˚ um 2,3 a 5,6 a druh´ y jev je creep odpov´ıdaj´ıc´ı bod˚ um 4 a 7. Zde pozor, autoˇri jev creep popisuj´ı tak, ˇze neodpov´ıd´a popisu v podkapitole 2.2, n´ ybrˇz se jedn´a o sesyp´av´an´ı materi´alu. Po zvolen´ı buˇ nky s ve kter´e probˇehne eroze, je vypoˇc´ıt´an vektor pˇresunu t´ımto vzorcem. Lx = (l0x + wx h(s))(1 − tanh ∂h(s) ∂x ) ∂h(s) Ly = (l0y + wy h(s))(1 − tanh ∂y ) 11
A mnoˇzstv´ı pˇrenesen´eho materi´alu je urˇceno takto. q = q0 (1 + tanh(∇h(s))) Oper´atory gradient a parci´aln´ı derivace slouˇz´ı k vyj´adˇren´ı nejvˇetˇs´ıho rozd´ılu v´ yˇsek v mˇr´ıˇzce mezi buˇ nkou s a nˇekterou z bunˇek sousedn´ıch. Oba tyto oper´atory zaruˇcuj´ı, ˇze se chov´an´ı modelu pˇrizp˚ usobuje hodnot´am aktu´aln´ı buˇ nky s a jej´ımu nejbliˇzˇs´ımu okol´ı. Vektor w ~ reprezentuje v´ıtr, vektor l~0 je uˇzivatelem definovan´ y pr˚ umˇern´ y “skok”, parametr q0 urˇcuje pr˚ umˇern´e pˇrenesen´e mnoˇzstv´ı p´ısku. Vˇsechny tyto hodnoty se pod´ılej´ı na charakteru vytvoˇren´ ych wind-ripples. Po kaˇzd´em odebr´an´ı nebo uloˇzen´ı materi´alu se pro buˇ nky s a d a buˇ nky v jejich okol´ı urˇcuje v´aˇzen´ y pr˚ umˇer v´ yˇsek a tyto hodnoty jsou pak zpˇetnˇe dosazeny. T´ım se realizuje proces autory naz´ yvan´ y creep. V t´eto pr´ aci je tak´e uvedena metoda pro simulaci pˇrek´aˇzky, kter´a nepodl´eh´a vlivu vˇetru. Tak vznik´a jev, pˇri kter´em se na n´avˇetrn´e stranˇe pˇred pˇrek´aˇzkou pomalu hromad´ı p´ısek a naopak za pˇrek´aˇzkou, v jej´ım vˇetrn´em st´ınu, vznik´a m´ırn´a prohloubenina. Velmi struˇcn´ y popis t´eto metody je takov´ yto. Po kaˇzd´em urˇcen´ı c´ılov´e buˇ nky d se prov´ad´ı kontrola, zda se tato buˇ nka nenach´az´ı uvnitˇr pˇrek´aˇzky. Pokud je tomu tak, m´ısto uloˇzen´ı d je posunuto pˇred pˇrek´aˇzku smˇerem proti vˇetru. Pot´e probˇehne test, zda sklon naakumulovan´eho p´ısku pˇred pˇrek´aˇzkou nepˇrekraˇcuje klidov´ y u ´hel a probˇehne pˇr´ıpadn´e sesyp´an´ı. Pro simulaci vˇetrn´eho st´ınu se podle ˇs´ıˇrky pˇrek´aˇzky vypoˇcte oblast parabolick´eho tvaru. V t´eto oblasti je intenzita vˇetru sn´ıˇzena, nejmenˇs´ı hodnoty nab´ yv´a ihned u pˇrek´aˇzky a smˇerem ke kraji oblasti intenzita vˇetru line´arnˇe nar˚ ust´a. Smˇer vˇetru v z´avˇetˇr´ı je nezmˇenˇen, mˇen´ı se pouze intenzita.
3.4
Integrodiferenci´ aln´ı model wind-ripples
Pr´ace [6] nepouˇz´ıv´a sch´ema tabulky 3.1 a m´ısto dvourozmˇern´e mˇr´ıˇzky je pouˇzita jednorozmˇern´a. Pr´ace vych´az´ı z fyzik´aln´ıho popisu obou proces˚ u viz. 2.2, kteˇr´ı se pod´ılej´ı na tvorbˇe wind-ripples. Z´akladn´ı rovnic´ı, ze kter´e je cel´ y model odvozen, je (1 − λp )ρp
∂ζ(x, t) ∂Q(x, t) =− ∂t ∂x
(3.1)
kde ζ(x, t) je v´ yˇska ter´enu na pozici x v ˇcase t, ρp je hustota p´ısku, λp reprezentuje por´eznost povrchu (hodnota t´eto veliˇciny je obyˇcejnˇe volena 0.35). Q(x, t) je mnoˇzstv´ı materi´alu, kter´e se pˇresouv´a pozic´ı x v ˇcase t a je souˇctem mnoˇzstv´ı materi´alu pˇrenesen´eho procesem saltation a procesem creep Q(x, t) = Qs (x, t) + Qc (x, t). Vzorec tedy vyjadˇruje, ˇze zmˇena v´ yˇsky ter´enu je u ´mˇern´a zmˇenˇe mnoˇzstv´ı pohybuj´ıc´ıho se materi´alu. Pokud tedy ∂ζ(x, t)/∂t < 0 coˇz vyjadˇruje, ˇze na dan´em m´ıstˇe prob´ıh´a eroze pak v 12
tomto m´ıstˇe mus´ı nar˚ ustat objem pˇren´aˇsen´eho materi´alu ∂Q(x, t)/∂x > 0. V opaˇcn´em pˇr´ıpadˇe, kdyˇz na dan´em m´ıstˇe nast´av´a ukl´ad´an´ı, vyj´adˇren´e ∂ζ(x, t)/∂t > 0 mus´ı objem pˇren´aˇsen´eho materi´alu klesat ∂Q(x, t)/∂x < 0. Pokud nenast´av´a ˇz´adn´a zmˇena v´ yˇsky dan´eho m´ısta, pak objem pˇren´aˇsen´eho materi´alu z˚ ust´av´a konstantn´ı ∂Q(x, t)/∂x = 0. Pˇredpokladem, ˇze proud zrnek pˇresouvaj´ıc´ı se procesem saltation je v tak mal´e oblasti jakou se model zab´ yv´a konstatn´ı dost´av´ame ∂Qs (x, t)/∂x = 0 a tento proces uˇz tedy nen´ı tˇreba v rovnici 3.1 vyjadˇrovat. Je ale tˇreba m´ıt na pamˇeti, ˇze toto zjednoduˇsen´ı je moˇzn´e jen pˇri studiu mal´ ych oblast´ı, pokud zkouman´a oblast pokr´ yv´a celou dunu pak je t´ımto zjednoduˇsen´ım model jednoznaˇcnˇe znehodnocen. Nyn´ı je nutn´e vyj´adˇrit vztah pro mnoˇzstv´ı zrnek pohybuj´ıc´ıch se jevem creep. Pokud pr˚ umˇern´a d´elka pohybu tˇechto zrnek bˇehem jednoho vymrˇstˇen´ı bude oznaˇcena a ¯, pak veˇsker´ y pˇresun materi´alu m´ıstem x je souˇcet zrnek, kter´e byly vymrˇstˇeny z povrchu v oblasti urˇcen´e x − a ¯ a x. Je tˇreba tak´e zapoˇc´ıtat rozdˇelen´ı d´elky kut´alen´ı jednoho zrnka do v´ ysledn´eho vzorce. Z ∞ Z x Q0r (x) = mp np dαp(α) Nim (x0 )dx0 (3.2) −∞
x−a
Kde mp je hmota jednotliv´eho zrnka, np je pr˚ umˇern´ y poˇcet zrnek typu creep vyraˇzen´ ych dopadem jednoho zrnka typu saltation, tato hodnota je br´ana jako konstantn´ı, Nim (x0 ) je poˇcet zrnek dopadaj´ıc´ıch na m´ısto x0 a p(α) je pravdˇepodobnostn´ı rozdˇelen´ı d´elky kut´alen´ı jednoho zrnka typu creep. Protoˇze bylo zavedeno zjednoduˇsen´ı, ˇze mnoˇzstv´ı zrnek v procesu saltation je bˇehem simulace konstantn´ı a ˇze dopadaj´ı na povrch pod t´emˇeˇr stejn´ ym u ´hlem φ, pak jedin´a vˇec, kter´a ovlivˇ nuje koncentraci jejich dopadu ´ na ter´en, je zmˇena sklonu povrchu. Uhel sklonu povrchu je oznaˇcen θ. T´ım dost´av´ame vzorec pro koncentraci dopad˚ u 1 + ζx cot φ tan θ 0 0 Nim (x) = Nim (x) 1 + cos θ = Nim (x) p (3.3) tan φ 1 + ζx2 0 (x) je koncentrace dopadu zrnek na rovn´ kde Nim em povrchu. Pozorov´an´ım a experimenty bylo zjiˇstˇeno, ˇze na n´avˇetrn´e stranˇe je poˇcet zrnek procesu creep sn´ıˇzen a naopak na z´avˇetrn´e stranˇe zv´ yˇsen. Z toho vypl´ yv´a koneˇcn´ y vztah pro mnoˇzstv´ı materi´alu pˇrenesen´e procesem creep
Qc (x) = (1 − µζx )Q0c (x)
(3.4)
kde parametr µ zahrnuje tento experimenty zjiˇstˇen´ y jev. Hodnotu µ je tˇreba urˇcit empiricky. Dosazen´ım hodnoty 3.4 do 3.1 dost´av´ame rovnici Z ∞ Z x Z ∞ n o 0 0 ζt = Q0 µζxx dαp(α) F (x )dx +(1−µζx ) dαp(α)[F (x−a)−F (x)] −∞
−∞
x−a
(3.5) 13
p 0 cot φ/(ρ (1 − λ )) a F (x) = (tan φ + ζ )/ 1 + ζ 2 . Je kde Q0 = mp np Nim p p x x nutn´e zd˚ uraznit, ˇze rovnice 3.5 naprosto selˇze pokud z´avˇetrn´a strana vlnek pˇrekroˇc´ı u ´hel φ, pod kter´ ym dopadaj´ı zrnka procesu saltation. V takov´em 0 z´ pˇr´ıpadˇe nab´ yv´a pomˇer Nim /Nim aporn´e hodnoty. Proto je tˇreba pˇridat podm´ınku, ˇze F (x) = 0 pokud sklon z´avˇetrn´e strany vlnek pˇres´ahne u ´hel φ. Tato pr´ace se zab´ yv´a pouze vlastnostmi navrˇzen´eho modelu a v´ ysledky z´ısk´av´a numerick´ ym ˇreˇsen´ım rovnice 3.5.
3.5
Simulace vzniku a v´ yvoje dun bunˇ eˇ cn´ ym automatem
V pr´aci [7], kter´a se zab´ yv´ a vyuˇzit´ım bunˇeˇcn´ ych automat˚ u (cellular automata) pro u ´ˇcely simulace r˚ uzn´ ych typ˚ u eroz´ı prob´ıhaj´ıc´ıch v krajinˇe, je navrˇzen tak´e postup, jak t´ımto automatem simulovat vznik a v´ yvoj dun. Protoˇze se jedn´a o bunˇeˇcn´ y automat, tedy o dvourozmˇernou mˇr´ıˇzku, kde spolu mohou komunikovat pouze nejbliˇzˇs´ı sousedn´ı buˇ nky, tak tato pr´ace tak´e ˇc´asteˇcnˇe vyboˇcuje ze sch´ematu popsan´eho tabulkou 3.1, protoˇze d´elka pˇrenosu je zde vˇzdy maxim´alnˇe 1. Ve dvourozmˇern´e mˇr´ıˇzce, kter´a je z´akladem algoritmu, vane v´ıtr pouze jedn´ım smˇerem a to paralelnˇe s osou y. V´ıtr m˚ uˇze nab´ yvat hodnot v intervalu h0, 1i. V´ yvoj proudˇen´ı vˇetru pak ve struˇcnosti pracuje takto. 1. V prvn´ı ˇradˇe bunˇek mˇr´ıˇzky s indexy (0, 0) aˇz (xs , 0) je v´ıtr nastaven na hodnotu 1.0. 2. Pro kaˇzdou buˇ nku v n´asleduj´ıc´ı ˇradˇe je hodnota vˇetru vypoˇc´ıt´ana jako pr˚ umˇer hodnot tˇrech bunˇek v pˇredchoz´ı ˇradˇe. 3. Hodnota vˇetru je pak d´ ale sn´ıˇzena u ´mˇernˇe rozd´ılu v´ yˇsek mezi aktu´aln´ı buˇ nkou a sousedn´ı buˇ nkou po smˇeru vˇetru. Takto generovan´e hodnoty vˇetru pak slouˇz´ı pro porovn´av´an´ı s urˇcitou prahovou hodnotou definovanou pro kaˇzdou buˇ nku. Pokud je prahov´a hodnota dosaˇzena, pak je ˇc´ast materi´ alu pˇrenesena do jedn´e z nejbliˇzˇs´ıch sousedn´ıch tˇr´ı bunˇek v n´asleduj´ıc´ı ˇradˇe a to vˇzdy do t´e, buˇ nky kter´a m´a nejniˇzˇs´ı v´ yˇsku.
3.6
Simulace vzniku a v´ yvoje dun na diskr´ etn´ı mˇ r´ıˇ zce
Tento pˇr´ıstup je pouˇzit u dvou prac´ı od toho sam´eho kolektivu autor˚ u [1] a [2]. Informace v nich obsaˇzen´e jsou z´akladem t´eto diplomov´e pr´ace, proto se jejich podrobnˇejˇs´ı vysvˇetlen´ı nal´ez´a v n´asleduj´ıc´ı kapitole. Z´akladem je dvourozmˇern´a pˇr´ıpadnˇe jednorozmˇern´a mˇr´ıˇzka a simulaˇcn´ı sch´ema, kter´e je aˇz na jednu v´ yjimku totoˇzn´e s 3.1. V´ yjimkou je, ˇze se 14
neurˇcuje mnoˇzstv´ı pˇren´aˇsen´eho p´ısku, protoˇze to je vˇzdycky konstantn´ı. T´ım se d´a znatelnˇe urychlit v´ ypoˇcet napˇr´ıklad test˚ u zda sklon povrchu nepˇresahuje klidov´ yu ´hel. Erodovan´a buˇ nka se vyb´ır´a n´ahodnˇe. Pˇresouvan´ y materi´al nemus´ı b´ yt vˇzdy uloˇzen hned do prvn´ı c´ılov´e buˇ nky, z´aleˇz´ı na v´ ysledku testu pravdˇepodobnosti, ale c´ılov´e buˇ nky se mohou za sebou ˇretˇezit. T´ım se simuluje sk´ak´an´ı p´ıseˇcn´ ych zrnek po povrchu. V modelu je zaveden vˇetrn´ y st´ın postupnˇe se rozˇsiˇruj´ıc´ı za dunou, t´ım jak tato roste. D´ıky nˇemu je moˇzn´e efektivnˇe simulovat jev p´ıseˇcn´e pasti, ve kter´e je vˇetˇsina pˇresouvan´ ych mnoˇzstv´ı p´ısku zachycena. V prac´ıch je pops´ano, jak se vyv´ıjel pˇr´ıstup autor˚ u k v´ ypoˇctu velikosti pˇresunu L aˇz do nynˇejˇs´ı podoby. Nyn´ı jeho velikost z´avis´ı jak na v´ yˇsce m´ısta odkud je materi´al pˇresouv´an tak na aktu´aln´ım tvaru ter´enu. V modelu je pouˇzit v´ıtr, kter´ y vˇzdy vane ve smˇeru kladn´e osy x, proto je tak´e navrˇzena rotace mˇr´ıˇzky. Tato umoˇzn ˇuje simulaci vˇetru vanouc´ıho v´ıce smˇery. Pr´ace [4] vych´az´ı ze stejn´ ych pˇredpoklad˚ u, tedy vˇetrn´ y st´ın za dunou, konstantn´ı mnoˇzstv´ı pˇresouvan´eho p´ısku a test pravdˇepobnosti pˇred samotn´ ym ukl´ad´an´ım materi´alu. Hlavn´ı rozd´ıl oproti [1] a [2] je d´an t´ım, ˇze velikost a ~ je zad´ana pˇredem a je tedy bˇehem jedn´e simulace smˇer vektoru pˇresunu L konstantn´ı, s v´ yjimkou zp˚ usobenou t´ım, ˇze jedna sloˇzka vektoru m˚ uˇze mˇenit ~ = (1, 3) pak dalˇs´ı moˇzn´a hodnota tohoto vektoru znam´enko. Napˇr. pokud L ~ = (−1, 3). Tak se dociluje vˇetru dvou smˇer˚ je L u. C´ılem vˇsech tˇrech prac´ı nen´ı visualizace ale studium vlastnost´ı modelu.
15
Kapitola 4
Teoretick´ y rozbor modelu D´ale popsan´ y simulaˇcn´ı model vych´az´ı z prac´ı [1] a [2]. V tˇechto prac´ıch odvozen´e rovnice a pouˇzit´e vztahy vych´azej´ı ze skuteˇcn´ ych pozorov´an´ı v pouˇstn´ıch oblastech, z experiment˚ u ve vˇetrn´em tunelu a ze studia p´ıseˇcn´ ych zrnek na mikroskopick´e u ´rovni. Proto autory navrˇzen´a metoda obsahuje z´akladn´ı skuteˇcnosti jako je vˇetrn´ y st´ın, kter´ y v z´avˇetrn´e stranˇe za dunou tvoˇr´ı past na vˇetrem hnan´a p´ıseˇcn´a zrnka, velmi jednoduchou ale u ´ˇcinnou kontrolu sklonu svahu, ale i zrychlov´an´ı vˇetru smˇerem po dunˇe vzh˚ uru a urˇcen´ı aktu´aln´ıho stavu ter´enu pomoc´ı odchylek od pr˚ umˇern´e hodnoty. Podle dostupn´ ych publikac´ı nebyly metody uveden´e v tˇechto prac´ıch nikdy pouˇzity pro visualizaci v oboru poˇc´ıtaˇcov´e grafiky, i z tohoto d˚ uvodu je snaha o visualizaci tohoto modelu l´akav´a.
4.1
Z´ akladn´ı vlastnosti modelu
Z´akladn´ı sch´ema pouˇzit´eho modelu tak´e vych´az´ı z tabulky 3.1. Z´akladn´ı strukturou je dvourozmˇern´a mˇr´ıˇzka cel´ ych ˇc´ısel vˇetˇs´ıch nebo rovn´ ych nule. Jednotliv´e buˇ nky mˇr´ıˇzky jsou indexov´any (x, y). Pˇri geometrick´e reprezentaci je vzd´alenost dvou nejbliˇzˇs´ıch bunˇek a. Hodnota buˇ nky na pozici (x, y) bude znaˇcena h(x, y) a reprezentuje poˇcet sand slabs na dan´em m´ıstˇe. Sand slab je v r´amci modelu nejmenˇs´ı, d´ale nedˇeliteln´e mnoˇzstv´ı p´ısku, se kter´ ym model pracuje. V´ yˇska sand slab je rovna a/3. Z toho plyne, ˇze skuteˇcnou v´ yˇsku η buˇ nky (x, y) urˇc´ıme η(x, y) = h(x, y)(a/3). Pokud h(x, y) = 0 pak je buˇ nka na t´eto pozici oznaˇcena jako skalnat´e podloˇz´ı, coˇz je m´ısto kde nen´ı moˇzn´a dalˇs´ı eroze. V modelu je tak´e simulov´an wind shadow (vˇetrn´ y st´ın), coˇz je oblast leˇz´ıc´ı po smˇeru vˇetru za dunou, kter´a je pˇred vˇetrem chr´anˇena tˇelem duny. Je urˇcena jako plocha zabran´a z duny pod u ´hlem 15◦ smˇerem dol˚ u a prob´ıh´a zde pouze gravitaˇcn´ı eroze.
16
4.2
Inicializace
Jak bylo uvedeno v podkapitole 2.3.2, duny maj´ı schopnost vzniknout z p˚ uvodnˇe u ´plnˇe rovn´eho p´ıseˇcn´eho povrchu. Z tohoto d˚ uvodu jsou hodnoty vˇsech bunˇek mˇr´ıˇzky nastaveny na stejnou hodnotu. T´ım je tak´e umoˇznˇena regulace celkov´eho mnoˇzstv´ı p´ısku v modelu.
4.3
Vˇ etrn´ a eroze
Vˇetrn´a eroze nem˚ uˇze probˇehnout na pozici, kde h(x, y) = 0 (skalnat´e podloˇz´ı) a na pozici, kter´a je ve vˇetrn´em st´ınu. Na n´ahodnˇe zvolen´e pozici x, y je tedy proveden test, zda se pozice nenach´az´ı ve vˇetrn´em st´ınu a zda se nejedn´a o kamenn´e podloˇz´ı. Pokud ani jedna z tˇechto podm´ınek nen´ı splnˇena, provedeme erozi, ta je provedena odebr´an´ım jednoho sand slab z vybran´e buˇ nky, tedy h0 (x, y) = h(x, y) − 1. V opaˇcn´em pˇr´ıpadˇe je mˇr´ıˇzka ponech´ana beze zmˇen a probˇehne nov´a n´ahodn´a volba pozice.
4.4
Uloˇ zen´ı
Berme nyn´ı v u ´vahu pouze v´ıtr vanouc´ı v kladn´em smˇeru osy x, d´ıky tomu si ~ pouze jeho velikost´ı L. Pokud m˚ uˇzeme dovolit oznaˇcovat vektor pˇresunu L doˇslo k erozi v buˇ nce na pozici (x, y) pak na pozici (x + L(x, y), y) bude sand slab s pravdˇepodobnost´ı P uloˇzen. Pokud uloˇzen´ı nenastalo, pokus´ıme se o uloˇzen´ı na pozici (x + L(x, y) + L(x + L(x, y), y), y) atd. Tento postup vych´az´ı z pozorov´an´ı, ˇze bˇehem procesu saltation zrnka p´ısku po povrchu “sk´aˇc´ı” (bouncing) a bˇehem dopadu mezi skoky mohou b´ yt s pravdˇepodobnost´ı P zachycena povrchem. Bylo tak´e zjiˇstˇeno, ˇze pravdˇepodobnost zachycen´ı zrnka na skalnat´em povrchem je menˇs´ı. Z toho vych´az´ı toto nastaven´ı pravdˇepodobnost´ı zachycen´ı na Ps = 0.6 na p´ıseˇcn´em povrchu, Pns = 0.4 na skalnat´em podloˇz´ı a Pns = Ps = 1.0 pro oblasti ve vˇetrn´em st´ınu. Vzd´alenost pˇrenosu z dan´e pozice L(x, y) je urˇcena rovnic´ı 4.4. K vysvˇetlen´ı t´eto rovnice se docela dobˇre hod´ı popis historie jej´ıho v´ yvoje. Model, kter´ y vyuˇz´ıv´a jej´ı prvn´ı verze L(x, y) = L0 (4.1) produkuje duny se symetrick´ ym profilem, jejich z´avˇetrn´e i n´avˇetrn´e strany maj´ı sklon odpov´ıdaj´ıc´ı kritick´emu u ´hlu 33◦ . Pro vytv´aˇren´ı n´avˇetrn´ ych stran ◦ s typick´ ym sklonem okolo 10 nen´ı proto tato rovnice dostateˇcn´a. N´asleduj´ıc´ı verze rovnice vych´az´ı z poznatku, ˇze rychlost vˇetru smˇerem vzh˚ uru po dunˇe line´arnˇe vzr˚ ust´a, do rovnice 4.1 byl tedy pˇrid´an line´arn´ı ˇclen. L(x, y) = L0 + C1 (h(x, y) − havg ) (4.2) Konstanta C1 vˇetˇsinou pˇredstavuje hodnotu 0.4 a reprezentuje line´arn´ı n´ar˚ ust rychlosti vˇetru. Havg je pr˚ umˇern´ y poˇcet sand slab v jedn´e buˇ nce mˇr´ıˇzky. 17
Pouˇzit´ım t´eto rovnice vznikaj´ı duny, kter´e jsou niˇzˇs´ı, cestuj´ı rychleji a sklon jejich n´avˇetrn´e hrany se pohybuje okolo 10◦ . Z´aroveˇ n s touto rovnic´ı bylo zavedeno, aby v oblastech ve vˇetrn´em st´ınu neprob´ıhala eroze. Pokud simulace vybaven´a rovnic´ı 4.2 pobˇeˇz´ı dostateˇcnˇe dlouho, dos´ahne se vyrovnan´eho stavu (equilibrium), pˇri kter´em je na cel´e ploˇse jen jedna osamocen´a duna obklopen´a rovinou. D˚ uvodem toho je, ˇze objem p´ısku pˇrich´azej´ıc´ıho do oblasti pokryt´e dunou je vˇetˇs´ı neˇz odchoz´ıho a velikost tohoto rozd´ılu nar˚ ust´a s velikost´ı duny. To je zp˚ usobeno oblast´ı ve vˇetrn´em st´ınu, kter´a m´a pravdˇepodobnost zachycen´ı Ps = Pns = 1, jej´ı plocha jak se duna zvˇetˇsuje samozˇrejmˇe nar˚ ust´a a rychlost, kterou sand slab potˇrebuje aby oblast pˇreletˇel, je vyˇsˇs´ı neˇz rychlost, kterou m˚ uˇze z´ıskat pomoc´ı rovnice 4.2. Proto je po urˇcit´e dobˇe simulace kaˇzd´ y sand slab zachycen za dunou. Line´arn´ı ˇclen rovnice 4.2 tedy pouze reguluje sklon n´avˇetrn´e strany, ale uˇz nen´ı schopen dostateˇcnˇe regulovat v´ yˇsku duny. Tato rovnice je tedy tak´e nedostateˇcn´a. Z dalˇs´ıch praktick´ ych pozorov´an´ı vyplynulo, ˇze d´elka skoku zrnka bˇehem saltation nen´ı pˇr´ımo line´arnˇe u ´mˇern´a smykov´e rychlosti vˇetru (u∗ ), obr´azek 4.1. Proto byl do rovnice 4.2 pˇrid´an dalˇs´ı ˇclen reprezentuj´ıc´ı neline´arn´ı n´ar˚ ust
Obr´azek 4.1: Z´avislost d´elky skoku zrnka na smykov´e rychlosti [1] smykov´e rychlosti. L0 + C1 (h(x, y) − havg ) + C2 (h(x, y) − havg )2 (h(x, y) ≥ havg ) L(x, y) = L0 + C1 (h(x, y) − havg ) (h(x, y) < havg ) (4.3) C2 je koeficient neline´arn´ıho n´ar˚ ustu smykov´e rychlosti a jeho hodnota se nastavuje na 0.002 Touto zmˇenou vznikaj´ı duny, kter´e jsou niˇzˇs´ı, a celkov´ y poˇcet dun se zvˇetˇsil. Ani po dlouh´e dobˇe simulace nevznik´a jedna osamocen´a duna, neline´arn´ı ˇclen je tedy schopen dodat nˇekter´ ym sand slab dostateˇcnou rychlost k pˇrekon´an´ı oblasti ve vˇetrn´em st´ınu za dunou. Posledn´ı u ´pravou je nahrazen´ı havg . Tuto zmˇenu zd˚ uvodn´ıme t´ım, ˇze havg dostateˇcnˇe nevypov´ıd´a o aktu´aln´ım stavu tvaru povrchu, protoˇze jeho hodnota z˚ ust´av´a po celou dobu simulace konstantn´ı. Obr´azek 4.2. V praxi se 18
toto nejv´ıce projevuje pˇri simulaci eroze povrchu, jehoˇz ˇc´ast byla na poˇc´atku simulace umˇele vytvarov´ana (napˇr. jehlan obklopen´ y rovinou). V takov´em pˇr´ıpadˇe pouˇzit´ım rovnice 4.3 nevznikaj´ı duny ale jen ter´en pln´ y drobn´ ych vlnek.
Obr´azek 4.2: Profil dvou mˇr´ıˇzek s vyobrazen´ ymi poˇcty sand slab, obˇe maj´ı stejnou hodnotu havg ale jejich tvar se v´ yraznˇe liˇs´ı.
Havg nahrad´ıme href , neboli referenˇcn´ım poˇctem sand slab a dost´av´ame v´ yslednou rovnici, kter´a byla pouˇzita v t´eto pr´aci. L0 + C1 (h(x, y) − href ) + C2 (h(x, y) − href )2 (h(x, y) ≥ href ) L0 + C1 (h(x, y) − href ) (h(x, y) < href ) (4.4) Referenˇcn´ı poˇcet (href ) je d´an rovnic´ı 4.5. Prav´ y ˇclen rovnice n´am d´av´a pr˚ umˇernou odchylku od hodnoty havg , o tuto hodnotou zmenˇsen´e, havg n´am d´ av´a v´ ysledn´ y referenˇcn´ı poˇcet sand slab. Parametry xm a ym ud´avaj´ı velikosti mˇr´ıˇzky.
L(x, y) =
href = havg −
1
xm −1,y Xm −1
2xm ym
x,y=0
|h(x, y) − havg |
(4.5)
V´ ysledn´a d´elka pˇrenosu L je zaveden´ım t´eto zmˇeny ovlivnˇena takto, oznaˇcme si L0 (xc , yc ) resp. L00 (xc , yc ) v´ ysledky rovnice 4.3 resp. 4.4 pro stejnou mˇr´ıˇzku na t´e sam´e libovolnˇe zvolen´e pozici (xc , yc ). Pro naprostou rovinu n´am rovnice 4.5 d´av´a v´ ysledek href = havg . V ostatn´ıch pˇr´ıpadech je hodnota href < havg . Z toho plyne vztah L00 (xc , yc ) ≥ L0 (xc , yc ). V´ ysledn´ y model je nyn´ı schopen reagovat na zmˇeny tvaru povrchu. Protoˇze m´ırnˇe vzrostla velikost pˇresunu L, duny cestuj´ı rychleji a jsou menˇs´ı a vytvoˇren´ı oblasti dun z poˇc´ateˇcn´ıho rovn´eho povrchu je pomalejˇs´ı. Model je nyn´ı tak´e schopen vˇernˇeji erodovat umˇele vytvarovanou ˇc´ast povrchu a na okoln´ı rovn´e ploˇse vznikaj´ı duny.
19
4.5
Pˇ resun p´ısku vlivem gravitace
Pro such´ y p´ısek se ud´av´a kritick´ yu ´hel svahu, pˇri kter´em se zaˇcne materi´al pˇresyp´avat jako 33◦ . Vzhledem k navrˇzen´ ym rozmˇer˚ um sand slab 1 , je tento u ´hel dosaˇzen, pokud je rozd´ıl dvou sousedn´ıch bunˇek mˇr´ıˇzky vˇetˇs´ı neˇz 2. Po vˇetrn´e erozi m˚ uˇze nastat situace, kdy pr´avˇe erodovan´a buˇ nka (x, y) m´ a hodnotu o 3 menˇs´ı neˇz nˇekter´e ze sousedn´ıch bunˇek. V tom pˇr´ıpadˇe je jeden sand slab ze sousedn´ıch bunˇek pˇresunut do buˇ nky (x, y) a na buˇ nku z n´ıˇz byl sand slab odebr´an je aplikov´an ten sam´ y proces. Teprve pot´e prob´ıh´a uloˇzen´ı sand slab erodovan´eho vˇetrem. Buˇ nka na jej´ıˇz pozici probˇehlo uloˇzen´ı je testov´ana, zda rozd´ıl jej´ı v´ yˇsky v˚ uˇc´ı v´ yˇsce okoln´ıch bunˇek nen´ı 3. V tom pˇr´ıpadˇe je jeden sand slab pˇresunut do n´ahodnˇe vybran´e nejniˇzˇs´ı buˇ nky a na t´eto buˇ nce pak prob´ıh´a u ´plnˇe identick´ y test. Tento typ gravitaˇcn´ı eroze se uplatˇ nuje nejv´ıce v z´avˇetˇr´ı dun a oblastech ve vˇetrn´em st´ınu. Obr´azek 4.3.
Obr´azek 4.3: Kask´adovit´ y proces sesyp´an´ı (avalanche) vˇetrem pˇrinesen´eho sand slab.
4.6
V´ıtr vanouc´ı libovoln´ ym smˇ erem
Protoˇze v´ıtr vanouc´ı pouze v kladn´em smˇeru osy x je nedostaˇcuj´ıc´ı pro u ´ˇcely simulace, je v pr´aci [2] navrˇzena rotace mˇr´ıˇzky tak aby smˇer osy x odpov´ıdal nov´emu smˇeru vˇetru. Viz. obr´azek 4.4. Tento zp˚ usob zav´ad´ı chybu pˇri diskretizaci z re´aln´ ych ˇc´ısel vznikl´ ych rotac´ı na cel´a ˇc´ısla index˚ u do mˇr´ıˇzky, coˇz nen´ı tak v´ yznamn´e jako hlavn´ı nev´ yhoda tohoto postupu, kter´a se projevuje pˇri u ´hlech rotace r˚ uzn´ ych od n´asobku 90◦ . Tehdy se nezachov´av´a celkov´ y poˇcet sand slab v syst´emu, t´ım se z´aroveˇ n mˇen´ı i havg a href , coˇz ovlivn´ı cel´ y v´ ypoˇcet. Proto byl v t´eto pr´aci pouˇzit jin´ y pˇr´ıstup.
4.6.1
Vˇ etrn´ e pole
K hlavn´ı mˇr´ıˇzce obsahuj´ıc´ı buˇ nky s poˇcty sand slab se pˇrid´av´a pomocn´a mˇr´ıˇzka, kter´a mimo jin´e obsahuje informaci, ze kter´e sousedn´ı buˇ nky vane v´ıtr do aktu´aln´ı a do kter´e buˇ nky vane v´ıtr z aktu´aln´ı buˇ nky. Tvorba 1
V´ yˇska je a/3 tedy 1/3 vzd´ alenosti nejbliˇzˇs´ıch sousedn´ıch bunˇek mˇr´ıˇzky.
20
Obr´azek 4.4: Rotace mˇr´ıˇzky umoˇzn ˇuje simulovat v´ıtr (Winter a Summer ) vanouc´ı z libovoln´eho smˇeru. Pˇrevzato z [2]. vˇetrn´eho pole nevyˇzaduje operace v plovouc´ı ˇr´adov´e ˇc´arce a je tˇreba proj´ıt cel´e pole maxim´alnˇe 3kr´at, takˇze zmˇena smˇeru vˇetru pˇri pouˇzit´ı vˇetrn´eho pole, nen´ı ani moc v´ ypoˇcetnˇe n´aroˇcn´a.
21
Kapitola 5
Implementace Z´akladn´ı datovou strukturou je dvourozmˇern´a mˇr´ıˇzka, d´ale oznaˇcovan´a jako hlavn´ı mˇr´ıˇzka, reprezentovan´a jednorozmˇern´ ym polem, d´ale oznaˇcovan´ ym jako hlavn´ı pole. Tato hlavn´ı mˇr´ıˇzka urˇcuje hodnotou sv´ ych bunˇek poˇcet sand slab na jednotliv´ ych pozic´ıch. Jej´ı grafick´a reprezentace je mˇr´ıˇzka pravideln´ ych ˇsesti´ uheln´ık˚ u v konfiguraci uk´azan´e obr´azkem 5.1. Po zaveden´ı n´asleduj´ıc´ıho znaˇcen´ı • xs - poˇcet bunˇek ve smˇeru osy x • ys - poˇcet bunˇek ve smˇeru osy y • xi - souˇradnice aktu´aln´ı buˇ nky ve smˇeru osy x • yi - souˇradnice aktu´aln´ı buˇ nky ve smˇeru osy y • size - celkov´ y poˇcet bunˇek v poli • h(xi , yi ) - hodnota buˇ nky na pozici xi , yi lze vyj´adˇrit mapovac´ı funkci z index˚ u mˇr´ıˇzky do indexu pole takto i = yi xs + xi . Hraniˇcn´ı podm´ınky jsou definov´any tak aby hraniˇcn´ı buˇ nky sousedili s hraniˇcn´ımi buˇ nkami na opaˇcn´em konci mˇr´ıˇzky, tato vlastnost je nezbytn´a pro spr´avn´e fungov´an´ı modelu, obr´azek 5.2. Kromˇe hlavn´ı mˇr´ıˇzky je zavedena pomocn´a mˇr´ıˇzka, d´ale oznaˇcovan´a jako mˇr´ıˇzka pˇr´ıznak˚ u, stejn´ ych rozmˇer˚ u a tedy i s identick´ ym indexov´an´ım. Ta obsahuje pomocn´e pˇr´ıznaky o vˇsech buˇ nk´ach hlavn´ı mˇr´ıˇzky. Typy pˇr´ıznak˚ u jsou vypsan´e v n´asleduj´ıc´ım seznamu. • Pro hraniˇcn´ı buˇ nky obsahuje pˇr´ıznaky, na kter´e hranici mˇr´ıˇzky se buˇ nka nach´az´ı. • Pˇr´ıznak zda je buˇ nka ve vˇetrn´em st´ınu. • Pˇr´ıznaky urˇcuj´ıc´ı vˇetrn´e pole. 22
Program se skl´ad´a ze 4 logick´ ych ˇc´ast´ı. Tyto ˇc´asti sd´ılej´ı pomoc´ı ukazatel˚ u hlavn´ı mˇr´ıˇzku a mˇr´ıˇzku pˇr´ıznak˚ u, jinak jsou oddˇelen´e a mohou spolu komunikovat jen pomoc´ı k tomu urˇcen´ ych funkc´ı. V n´asleduj´ıc´ıch podkapitol´ach budou pops´any d˚ uleˇzit´e vlastnosti tˇechto ˇc´asti programu.
Obr´azek 5.1: Pouˇz´ıt´a indexace na mˇr´ıˇzce ˇsesti´ uheln´ık˚ u
5.1
Model
Zde prob´ıh´a vlastn´ı simulace, ostatn´ı ˇc´asti programu do simulace niˇc´ım nezasahuj´ı a pro svou pr´aci jen vyuˇz´ıvaj´ı data vytvoˇren´a modelem, kter´a jsou uloˇzena v hlavn´ı mˇr´ıˇzce.
5.1.1
Vytvoˇ ren´ı vˇ etrn´ eho pole
Inicializace vˇetrn´eho pole je prvn´ı vˇec, kterou model mus´ı prov´est po sv´e vlastn´ı inicializaci. Bez informace, kudy vane v´ıtr mˇr´ıˇzkou, simulace nem˚ uˇze prob´ıhat. Na mˇr´ıˇzce pravideln´ ych ˇsesti´ uheln´ık˚ u je moˇzn´e pˇresouvat se z jedn´e buˇ nky do buˇ nky sousedn´ı pouze pod u ´hlem, kter´ y je n´asobek 60◦ . Proto algoritmus generuj´ıc´ı vˇetrn´e pole mus´ı pracovat s chybou vzniklou touto
23
Obr´azek 5.2: Hraniˇcn´ı podm´ınky pro mˇr´ıˇzku 4x4
diskretizac´ı v pˇredchoz´ıch kroc´ıch pro urˇcen´ı smˇeru vˇetru v n´asleduj´ıc´ım kroku. Na obr´azku 5.3 je pˇr´ıklad pr´ace algoritmu, a tabulka 5.1 ukazuje samotn´ y algoritmus.
Obr´azek 5.3: Pˇr´ıklad algoritmu pro generov´an´ı vˇetrn´eho pole pro v´ıtr vanouc´ı pod u ´hlem 23◦ . (a) chyby vznikl´e diskretizac´ı (b) v´ ystup algoritmu, ˇc´ıslo na ˇsipkou ukazuje chybu zp˚ usobenou pˇresunem dan´ ym smˇerem, ˇc´ıslo na zaˇc´atku ˇsipky je aktu´aln´ı hodnota chyby
5.1.2
Vˇ etrn´ a eroze a ukl´ ad´ an´ı
N´ ahodnˇe je zvolena pozice buˇ nky s = (xi , yi ), kter´a nem´a nastaven pˇr´ıznak vˇetrn´eho st´ınu ani nereprezentuje skalnat´e podloˇz´ı, tedy h(xi , yi ) > 0. Hodnota h(xi , yi ) je dosazena do rovnice 4.4, t´ım z´ısk´ame vzd´alenost pˇresunu L. Ten ud´av´a poˇcet bunˇek, o kter´e se mus´ıme posunout smˇerem po vˇetru z buˇ nky s do c´ılov´e buˇ nky d = (xj , yj ). Teprve pot´e se provede eroze buˇ nky s dekrementac´ı jej´ı hodnoty h0 (xi , yi ) = h(xi , yi ) − 1. Pokud c´ılov´a buˇ nka 24
error = 0; axis = (max_angle + min_angle)/2; error_max = wind_angle- max_angle; error_min = wind_angle - min_angle; for every i do: [i].wind = 0; while ( [i].wind==0 ) do: if (error > axis) [i].wind = flag_max; error = error + error_max; i = [i].neigbour_max; else [i].wind = flag_mix; error = error + error_min; i = [i].neigbour_min;
Tabulka 5.1: Algoritmus generuj´ıc´ı vˇetrn´e pole. i je index do hlavn´ıho pole, yu ´hel vˇetru, max angle a min angle jsou maxim´aln´ı a wind angle je zadan´ minim´aln´ı hodnota u ´hl˚ u, kter´ ymi se diskretizuje hodnota wind angle a error je chyba vznikl´a pˇredchoz´ımi kroky. leˇz´ı ve vˇetrn´em st´ınu, pak je provedeno uloˇzen´ı h0 (xj , yj ) = h(xj , yj ) + 1. Pokud leˇz´ı mimo vˇetrn´ y st´ın tak jsou urˇceny pravdˇepodobnosti uloˇzen´ı1 a porovn´any s vygenerovan´ ym n´ahodn´ ym ˇc´ıslem z intervalu h0.0, 1.0i. Na p´ıseˇcn´em povrchu pak nast´av´ a uloˇzen´ı pokud n´ahodn´e ˇc´ıslo leˇzelo v intervalu h0.0, 0.6i a pro skalnat´ y povrch pokud bylo v intervalu h0.0, 0.4i. V pˇr´ıpadˇe, ˇze uloˇzen´ı nenastalo, je buˇ nka d ponech´ana beze zmˇeny a vyj´adˇr´ı se nov´a vzd´alenost L, dosazen´ım hodnoty h(xj , yj ) do rovnice 4.4, toto reprezentuje skok sand slab po povrchu. Pˇr´ıpadnˇe dalˇs´ı pˇresuny se opakuj´ı tak dlouho, dokud nedojde k uloˇzen´ı.
5.1.3
Eroze vlivem gravitace
Pro erodovanou buˇ nku a pro buˇ nku, do kter´e probˇehlo uloˇzen´ı, se prov´ad´ı test, zda nebyl poruˇsen klidov´ y u ´hel svahu, tedy zda se poˇcet sand slab mezi aktu´aln´ı a jednou pˇr´ıpadnˇe v´ıce sousedn´ımi buˇ nkami neliˇs´ı v´ıce jak o 2. Pokud je klidov´ yu ´hel poruˇsen, vybere se n´ahodnˇe jedna sousedn´ı buˇ nka, kter´a tuto podm´ınku nesplˇ nuje a mezi n´ı a aktu´aln´ı buˇ nkou nastane pˇresun jednoho sand slab. Tato sousedn´ı buˇ nka se pot´e stane aktu´aln´ı a proces se zopakuje. Takto se pokraˇcuje, dokud nen´ı zjiˇstˇeno, ˇze aktu´aln´ı a sousedn´ı buˇ nky neporuˇsuj´ı klidov´ yu ´hel. Pˇr´ıklad je na obr´azku 5.4 1
Ps = 0.6 pro h(xj , yj ) > 0 a Pns = 0.4 pro h(xj , yj ) = 0
25
Obr´azek 5.4: Pˇr´ıklad eroze vlivem gravitace. Uvedeny jsou hodnoty jednotliv´ ych bunˇek a smˇer pˇresunu sand slab.
5.1.4
Aktualizace vˇ etrn´ eho st´ınu
Nejdˇr´ıve je tˇreba zd˚ uraznit, ˇze vˇetrn´ y st´ın je br´an jako oblast zabran´a pod ◦ u ´hlem 15 z vyˇsˇs´ıho vrcholu, coˇz odpov´ıd´a rozd´ılu v´ yˇsek dvou sousedn´ıch bunˇek o 1, obr´azek 5.5. Toho vyuˇz´ıv´a d´ale popsan´ y algoritmus.
ˇ Obr´azek 5.5: Pˇr´ıklady vˇetrn´eho st´ınu. Cernˇ e oznaˇcen´e buˇ nky jsou ve vˇetrn´em st´ınu vrˇzen´em nˇekterou z bunˇek nach´azej´ıc´ıch se proti vˇetru.
Vˇetrn´ y st´ın se aktualizuje po kaˇzd´e zmˇenˇe v hlavn´ı mˇr´ıˇzce (tzn. po kaˇzd´em odeˇcten´ı nebo pˇriˇcten´ı jednoho sand slab). Jedinˇe tak se d´a udrˇzovat informace o vˇetrn´em st´ınu v konzistentn´ım stavu aniˇz by bylo nutno proch´azet celou hlavn´ı mˇr´ıˇzku. Aktualizace provede kontrolu a pˇr´ıpadnou zmˇenu pˇr´ıznaku vˇetrn´eho st´ınu, kdyˇz se buˇ nka jej´ıˇz hodnota byla sn´ıˇzena dostala do st´ınu nebo pokud byla jej´ı hodnota zv´ yˇsena a dostala se ze st´ınu. D´ale se kontroluje, jak se zmˇenil vˇetrn´ y st´ın touto buˇ nkou vrˇzen´ y. Tabulka 5.2 ukazuje popsan´ y algoritmus. Kde i a j jsou indexy do hlavn´ıho pole, wshadow distance je poˇcet bunˇek, kter´ y byl schov´an ve vˇetrn´em st´ınu za aktu´aln´ı buˇ nkou pˇred t´ım, neˇz byla jej´ı hodnota zmˇenˇena a shadow height ud´av´a, o kolik sand slab by musela b´ yt pr´avˇe testovan´a buˇ nka 2 vyˇsˇs´ı, aby nebyla ve vˇetrn´em st´ınu. Pokud je tato 2
T´ım je myˇslena buˇ nka, na kterou v algoritmu pr´ avˇe ukazuje index i, nikoliv tedy
26
j = [i].updwind_index; while ( [j].wind_shadow_flag == true ) do: j = [j].upwind_index; shadow_height = [j].height - [i].height - distance(i,j) - 1; if (shadow_height > 0) [i].wind_shadow_flag = true; else [i].wind_shadow_flag = false; shadow_height = 0; wshadow_distance = number of cells covered by windshadow casted from i; wshadow_distance = wshadow_distance + 1; while (wshadow_distance > 0) do: wshadow_distance = wshadow_distance - 1; shadow_height = shadow_height + [i].height; shadow_height = shadow_height - [[i].downwind_index].height; if (shadow_height > 0) [[i].downwind_index].wind_shadow_flag = true; else [[i].downwind_index].wind_shadow_flag = false; shadow_height = shadow_height - 1; if (shadow_height < 0) shadowHeight = 0; i = [i].downwind_index; Tabulka 5.2: Algoritmus pro aktualizaci vˇetrn´eho st´ınu promˇenn´a rovna nule nebo m´a z´apornou hodnotu, pak je pr´avˇe testovan´a buˇ nka mimo vˇetrn´ y st´ın.
5.1.5
Aktualizace hodnoty href
Stˇejnˇe jako v pˇr´ıpadˇe aktualizace vˇetrn´eho st´ınu viz. 5.1.4 se hodnota href d´ a aktualizovat velmi jednoduch´ ym zp˚ usobem, pokud se tak dˇeje po kaˇzd´e zmˇenˇe v hlavn´ı mˇr´ıˇzce. Pr˚ umˇern´ y poˇcet sand slab havg je po celou dobu simulace konstantn´ı, jako d˚ ukaz staˇc´ı, ˇze sand slab je konstantn´ı a velikost mˇr´ıˇzky tak´e. Mˇejme promˇennou Sum s takovouto hodnotou Sum =
xs −1,y Xs −1
|h(xi , yi ) − havg |
x,y=0
buˇ nka jej´ıˇz hodnota byla zmˇenˇena.
27
Po kaˇzd´e zmˇenˇe, kter´a o 1 sniˇzuje hodnotu aktu´aln´ı buˇ nky plat´ı Sum − 1 h(xi , yi ) > havg Sum = Sum + 1 h(xi , yi ) ≤ havg Po kaˇzd´e zmˇenˇe, kter´a o 1 zvyˇsuje hodnotu aktu´aln´ı buˇ nky, plat´ı Sum − 1 h(xi , yi ) < havg Sum = Sum + 1 h(xi , yi ) ≥ havg Hodnota h(xi , yi ) mus´ı b´ yt br´ana pˇred samotnou inkrementac´ı resp. dekrementac´ı. Po tomto u ´konu staˇc´ı dosadit novou hodnotu Sum do rovnice 4.5. Takto se z´ısk´a nov´a hodnota href aniˇz by bylo tˇreba proch´azet cel´e pole.
5.2
Visualizace
Pro trojrozmˇern´e zobrazov´an´ı je na mˇr´ıˇzce zavedena lok´aln´ı kart´ezsk´a soustava souˇradnic, orientovan´a CCW. Kaˇzd´e buˇ nce hlavn´ı mˇr´ıˇzky na pozici (xi , yi ) a s hodnotou h(xi , yi ) pak odpov´ıd´a trojrozmˇern´ y bod (x, y, z). Pˇrevod mezi souˇradnicemi buˇ nky a bodu je proveden n´asleduj´ıc´ım zp˚ usobem. 2xi t yi = 2k • x= t(2xi − 1) yi = 2k + 1 • y = ah(xi , yi ) • z = −1.5syi Z toho vypl´ yv´a, ˇze bod (0.0, y, 0.0) odpov´ıd´a stˇredu buˇ nky na pozici (0, 0). Parametry a, s, t jsou rozmˇery geometrick´e reprezentace sand slab, obr´azek 5.7. Visualizace mˇr´ıˇzky ˇsesti´ uheln´ık˚ u byla realizov´ana tak, ˇze jsou rohy renderovac´ıch troj´ uheln´ık˚ u um´ıstˇeny ve stˇredech ˇsesti´ uheln´ık˚ u, viz. obr´azek 5.6. T´ım vznikaj´ı na stran´ach mˇr´ıˇzky zubat´e okraje, kter´e jsou zahlazeny pomocnou ˇradou rovnoramenn´ ych troj´ uheln´ık˚ u, ty jsou na obr´azku tak´e vyznaˇceny.
5.2.1
V´ ypoˇ cet norm´ alov´ ych vektor˚ u vrcholu
Norm´alov´ y vektor vrcholu vertex, kter´ y je z´akladem osvˇetlovac´ıho modelu, byl vypoˇc´ıt´an jako pr˚ umˇer norm´al 6 troj´ uheln´ık˚ u, kter´e vrchol obklopuj´ı. Po u ´prav´ach, kter´e zahrnuj´ı v´ ypoˇcet norm´al a jejich zpr˚ umˇerov´an´ı, dost´av´ame vztah 5.1, kter´ y vrcholu odpov´ıdaj´ıc´ımu buˇ nce na pozici (xi , yi ) pˇriˇrad´ı v´ ysledn´ y vektor ~n = (nx , ny , nz ), kter´ y je tˇreba d´ale znormalizovat.
28
Obr´azek 5.6: Zobrazov´an´ı mˇr´ıˇzky ˇsesti´ uheln´ık˚ u
nx = 3as(dhw − dhe ) + (3as/2)(dhsw − dhse − dhne + dhnw ) ny = 18st nz = 3at(dhsw + dhse − dhne − dhnw )
(5.1)
Parametry √ rovnice a, t, s jsou vysvˇetleny obr´azkem 5.7 a jsou na sobˇe z´avisl´e t = s 3/2 a a = 2t/3. Zbyl´e parametry jsou vysvˇetleny n´asleduj´ıc´ım seznamem. • dhw = h(xi − 1, yi ) − h(xi , yi ) • dhsw = h(xi − 1, yi − 1) − h(xi , yi ) • dhse = h(xi + 1, yi − 1) − h(xi , yi ) • dhe = h(xi + 1, yi ) − h(xi , yi ) • dhne = h(xi + 1, yi + 1) − h(xi , yi ) • dhnw = h(xi − 1, yi + 1) − h(xi , yi )
5.2.2
Dynamick´ e st´ıny
Osvˇetlovac´ı model vypoˇc´ıtan´ y pomoc´ı norm´al vrchol˚ u nen´ı s´am o sobˇe dostateˇcn´ y, protoˇze neumoˇzn ˇuje efekt vrˇzen´eho st´ınu duny na dunu. Byl tedy pˇrid´an algoritmus 5.3, kter´ y podle dvou u ´hl˚ u urˇcuj´ıc´ıch smˇer ke svˇeteln´emu zdroji v nekoneˇcnu vrh´a st´ınov´e paprsky z jednotliv´ ych vrchol˚ u. Data takto z´ısk´ana ale nemaj´ı dostateˇcnou vypov´ıdac´ı hodnotu o struktuˇre ter´enu, protoˇze informace st´ın, polost´ın, ˇz´adn´ y st´ın je pˇr´ıliˇs hrub´a. V´ ysledn´ y osvˇetlovac´ı algoritmus proto kombinuje oba pˇr´ıstupy. Pokud je vrchol mimo st´ın, je jeho norm´alov´ y vektor ponech´an beze zmˇeny, pokud je vrchol ve st´ınu, jeho norm´ala je ˇc´asteˇcnˇe odklonˇena od p˚ uvodn´ıho smˇeru tak, aby byla z´aroveˇ n v´ıce odklonˇena od vektoru ukazuj´ıc´ıho ke zdroji svˇetla. Tak je zaruˇceno, ˇze i oblasti ve st´ınu si st´ale zachov´avaj´ı sv´e obrysy. 29
Obr´azek 5.7: Rozmˇery kv´adru s podstavou pravideln´eho ˇsesti´ uheln´ıku, jedn´a se o geometrickou reprezentaci sand slab. for every i do: [i].shadow = 0.0; for every i do: shadow_ray = cast_shadow_ray([i].height); i = [shadow_ray].next_index; while(shadow_ray is not intersecting with the ground) do: [i].shadow = 1.0; i = [shadow_ray].next_index; for every i do: [i].shadow = sum(weight1*[i].shadow + weight2*[[i].all_neigbours].shadow); [i].shadow = [i].shadow / (neighbours_count + 1); Tabulka 5.3: Algoritmus v´ ypoˇctu dynamick´eho st´ınu Odkl´ anˇ en´ı norm´ alov´ eho vektoru Pˇri v´ ypoˇctu osvˇetlovac´ıho modelu z´aleˇz´ı pouze na u ´hlu mezi norm´alov´ ym vektorem a vektorem ukazuj´ıc´ım ke zdroji svˇetla. St´avaj´ıc´ı hodnota tohoto u ´hlu se d´a z´ıskat snadno pomoc´ı skal´arn´ıho souˇcinu norm´alov´eho vektoru ~n = (nx , ny , nz ) a vektoru smˇeˇruj´ıc´ımu ke svˇeteln´emu zdroji v nekoneˇcnu ~l = (lx , ly , lz ). cos ϕ = ~l · ~n Hodnota u ´hlu ϕ je pak zvˇetˇsena u ´mˇernˇe hodnotˇe z´ıskan´e algoritmem 5.3 pro danou buˇ nku (xi , yi ). Smˇer nov´eho norm´alov´eho vektoru ~n0 lze urˇcit mnoha zp˚ usoby, protoˇze jde jen o to, aby sv´ıral s ~l u ´hel ϕ0 , a takov´ ych vektor˚ u
30
je nekoneˇcnˇe mnoho. V t´eto praci se vych´azelo z tˇechto pˇredpoklad˚ u. n0x = tlx
n0z = tlz
Kde t je parametr. T´ım urˇc´ıme, ˇze projekce nov´eho vektoru do roviny (x, 0.0, z) bude leˇzet na stejn´e pˇr´ımce jako projekce vektoru ~l q 2 02 2 02 02 (n02 (5.2) x + ny + nz ) = 1 =⇒ (tlx ) + ny + (tlz ) = 1 Tato rovnice vych´az´ı z jednotkov´e velikosti obou vektor˚ u. t(lx )2 + n0y ly + t(lz )2 = cos ϕ0 =⇒ t =
cos ϕ0 − n0y ly (lx )2 + (lz )2
(5.3)
Dosazen´ım hodnoty t z rovnice 5.4 do rovnice 5.2 dost´av´ame kvadratickou rovnici a jej´ım ˇreˇsen´ım jsou dvˇe moˇzn´e hodnoty n0y . q cos ϕ0 ly ± ly2 + cos2 ϕ0 + 1 u0y = (5.4) ly2 + 1 Dosazen´ım jedn´e t´eto hodnoty do rovnice 5.4 z´ısk´ame hodnotu parametru ysledn´ y t, jeho dosazen´ım pak dost´av´ame hodnoty n0x a n0z a z´ısk´av´ame v´ odklonˇen´ y vektor ~n0 = (n0x , n0y , n0z ).
5.3
LOD
Protoˇze je popis t´eto ˇc´asti programu pomˇernˇe obs´ahl´ y, je mu vˇenov´ana samostatn´a kapitola, i kdyˇz by bylo logick´e zaˇradit jej do kapitoly visualizace. Z´akladem je zjednoduˇsen´ y algoritmus poch´azej´ıc´ıch z pr´ace [8]. Nejdˇr´ıve si nadefinujeme d´ale pouˇz´ıvan´e term´ıny. Rozliˇsen´ım, pokud nebude uvedeno jinak, bude v t´eto kapitole oznaˇcov´an poˇcet troj´ uheln´ık˚ u v urˇcit´e oblasti. Zv´yˇsit rozliˇsen´ı tedy znamen´ a, nahradit p˚ uvodn´ı jeden velk´ y troj´ uheln´ık v´ıce menˇs´ımi troj´ uheln´ıky, naproti tomu sn´ıˇzit rozliˇsen´ı logicky znamen´a nahradit v´ıce mal´ ych troj´ uheln´ık˚ u jedn´ım velk´ ym. Abychom mohli oba tyto procesy popsat pokud moˇzno co nejjednoduˇsˇs´ım algoritmem, pouˇzijeme modifikaci techniky obvykle pouˇz´ıvan´e v oblasti renderov´an´ı v´ yˇskov´ ych map. Touto technikou je p˚ ulen´ı nejdelˇs´ı strany troj´ uheln´ıka (the longest edge bisection). Modifikace spoˇc´ıv´a ve zmˇenˇe n´azvu na p˚ ulen´ı strany troj´ uheln´ıka a s t´ım i d˚ usledky, kter´e toto pˇrin´aˇs´ı, obr´azek 5.8. D˚ uvod t´eto modifikace je podrobnˇeji vysvˇetlen v 5.3.1, ale jednoduch´e vysvˇetlen´ı zn´ı, rovnostrann´ y troj´ uheln´ık nem´a nejdelˇs´ı stranu. Bisekˇcn´ım bodem budeme rozumˇet bod na stranˇe troj´ uheln´ıku, ve kter´em se strana p˚ ul´ı. δ segment je rozd´ıl vzd´alenosti mezi spoleˇcn´ ym bodem troj´ uheln´ıkov´eho p´aru a bisekˇcn´ım bodem troj´ uheln´ıku, kter´ y vznikl spojen´ım tohoto p´aru. D´ıra (crack ) v mˇr´ıˇzce je jev, kter´ y vznik´a 31
na rozhran´ı dvou oblast´ı z nichˇz jedn´a m´a vyˇsˇs´ı rozliˇsen´ı neˇz druh´a, obr´azek 5.13. Pokud je vertex aktivn´ı, pak bude vykreslen. Metoda p˚ ulen´ı strany troj´ uheln´ıku m´a jako vstupn´ı parametr z´akladn´ı troj´ uheln´ık, kter´ y se d´ale dˇel´ı. Je tedy tˇreba hlavn´ı mˇr´ıˇzku, kter´a je ˇctvercov´a nebo obd´eln´ıkov´a, rozdˇelit na tyto z´akladn´ı d´ale uˇz nezjednoduˇsiteln´e troj´ uheln´ıky spojen´e vrcholem viz obr´azek 5.10 a ty jsou d´ale zpracov´av´any.
Obr´azek 5.8: Metoda p˚ ulen´ı strany rovnostrann´eho troj´ uheln´ıku
Obr´azek 5.9: Geometrick´a reprezentace delta segmentu. δB = 4, δD = 2.5, δF = 1.5, δH = 0. Pˇrevzato z [8].
32
Obr´azek 5.10: (a) Spojen´ı 4 z´akladn´ıch troj´ uheln´ık˚ u pˇres spoleˇcn´ y vrchol. (b) Pˇr´ıklad metody p˚ ulen´ı stran na takov´emto u ´tvaru.
5.3.1
V´ yhody a nev´ yhody pouˇ zit´ eho pˇ r´ıstupu
Algoritmus umoˇzn ˇuje, d´ıky metodˇe p˚ ulen´ı strany, lok´alnˇe zv´ yˇsit rozliˇsen´ı aniˇz by t´ım bylo v´ yznamnˇe ovlivnˇeno okol´ı, obr´azek 5.10b. Po vˇsech optimalizac´ıch uveden´ ych d´ale je natolik v´ ypoˇcetnˇe nen´aroˇcn´ y, ˇze se zobrazov´an´ı skuteˇcnˇe zrychl´ı. Umoˇzn ˇuje vygenerov´an´ı jednoho triangle strip pro celou mˇr´ıˇzku. Umoˇzn ˇuje elegantnˇe zamezit vzniku dˇer v mˇr´ıˇzce, zv´ yˇsen´ım rozliˇsen´ı na styku dvou oblast´ı s r˚ uzn´ ym stupnˇem rozliˇsen´ı. Nev´ yhody jsou naznaˇceny na obr´azku 5.11. Poˇzit´a metoda pro generov´an´ı LOD je nejefektivnˇejˇs´ı na mˇr´ıˇzce (2n +1)x(2n +1), protoˇze ale model vyˇzaduje rozmˇer mˇr´ıˇzky sud´ y 3 ,vznik´a jedna ˇrada troj´ uheln´ık˚ u mimo oblast zpracovanou LOD. Dalˇs´ı nev´ yhoda je tak´e zˇrejm´a z 5.11c, d´ıky obd´eln´ıkov´emu tvaru bude vˇzdy na jedn´e stranˇe ˇc´ast bod˚ u pˇresahovat oblast zpracov´avanou LOD. Oba tyto probl´emy se daj´ı pomˇernˇe snadno vyˇreˇsit napojen´ım pomocn´eho pruhu troj´ uheln´ık˚ u na aktivn´ı body na hranici oblasti zpracovan´e LOD. Posledn´ı probl´em je zp˚ usoben t´ım, ˇze rozdˇelen´ım rovnostrann´eho troj´ uheln´ıku na dva troj´ uheln´ıky p˚ ulen´ım jeho strany jiˇz nebudou takto vznikl´e troj´ uheln´ıky rovnostrann´e, proto ani pˇri nejvyˇsˇs´ım rozliˇsen´ı nedost´av´ame ten sam´ y obr´azek jako pˇri vypnut´em LOD. Tento probl´em se odstranit nepodaˇrilo. 3
Kv˚ uli napojen´ı protilehl´ ych hranic mˇr´ıˇzky.
33
Obr´azek 5.11: Mˇr´ıˇzka 5x6. (a) Zobrazena rovnostran´ ymi troj´ uheln´ıky. (b) Nejvyˇsˇs´ım rozliˇsen´ım zde navrˇzen´eho LOD. (c) Pˇrekryv obou.
5.3.2
Struˇ cn´ y popis neoptimalizovan´ eho algoritmu
Jedin´ ym vstupn´ım parametrem algoritmu je povolen´a chyba τp urˇcen´a v pixelech. Jej´ı hodnota ud´av´ a, jak´e maxim´aln´ı velikosti m˚ uˇze nab´ yvat projekce δ segmentu na obrazovku. Prvn´ım zjednoduˇsen´ım je, ˇze δ segment pˇred projekc´ı um´ıst´ıme tak, aby se jedn´ım koncov´ ym bodem nach´azel na ose z. Algoritmus testuje troj´ uheln´ıkov´e p´ary, kter´e je moˇzn´e vytvoˇrit na dan´e mˇr´ıˇzce metodou p˚ ulen´ı strany, a pracuje smˇerem odshora dol˚ u, tedy od nejvˇetˇs´ıho z´akladn´ıho troj´ uheln´ıku k tˇem nejmenˇs´ım. Pokud projekce δ segmentu aktu´aln´ıho troj´ uheln´ıkov´eho p´aru nepˇrekraˇcuje hodnotu τp , pak je pro tento troj´ uheln´ıkov´ y p´ar sn´ıˇzeno rozliˇsen´ı a algoritmus touto vˇetv´ı hloubˇeji nepokraˇcuje. V opaˇcn´em pˇr´ıpadˇe je troj´ uheln´ıkov´ y p´ar ponech´an neslouˇcen´ y a oba jeho troj´ uheln´ıky jsou opˇet dˇeleny na troj´ uheln´ıkov´e p´ary, pro kter´e prob´ıh´a ten sam´ y test s projekc´ı δ segmentu. Algoritmus v t´eto f´azi m´a hlavn´ı nev´ yhodu v tom, ˇze generuje d´ıry v zobrazovan´em povrchu, protoˇze netestuje, zda spolu nesoused´ı oblasti s r˚ uzn´ ym rozliˇsen´ım.
5.3.3
Zaveden´ı prahov´ e vzd´ alenosti
Je zˇrejm´e, ˇze se v pˇr´ıpadˇe projekce δ segmentu jedn´a o n´aroˇcnou operaci,kter´a vyˇzaduje jednak urˇcen´ı vzd´alenosti mezi kamerou a aktu´aln´ım bodem a pot´e jeˇstˇe prob´ıh´a samotn´a projekce. Protoˇze jsme schopni urˇcit, jak daleko mus´ı b´ yt pˇri dan´ ych hodnot´ach τp a δ segmentu kamera od bisekˇcn´ıho bodu, aby se projekce δ segmentu rovnala τp , m˚ uˇzeme operaci samotn´e projekce vynechat. Pˇri pˇredzpracov´an´ı nyn´ı m´ısto δ segment˚ u urˇc´ıme pˇr´ımo prahovou vzd´alenost d, pˇri kter´e se oba parametry rovnaj´ı. Obr´ azek 5.12. Nejdˇr´ıve urˇc´ıme dp , tedy vzd´alenost kamery od projekˇcn´ı plochy v pixelech, kde pres je rozliˇsen´ı na ose y v pixelech. pres dp = tan(f ov/2)
34
A z podobnosti troj´ uheln´ık˚ u dost´av´ame vzorec pro prahovou vzd´alenost. d=
dp δ τp
Obr´azek 5.12: Prahov´a vzd´ alenost d, τp povolen´a chyba v pixelech, dp vzd´alenost kamery od projekˇcn´ı plochy p, δAB hodnota δ segmentu pro body A a B, f ov/2 je poloviˇcn´ı hodnota u ´hlu field of view. Geometrick´a reprezentace prahov´e vzd´alenosti je koule se stˇredem v bisekˇcn´ım bodˇe. Jakmile se kamera nach´az´ı uvnitˇr t´eto koule, chyba pˇrekroˇcila zadanou mez a troj´ uheln´ık je tˇreba rozdˇelit na troj´ uheln´ıkov´ y p´ar. Kamera nach´azej´ıc´ı se vnˇe t´eto koule znamen´a, ˇze zadan´a mez nen´ı pˇrekroˇcena a troj´ uheln´ık nen´ı tˇreba dˇelit. Pro to, aby byl bisekˇcn´ı bod oznaˇcen jako aktivn´ı 4 , je tˇreba, aby byla n´asleduj´ıc´ı podm´ınka splnˇena. q (xp − xc )2 + (yp − yc )2 + (zp − zc )2 < d (xc , yc , zc ) je pozice kamery, (xp , yp , zp ) je pozice bisekˇcn´ıho bodu a d je prahov´a vzd´alenost. Vzorec jeˇstˇe zjednoduˇs´ıme odstranˇen´ım odmocniny a dost´av´ame rovnici, kter´a byla pouˇzita v algoritmu. (xp − xc )2 + (yp − yc )2 + (zp − zc )2 < d2 4
T´ım je aktu´ aln´ı troj´ uheln´ık rozdˇelen na troj´ uheln´ıkov´ y p´ ar
35
(5.5)
Pro sn´ıˇzen´ı v´ ypoˇcetn´ı n´aroˇcnosti algoritmu jsou zavedeny dva axis aligned bounding box. Prvn´ı tato krychle m´a stranu velikosti prahov´e vzd´alenosti d, coˇz znamen´a, ˇze koule s polomˇerem d je do n´ı veps´ana. Pokud plat´ı tato podm´ınka |(xp − xc )| > d/2
nebo |yp − yc | > d/2
nebo |zp − zc )| > d/2
pak se kamera nach´az´ı mimo prahovou vzd´alenost, troj´ uheln´ık nen´ı tˇreba d´ale dˇelit a rovnici √ 5.5 uˇz nemus´ıme poˇc´ıtat. Druh´a krychle m´a stranu velikosti a = 2d/ 3 a koule j´ı je ops´ana. Proto jakmile je splnˇena tato podm´ınka |(xp − xc )| ≤ a/2
and
|yp − yc | ≤ a/2
and
|zp − zc )| ≤ a/2
kamera se nach´az´ı uvnitˇr koule, rovnici 5.5 opˇet nemus´ıme poˇc´ıtat a troj´ uheln´ık je tˇreba rozdˇelit. Rovnice 5.5 se tedy poˇc´ıt´a jen pokud se kamera nal´ez´a v prostoru mezi obˇema axis aligned bounding box.
5.3.4
Obalov´ an´ı prahov´ ych vzd´ alenost´ı
Doposud byl algoritmus jen optimalizov´an, ale st´ale generuje oblasti o r˚ uzn´ ych rozliˇsen´ıch, a t´ım vznikaj´ı d´ıry v zobrazovan´em ter´enu, obr´azek 5.13a. Vertex nach´azej´ıc´ı se na tomto rozhran´ı naz´ yv´ame T-junction a je zdrojem dˇer. Zabr´anit vzniku T-junctions a t´ım i dˇer lze pomoc´ı dodrˇzov´an´ı jednoduch´eho pravidla. Pokud je vertex aktivn´ı, mus´ı b´ yt vˇsichni jeho pˇredch˚ udci aktivn´ı, obr´azek 5.13b. Protoˇze cestovat vzh˚ uru grafem za u ´ˇcelem aktivace vˇsech pˇredch˚ udc˚ u pokaˇzd´e, kdyˇz je nalezen aktivn´ı vertex, by bylo velmi n´aroˇcn´e a neefektivn´ı, pozmˇen´ıme trochu n´aˇs pˇr´ıstup. Urˇc´ıme prahov´e vzd´alenosti pomoc´ı δ segmentu jen u list˚ u grafu. Jakmile uzel nen´ı listem, pak jeho prahovou vzd´alenost urˇc´ıme tak, aby obalovala prahov´e vzd´alenosti vˇsech jeho potomk˚ u. T´ım je zaruˇceno, ˇze pokud je vzd´alenost kamery od bodu menˇs´ı neˇz jeho prahov´a vzd´alenost, pak je z´aroveˇ n vzd´alenost kamery od vˇsech pˇredk˚ u bodu menˇs´ı neˇz jejich prahov´e vzd´alenosti a tyto jsou tedy tak´e aktivn´ı.
5.3.5
Generov´ an´ı obecn´ eho triangle strip
Triangle strip je z hlediska zad´av´an´ı bod˚ u mnohem hospod´arnˇejˇs´ı, neˇz zad´av´an´ı bod˚ u pro jednotliv´e troj´ uheln´ıky. Toto se samozˇrejmˇe projevuje i na v´ ykonu zobrazov´an´ı. Na pravideln´e mˇr´ıˇzce se triangle strip utvoˇr´ı snadno, je zde pˇredem zn´am´a velikost, tvar troj´ uheln´ıku a jeho pozice v˚ uˇci ostatn´ım a tyto vlastnosti se pr˚ ubˇehem ˇcasu nemˇen´ı. I v pˇr´ıpadˇe, kdy se v´ yˇsky na 2D mˇr´ıˇzce dynamicky mˇen´ı, ˇc´ımˇz se z´aroveˇ n v ˇcase mˇen´ı jedna ze souˇradnic bod˚ u troj´ uheln´ık˚ u, je st´ale nemˇenn´a ortogon´aln´ı projekce troj´ uheln´ık˚ u do plochy (x, 0, z), coˇz je st´ale postaˇcuj´ıc´ı informace. Pˇri pouˇzit´ı LOD je pˇredem 36
zn´amo jen to, ˇze ortogon´aln´ı projekce vˇsech troj´ uheln´ık˚ u kter´e mohou vzniknout, bude z urˇcit´e omezen´e mnoˇziny (napˇr. obr´azek5.13b), ale nen´ı pˇredem jasn´e, kter´ y s kter´ ym nakonec budou soused´e. V [8] je navrˇzen algoritmus, kter´ y pomoc´ı vkl´ad´an´ı zdegenerovan´ ych troj´ uheln´ık˚ u vytvoˇr´ı obecn´ y triangle strip pro celou oblast zpracovanou LOD. V algoritmu 5.4 se vyskytuj´ı tyto promˇenn´e: V je pole bod˚ u tvoˇr´ıc´ıch v´ ysledn´ y triangle strip, v n a v (n-1) jsou posledn´ı a pˇredposledn´ı bod pole V, n je v´ yˇska bin´arn´ıho stromu vznikl´eho dˇelen´ım troj´ uheln´ık˚ u, i x jsou indexy do mˇr´ıˇzky kde x odpov´ıd´a bod˚ um vyznaˇcen´ ym na obr´azku 5.14, parity je hodnota 0 nebo 1 podle u ´rovnˇe, na kter´e se nal´ez´ame v bin´arn´ım stromu, a c l a c r. bisekˇcn´ı body lev´eho a prav´eho troj´ uheln´ıka. Lev´y a prav´y je pouh´e oznaˇcen´ı. Mˇejme mateˇrsk´ y troj´ uheln´ık s vrcholy A, B, v a bisekˇcn´ım bodem c. v je vrchol proti c a A, B, v jsou uspoˇr´ad´any v CCW orientaci. Lev´y troj´ uheln´ık je ten, jehoˇz body v CCW orientaci jsou A, c, v, prav´y troj´ uheln´ık je ten, jehoˇz body v CCW orientaci v, c, B, obr´azek 5.15.
ˇ sen´ı pomoc´ı aktivov´an´ı vˇsech Obr´azek 5.13: (a) Pˇr´ıklad T-junctions. (b) Reˇ rodiˇcovsk´ ych bod˚ u.
37
tris-append(V, v, p) 1 if (v != v_(n-1) ) and (v != v_n) 2 if (p != V.parity) 3 V.parity = p 4 else 5 V = (V,v_(n-1) ) 6 V = (V, v) submesh-refine(V, i, j, l) 1 if (l > 0) and i.active 2 submesh-refine(V, j, c_l(i,j), l-1) 3 tstrip-append(V, i, l mod 2) 4 submesh-refine(V, j, c_r(i,j), l-1) mesh-refine(V, n) 1 V.parity = 0 2 V = (i_sw, i_sw) 3 submesh-refine(V, i_c, 4 tstrip-append(V, i_se, 5 submesh-refine(V, i_c, 6 tstrip-append(V, i_ne, 7 submesh-refine(V, i_c, 8 tstrip-append(V, i_nw, 9 submesh-refine(V, i_c, 10 V = (V, i_sw)
i_s, 1) i_e, 1) i_n, 1) i_w,
n) n) n) n)
Tabulka 5.4: Algoritmus generuj´ıc´ı obecn´ y triangle strip. Pˇrevzato z [8]
Obr´azek 5.14: Pr˚ uchod mˇr´ıˇzkou generuj´ıc´ı obecn´ y triangle strip. Pˇrevzato z [9]
38
5.4
Vstup / v´ ystup
Protoˇze model umoˇzn ˇuje volbu parametr˚ u 5 je vhodn´e m´ıt n´astroj, kter´ y umoˇzn´ı porovn´avat v´ ysledky r˚ uzn´ ych nastaven´ı. Proto byl do programu pˇrid´an k´od umoˇzn ˇuj´ıc´ı uloˇzen´ı hlavn´ıho pole na HDD a jeho opˇetovn´eho nahr´an´ı. Zde budou pops´any jen jeho v´ yznamnˇejˇs´ı vlastnosti.
5.4.1
Komprese dat
Aby v´ ysledn´e soubory nezab´ıraly zbyteˇcnˇe mnoho m´ısta, byla zavedena jednoduch´a ale velmi u ´ˇcinn´a komprese 6 , kter´a vyuˇz´ıv´a vlastnost´ı modelu. Gravitaˇcn´ı eroze zajiˇst’uje, ˇze rozd´ıl v´ yˇsek sousedn´ıch bunˇek nepˇrekroˇc´ı 2. Tato vlastnost je vyuˇzita a do souboru se ukl´ad´a jen 2B hodnota buˇ nky nal´ezaj´ıc´ı se v hlavn´ım poli na pozice 0, zbytek je uloˇzen jako rozd´ıl oproti buˇ nce pˇredchoz´ı. Zde je tˇreba upozornit, ˇze v naˇsem pˇr´ıpadˇe pˇredchoz´ı buˇ nka neznamen´a buˇ nku s indexem i − 1, obr´azek 5.16. Rozd´ıl v´ yˇsek sousedn´ıch bunˇek m˚ uˇze tedy nab´ yvat pˇeti hodnot −2, −1, 0, 1, 2, kter´e m˚ uˇzeme zak´odovat napˇr´ıklad takto. Hodnota rozd´ılu -2 -1 0 1 2 5 6
bitov´ y k´ od 00 01 10 110 111
S´ıla a u ´hel vˇetru, poˇcet vˇetr˚ u atd. Po kompresi mˇr´ıˇzka 257x257 zabere pˇribliˇznˇe 19KB, 1025x1025 pˇribliˇznˇe 280KB
Obr´azek 5.15: Pˇr´ıklad lev´ych a prav´ych troj´ uheln´ık˚ u
39
T´ımto k´odov´an´ım je jeden Byte komprimov´an pr˚ umˇernˇe 2.4 bity. Optimalizace, kter´a by prohled´avala, kter´e znaky se v poli v´ yˇsek vyskytuj´ı v´ıce a tˇem pˇridˇelila 2bitov´e hodnoty, nebyla implementov´ana z d˚ uvodu rychlosti a zv´ yˇsen´ı sloˇzitosti tohoto velmi jednoduch´eho algoritmu.
Obr´azek 5.16: (a) Buˇ nky na pozic´ıch i a i + 1 nemus´ı b´ yt vˇzdy sousedn´ı. (b) Tento zp˚ usob cestov´an´ı mˇr´ıˇzkou sousedstv´ı bunˇek neporuˇsuje.
5.4.2
V´ıce dat v jednom souboru
Protoˇze program umoˇzn ˇuje uloˇzen´ı po kaˇzd´em x poˇctu iterac´ı, takˇze lze pohodlnˇe bˇehem jedn´e simulace poˇr´ıdit stovky uloˇzen´ ych pol´ı, byl zaveden syst´em aktivn´ıho souboru. Program pracuje s jedn´ım aktu´aln´ım souborem, do kter´eho nebo z kter´eho ukl´ad´a/nahr´av´a vˇsechna data, dokud mu nen´ı ˇreˇceno, aby aktivn´ı soubor zmˇenil. T´ımto se zvyˇsuje pˇrehlednost a jednoduchost manipulace s uloˇzen´ ymi daty. Pˇr´ıklad aktivn´ıho souboru, do kter´eho jsou pr´avˇe uloˇzena data ze 4 hlavn´ıch mˇr´ıˇzek, je na obr´azku 5.17. Jedna uloˇzen´a poloˇzka obsahuje tyto informace. • Deskriptor dat – Kolika iterac´ı probˇehlo na uloˇzen´e mˇr´ıˇzce. – Velikost mˇr´ıˇzky. – Velikost komprimovan´eho pole v´ yˇsek. ´ – Uhel vˇetru. – Poloha a smˇer pohledu kamery. • Komprimovan´e hlavn´ı pole.
40
Obr´azek 5.17: Struktura aktivn´ıho souboru, kter´ y pr´avˇe obsahuje data 4 hlavn´ıch mˇr´ıˇzek. D znaˇc´ı deskriptor dat a data oznaˇcuje komprimovan´e hodnoty hlavn´ı mˇr´ıˇzky.
41
Kapitola 6
Ovl´ ad´ an´ı programu 6.1
Pˇ riloˇ zen´ y k´ od
Program je naprogramov´an v C++ s pomoc´ı knihoven OpenGL a GLUT a nen´ı nijak v´az´an na konkr´etn´ı operaˇcn´ı syst´em. K´od je pˇriloˇzen ve dvou verz´ıch. Jako projekt Microsoft Visual Studio 6.0 s nutn´ ymi zmˇenami k´odu pro tento ANSI C++ nekompatibiln´ı pˇrekladaˇc a jako k´ody a makefile soubor pro platformu Linux s pˇrekladaˇcem gcc.
6.2
Uˇ zivatelsk´ e prostˇ red´ı a pohyb kamery
Uˇzivatelsk´e prostˇred´ı je vytvoˇreno pomoc´ı menu. Jeho hierarchie je pops´ana n´ asleduj´ıc´ım seznamem. • Run – spouˇst´ı simulaci. • Camera positions – mˇen´ı pozici kamery, smˇer pohledu je vˇzdy smˇerem do stˇredu mˇr´ıˇzky. • Visualization – zmˇena nastaven´ı parametr˚ u zobrazov´an´ı. • Wind – nastaven´ı smˇeru s´ıly vˇetru a poˇcet vˇetr˚ u. • Terrain – umoˇzn ˇuje zmˇenit rozmˇery hlavn´ı mˇr´ıˇzky a vytvarovat umˇel´ y tvar na p´ıseˇcn´em povrchu. • Average height – nastaven´ı pr˚ umˇern´e hodnoty jednotliv´ ych bunˇek. Slouˇz´ı ke zmˇenˇe v´ yˇsky. • Input / Output – ukl´ad´an´ı a nahr´av´an´ı aktu´aln´ıho stavu hlavn´ı mˇr´ıˇzky a ukl´ad´an´ı aktu´aln´ıho okna do BMP souboru. Kromˇe menu Camera positions lze pozici kamery mˇenit i kl´avesnic´ı a to takto. 42
• Up arrow – pohyb kamery vpˇred • Down arrow – pohyb kamery vzad • Left arrow – rotace pohledu doleva • Righ arrow – rotace pohledu doprava • kl´avesa ’a’ – rotace pohledu nahoru • kl´avesa ’z’ – rotace pohledu dol˚ u
6.3
Poˇ zadavky na hardware
Nen´ı implementov´ano ˇz´adn´e pouˇz´ıv´an´ı hardwarov´e akcelerace, proto program nem´a ˇz´adn´e speci´aln´ı poˇzadavky na vlastnosti grafick´e karty. Pro plynul´ y pr˚ ubˇeh simulace na mˇr´ıˇzce 257 x 257 je nutn´ y procesor s taktovac´ı frekvenc´ı minim´alnˇe 1GHz. Program m´a tyto pamˇet’ov´e n´aroky. • 18MB pro mˇr´ıˇzku 257 x 257. • 40MB pro mˇr´ıˇzku 513 x 513. • 110MB pro mˇr´ıˇzku 1025 x 1025.
43
Kapitola 7
Popis proveden´ ych experiment˚ u Chov´an´ı modelu lze ovlivnit n´asleduj´ıc´ımi kontroln´ımi parametry a nastaven´ımi. • Intenzita vˇetru urˇcen´a hodnotou L0 . ´ • Uhel pod kter´ ym v´ıtr vane. • Nastaven´ım poˇctu stˇr´ıdaj´ıc´ıch se vˇetr˚ u. • Nastaven´ım poˇctu cykl˚ u, po kter´ ych se v´ıtr zmˇen´ı. • Mnoˇzstv´ım p´ısku v modelu, d´ano souˇctem hodnot vˇsech bunˇek hlavn´ı mˇr´ıˇzky. • Rozmˇery hlavn´ı mˇr´ıˇzky. ˇ ast mˇr´ıˇzky lze pˇred zaˇc´atkem simulace vymodelovat umˇele, pr˚ • C´ ubˇeh simulace je t´ım samozˇrejmˇe ovlivnˇen. Jeden cyklus je oznaˇcen´ı pro jeden bˇeh programu, pˇri kter´em se provede jedna eroze a jedno uloˇzen´ı vlivem vˇetru a management1 s t´ım spojen´ y. Term´ın velk´y cyklus oznaˇcuje 50000 cykl˚ u a jedn´a se o hodnotu zavedenou na z´akladˇe pozorov´an´ı. Po probˇehnut´ı jednoho velk´eho cyklu, se ter´en na mˇr´ıˇzce 257 x 257 zˇretelnˇe zmˇen´ı. Pˇri popisu skupin obr´azk˚ u se zaˇc´ın´a horn´ım lev´ ym obr´azkem a konˇc´ı se spodn´ım prav´ ym. 1
Testy na pˇrekroˇcen´ı klidov´eho u ´hlu, aktualizace hodnoty href a aktualizace vˇetrn´eho st´ınu.
44
7.1
Z´ avislost na dostupn´ em mnoˇ zstv´ı p´ısku
Zde jsou uk´az´any zmˇeny chov´an´ı modelu v z´avislosti na celkov´em mnoˇzstv´ı p´ısku, kter´e bylo na poˇc´atku simulace nastaveno pomoc´ı stejn´e hodnoty ve vˇsech buˇ nk´ach hlavn´ı mˇr´ıˇzky. Obr´azky 1-4 v souboru obr´azk˚ u 7.1. Nastaven´ı je toto, mˇr´ıˇzka 513x513, u ´hel vˇetru 0◦ a poˇc´ateˇcn´ı hodnota vˇsech bunˇek byla 1. Protoˇze dostupn´eho p´ısku je m´alo, modelu trv´a dlouhou dobu neˇz vzniknou prvn´ı duny, jedn´a se o Barchan dunes. Obr´azky 5-8 v souboru obr´azk˚ u 7.1. Nastaven´ı je toto, mˇr´ıˇzka 513x513, u ´hel vˇetru 0◦ , vˇsechny obr´azky byly sn´ım´any po 1500 velk´ ych cyklech. Mˇen´ı se dostupn´e mnoˇzstv´ı p´ısku, je vidˇet, ˇze s jeho pˇrib´ yvaj´ıc´ım mnoˇzstv´ım se duny typu Barchan postupnˇe mˇen´ı na pole dun.
7.2
Z´ avislost na nastaven´ı parametru L0
Tento parametr reprezentuje s´ılu vˇetru. D˚ usledkem zvyˇsov´an´ı s´ıly vˇetru je n´ ar˚ ust dun v´ yˇsky a jejich profil pˇrest´av´a b´ yt asymetrick´ y a st´av´a se opˇet symetrick´ ym, soubor obr´azk˚ u 7.1. D˚ uvod je zˇrejm´ y pˇri pohledu na rovnici 4.4, zvyˇsov´an´ım parametru L0 se sniˇzuje vliv zbytku t´eto rovnice na v´ yslednou vzd´alenost pˇrenosu L a model se zaˇc´ın´a chovat podobnˇe jako pˇri pouˇzit´ı rovnice 4.1. Mˇr´ıˇzka velikosti 513 x 513, u ´hel vˇetru je 0◦
7.3
LOD
Soubory obr´azk˚ u 7.3 a 7.4 ukazuj´ı pr´aci algoritmus pro sniˇzov´an´ı u ´rovnˇe detailu v z´avislosti na vzd´alenosti od pozorovatele a v z´avislosti na zadan´e povolen´e chybˇe. Hlavn´ı mˇr´ıˇzka m´a rozmˇery 513 x 513.
7.4
Umˇ el´ e objekty ve sc´ enˇ e
Soubor obr´azk˚ u 7.5 ukazuje v´ yvoj simulace, kdyˇz byl do sc´eny vloˇzen jehlan. Mˇr´ıˇzka velikost 513 x 513, nadefinov´any 4 vˇetry vanouc´ı postupnˇe pod u ´hly 0◦ , 180◦ , 90◦ a 270◦ a stˇr´ıdaj´ıc´ı se po 20 velk´ ych cyklech. Jak je vidˇet z posledn´ıho obr´azku i po 14 000 velk´ ych cyklech je jehlan st´ale patrn´ y. To je d´ ano ˇcast´ ym stˇr´ıd´an´ım vˇetr˚ u. Soubor obr´azk˚ u 7.6 ukazuje v´ yvoj simulace, kdyˇz byla na poˇc´atku simulace vytvoˇrena uprostˇred mˇr´ıˇzky parabolick´a prohlubeˇ n. Mˇr´ıˇzka velikost 513 x 513, definov´an je pouze jeden v´ıtr intenzity L0 = 5 a vanouc´ı pod u ´hlem 0◦ . Oproti pˇredchoz´ı simulaci 7.5 je umˇel´ y tvar t´emˇeˇr zahlazen po 10000 velk´ ych cyklech i kdyˇz jeho vliv na ter´en je st´ale patrn´ y.
45
Obr´azek 7.1: Obr. 1-4. Poˇc´ateˇcn´ı hodnota vˇsech bunˇek hlavn´ı mˇr´ıˇzky byla pˇred zaˇc´atkem simulace rovna 1. Obr´azky sn´ım´any po 500, 1500, 2000 a 2500 velk´ ych cyklech. Obr. 5-8. Poˇc´ateˇcn´ı hodnoty vˇsech bunˇek hlavn´ı mˇr´ıˇzky byly pˇred zaˇc´atkem simulace rovny 3, 5, 7, 10. Vˇsechny obr´azky sn´ım´any po 1500 velk´ ych cyklech. 46
Obr´azek 7.2: Vliv parametru L0 na pr˚ ubˇeh simulace. Kamera ja um´ıstˇena st´ ale ve stejn´e pozici. Obr. 1-2, L0 = 5, 1000 a 2000 velk´ ych cykl˚ u. Obr. 3-4, L0 = 10, 1000 a 2000 velk´ ych cykl˚ u. Obr. 5-6, L0 = 20, 1000 a 2000 velk´ ych cykl˚ u.
47
Obr´azek 7.3: Pˇr´ıklad funkce LOD na umˇel´em tvaru. V´ ypoˇcet st´ın˚ u je vypnut. Vlevo je zobrazen wireframe, vpravo obyˇcejn´e zobrazen´ı t´e sam´e sc´eny. Parametr LOD je 1, 2, 4, 8. 48
Obr´azek 7.4: Pˇr´ıklad funkce LOD na povrchu tvoˇren´em dunami. Vlevo je zobrazen wireframe, vpravo norm´aln´ı zobrazen´ı t´e sam´e sc´eny. Hodnoty parametru LOD jsou opˇet tyto 1, 2, 4, 8. 49
Obr´azek 7.5: Do hlavn´ı mˇr´ıˇzky je um´ıstnˇen jehlan. Jsou nadefinov´any 4 vˇetry, stejn´e intenzity L0 = 5 vanouc´ı pod u ´hly 0◦ , 180◦ , 90◦ a 270◦ . Zmˇena vˇetru nast´av´a po 20 velk´ ych cyklech. Obr´azky sn´ım´any po 500, 2500, 5000, 7500, 11000, 12000, 13000 a 14000 velk´ ych cyklech. 50
Obr´azek 7.6: Uprostˇred hlavn´ı mˇr´ıˇzky byla na zaˇc´atku simulace vytvoˇrena parabolick´a prohlubeˇ n. V´ıtr intenzity L0 = 5, vanouc´ı pod u ´hlem 0◦ . Obr´azky sn´ım´any po 100, 500, 1000, 2500, 4200, 5000, 7000 a 10000 velk´ ych cyklech. 51
Obr´azek 7.7: Obr. 1-2. Barchan dune se st´ınem a beze st´ınu. Obr 3-8. Ta sam´a sc´ena zobrazen´a postupnˇe pomoc´ı ˇsesti´ uheln´ık˚ u. Troj´ uheln´ık˚ u. Sc´ena je bez textur. Textury pˇrid´any. Pˇrid´an st´ın. Vyhlazov´an´ı pr˚ umˇerov´an´ım z 6 okol´ı. Vyhlazov´an´ı pr˚ umˇerov´an´ım z 18 okol´ı. 52
Kapitola 8
Z´ avˇ er Model simuluje v re´aln´em ˇcase jev, kter´ y je v pˇr´ırodˇe realizov´an obrovsk´ ym mnoˇzstv´ım miniaturn´ıch p´ıseˇcn´ ych zrnek. Ta se pod vlivem komplexn´ıho proudˇen´ı vˇetru a dalˇs´ıch fyzik´aln´ıch proces˚ u mal´eho mˇeˇr´ıtka, pˇresunuj´ı bˇehem stovek let natolik organizovan´ ym zp˚ usobem, ˇze jsou schopna zformovat duny. Proto popis tohoto dˇeje nem˚ uˇze b´ yt pˇresnou kopi´ı proces˚ u odehr´avaj´ıc´ıch se v pˇr´ırodˇe, ale je tˇreba popis znaˇcnˇe zjednoduˇsit, aniˇz by se vytratily charakteristick´e vlastnosti cel´eho syst´emu jako takov´eho. Pˇresnˇe takov´ y pˇr´ıstup byl pouˇzit i v t´eto diplomov´e pr´aci. Zda byl hlavn´ı c´ıl, tedy simulace vzniku a v´ yvoje dun, dodrˇzen, z´aleˇz´ı na u ´hlu pohledu. Pokud budeme p´ıseˇcn´e duny ch´apat jako u ´tvary vznikaj´ıc´ı vlivem vˇetru v p´ıseˇcn´ ych oblastech se zˇretelnˇe rozliˇsenou n´avˇetrnou a z´avˇetrnou stranu, pak dodrˇzen byl. Podle mnoˇzstv´ı p´ısku zadan´eho pˇri inicializaci modelu, je tento schopen generovat jak osamocen´e duny Barchan, tak pole dun, kde jedna duna pˇrech´az´ı plynule v druhou. Zaveden´ım dvou vˇetr˚ u jejichˇz smˇery jsou na sebe kolm´e, vznikaj´ı symetrick´e line´arn´ı duny, cestuj´ıc´ı ve smˇeru v´ yslednice vektor˚ u obou vˇetr˚ u. Definov´an´ım ˇctyˇr vˇetr˚ u lze dos´ahnout network dunes, tehdy je hlavn´ı mˇr´ıˇzka rozdˇelena do ˇc´asteˇcnˇe se pˇrekr´ yvaj´ıc´ıch oblast´ı a v kaˇzd´e z nich jsou duny vytvarov´any trochu odliˇsn´ ym zp˚ usobem. Vzniku typick´e star dune se doc´ılit nepodaˇrilo, ale u ´tvary, u kter´ ych se sb´ıhaj´ı tˇri ramena v jeden centr´aln´ı uzel, bˇehem simulace tak´e vznikaj´ı. V t´eto diplomov´e pr´aci byla d´ale implementov´ana netrivi´aln´ı u ´loha, kterou je sniˇzovov´an´ı u ´rovnˇe detailu v z´avislosti na pozici pozorovatele. Na algoritmy tohoto typu obecnˇe jsou kladeny pomˇernˇe vysok´e poˇzadavky, protoˇze mus´ı pracovat efektivnˇe ale z´aroveˇ n mus´ı b´ yt natolik jednoduch´e aby nebyly velkou v´ ypoˇcetn´ı z´atˇeˇz´ı. Tento u ´kol se podaˇrilo splnit jen ˇc´asteˇcnˇe, implementovan´ y algoritmus totiˇz znaˇcnˇe urychl´ y zobrazov´an´ı jen za cenu viditeln´eho sn´ıˇzen´ı detailu.
53
Kapitola 9
N´ avrhy dalˇ s´ıho rozvoje t´ ematu Protoˇze je tato diplomov´a pr´ace z oboru visualizace pomoc´ı poˇc´ıtaˇcov´e grafiky, dalˇs´ı kroky by se mˇely ub´ırat pˇrid´an´ım algoritm˚ u vykresluj´ıc´ıch wind-ripples neboli vˇetrn´e vlnky. T´ım zobrazovan´a sc´ena z´ısk´a charakteristick´ y rys p´ıseˇcn´ ych oblast´ı. Jednou z moˇzn´ ych cest m˚ uˇze b´ yt i vyuˇzit´ı jiˇz naprogramovan´eho modelu a pomoc´ı vhodn´eho nastaven´ı parametr˚ u vygenerovan´ı u ´tvar˚ u podobn´ ych vlnk´am. Norm´alov´e vektory t´eto druh´e hlavn´ı mˇr´ıˇzky pak pouˇzijeme pro bump-mapping, stejnˇe jako je tomu v pr´aci [3]. D´ale je tˇreba prov´est podrobnˇejˇs´ı zkoum´an´ı vlastnost´ı mˇr´ıˇzek tvoˇren´ ych pravideln´ ymi ˇsesti´ uheln´ıky. Hlavn´ım u ´ˇcelem tohoto studia by mˇelo dosaˇzen´ı optim´aln´ıho zp˚ usobu indexace. Algoritmus je nyn´ı totiˇz ˇc´asteˇcnˇe zpomalov´an t´ım, ˇze pˇri pˇresunu z jedn´e buˇ nky mˇr´ıˇzky do buˇ nky sousedn´ı je tˇreba zn´at hodnotu yi aktu´aln´ı buˇ nky. Bohuˇzel, tuto hodnotu lze z indexu i do hlavn´ıho pole z´ıskat jen pomˇernˇe n´aroˇcnou operac´ı dˇelen´ı, kdy yi = i/xs . Jedn´ım z moˇzn´ ych ˇreˇsen´ı je pouˇzit´ı hlavn´ı mˇr´ıˇzky velikosti xs = 2k , pak lze operaci dˇelen´ı realizovat posunem bit˚ u v indexu i. Probl´em tohoto ˇreˇsen´ı se ale skr´ yv´a v kombinaci s aktu´alnˇe implementovan´ ym algoritmem LOD, pro kter´ y je rozmˇer mˇr´ıˇzky 2k naprosto nev´ yhodn´ y. T´eˇz je moˇzno rozˇs´ıˇrit vlastnosti vˇetrn´eho pole tak, aby ˇsla plynule mˇenit intenzita vˇetru a aby v´ıtr vanouc´ı pod u ´hlem r˚ uzn´ ym od n´asobku 60◦ nebyl zat´ıˇzen diskretizaˇcn´ı chybou. Rozˇs´ıˇren´ım vlastnost´ı vˇetrn´eho pole by pak ˇslo kupˇr´ıkladu realizovat neerodovateln´e pˇrek´aˇzky ve sc´enˇe. Na druhou stranu je tˇreba m´ıt na pamˇeti, ˇze ˇc´ım sloˇzitˇejˇs´ı je definice vˇetrn´eho pole, t´ım vzr˚ ust´a sloˇzitost nejen v´ ypoˇctu vektoru pˇresunu ale tak´e se t´ım komplikuje aktualizace hranic oblast´ı ve vˇetrn´em st´ınu. V´ ypoˇcet dynamick´ ych st´ın˚ u vrˇzen´ ych dunou na ostatn´ı duny je nyn´ı realizov´an velmi jednoduchou metodou. Ta je sice schopna pracovat v re´aln´em ˇcase, ale je postavena ˇcistˇe na norm´alov´ ych vektorech jednotliv´ ych vrchol˚ u a st´ın takto tvoˇren´ y m´a pak zubat´e okraje. Proto by bylo pro zlepˇsen´ı
54
visu´aln´ıho dojmu vhodn´e, implementovat algoritmus zajiˇst’uj´ıc´ı pˇred hlavn´ım vykreslen´ım sc´eny v´ ypoˇcty st´ın˚ u jinou, preciznˇejˇs´ı metodou.
55
Literatura [1] Momiji H., Carretero-Gonz´alez R., Bishop S.R. and Warren A. (2000) “Simulation of the effect of wind speedup in the formation of transverse dune fields”, Earth Surface Processes and Landforms 25, pp. 905–918. [2] Steven R. Bishop, Hiroshi Momiji, Ricardo Carretero-Gonz´alez and Andrew Warren. (2002) “Modelling Desert Dune Fields Based on Discrete Dynamics”, Discrete Dynamics in Nature and Society, Vol. 7 (1), pp. 7–17. [3] Koichi Onoue, Tomoyuki Nishita. (2000) “A Method for Modeling and Rendering Dunes with Wind-ripples”, In Proceedings of Pacific Graphics’00, pp. 427–428. [4] Hatano, Y., and Hatano D., (2001). “Dune Morphology and Sand Transport”. Forma, Vol. 16 (No. 1), pp. 65-75. [5] Benes, B., Roa, T. (2004) “Simulating Desert Scenery”, Proceedings of WSCG 2004, pp. 17-22. [6] Yizhaq, H., Balmforth N.J and Provenzale A., “An integro-differential model for the dynamics of aeolian sand ripples”. Proceedings of Sedimentation and Sediment-Transport At the crossroads of physics and engineering (2002). Monte Verita , Switzerland ( September 2002). [7] Adam Koh. (2002) “Dramatic Landscapes, Cellular Automata Modeling of Landscape Phenomena”, Bachelor thesis, School of Computer Science and Software Engineering Monash University. [8] Peter Lindstrom and Valerio Pascucci, “Visualization of large terrains made easy,” in IEEE Visualization 2001, Kenneth I. Joy, Amitabh Varshney, and Thomas Ertl, Eds., San Diego, California, Oct. 2001, pp. 363–370, IEEE. [9] Peter Lindstrom and Valerio Pascucci, “Terrain Simplification Simplified: A General Framework for View-Dependent Out-of-Core Visualization” IEEE Transactions on Visualization and Computer Graphics, Volume 8, Issue 3, July-Sept. 2002 pp. 239-254. 56
[10] Peter Lindstrom, David Koller, William Ribarsky, Larry F. Hodges, Nick Faust, Gregory A. Turner, “Real-Time, Continuous Level of Detail Rendering of Height Fields” Proceedings of the 23rd annual conference on Computer graphics and interactive techniques, pp. 109-118, August 1996.
57
Dodatek A
Pˇ r´ılohy A.1
Podrobn´ y popis uˇ zivatelsk´ eho prostˇ red´ı
Zde jsou podrobnˇe vysvˇetleny a pops´any jednotliv´e poloˇzky hlavn´ıho menu, tedy n´astroje urˇcen´eho k ovl´ad´an´ı programu.
A.1.1
Run
• Run Blind Fluently 50000x on/off – Spust´ı simulaci aniˇz by prob´ıhalo zobrazov´an´ı modelu. Kaˇzd´ ych 50000 cykl˚ u pˇred´a ˇr´ızen´ı GLUT za u ´ˇcelem oˇsetˇren´ı ud´alost´ı. Smyslupln´e pouˇzit´ı t´eto poloˇzky nast´av´a v pˇr´ıpadˇe, kdyˇz maj´ı b´ yt ukl´ad´any v´ ysledky simulace v hlavn´ı mˇr´ıˇzce do aktivn´ıho souboru aniˇz by byl procesor zatˇeˇzov´an zobrazov´an´ım sc´eny. • Run 1x on/off – Po kaˇzd´em jednom cyklu je sc´ena znovu zobrazena. • Run Blind x – Tyto poloˇzky spust´ı bˇeh simulace aniˇz by byly jej´ı v´ ysledky pr˚ ubˇeˇznˇe zobrazov´any a po x poˇctu cykl˚ u je simulace zastavena. • Run Fluently x on/off – Tyto poloˇzky spust´ı bˇeh simulace. Po kaˇzd´em x poˇctu cykl˚ u se provede zobrazen´ı a simulace pokraˇcuje.
A.1.2
Camera positions
• Camera Left Bottom corner – Um´ıst´ı kameru do lev´eho spodn´ıho rohu mˇr´ıˇzky. • Camera Center Bottom – Um´ıst´ı kameru do stˇredu spodn´ı hrany mˇr´ıˇzky. • Camera Right Bottom corner – Um´ıst´ı kameru do prav´eho spodn´ıho rohu mˇr´ıˇzky. • Camera Center Right – Um´ıst´ı kameru do stˇredu prav´e hrany mˇr´ıˇzky. 58
• Camera Right Top corner – Um´ıst´ı kameru do horn´ıho prav´eho rohu mˇr´ıˇzky. • Camera Center Top – Um´ıst´ı kameru do stˇredu horn´ı hrany mˇr´ıˇzky. • Camera Left Top corner – Um´ıst´ı kameru do horn´ıho lev´eho rohu mˇr´ıˇzky. • Camera Left Center – Um´ıst´ı kameru do stˇredu lev´e hrany mˇr´ıˇzky. • Higher position – Po aktivaci t´eto poloˇzky a zvolen´ı nˇekter´e z pˇredch´azej´ıc´ıch je kamera um´ıstˇena v´ yˇse ale jinak do t´e sam´e polohy.
A.1.3
Visualization
• Hexes – Zobraz´ı sc´enu pomoc´ı kv´adr˚ u s ˇsesti´ uheln´ıkovou podstavou. • Triangles – Zobraz´ı sc´enu pomoc´ı troj´ uheln´ık˚ u. • Wireframe / Solid – Zobraz´ı sc´enu dr´atˇen´ ym modelem / plochami. • Light on / off – Pˇrep´ınan´ı svˇetla ve sc´enˇe. • Light model Flat / Smooth – Pˇrep´ınan´ı typu st´ınov´an´ı. • LOD on / off – Pˇrep´ınaˇc pro LOD. • Textures of / off – Pˇrep´ınaˇc pro Texturov´an´ı. • Wind shadow on /off – Pˇrep´ınaˇc pro zobrazov´an´ı vˇetrn´eho st´ınu. • Wind in on / off – Zobrazov´an´ı vˇetrn´eho pole, singalizuje kter´ ym smˇerem z bunˇek vane v´ıtr. • Wind out on / off – Zobrazov´an´ı vˇetrn´eho pole, singalizuje kter´ ym smˇerem do bunˇek vane v´ıtr. • Rotate around origin – Vypne / zapne pomalou rotaci kamery okolo stˇredu hlavn´ı mˇr´ıˇzky. • Land volume on/off – Pˇrep´ınaˇc pro zobrazov´an´ı kv´adrov´eho objemu okolo vlastn´ı mˇr´ıˇzky. • Land ironing 1 – Pˇrep´ınaˇc pro pr˚ umˇerov´an´ı hodnot hlavn´ı mˇr´ıˇzky pˇred zobrazen´ım, ter´en pak p˚ usob´ı plynuleji. Pr˚ umˇer je br´an z ˇsestiokol´ı buˇ nky. • Land ironing 2 – Pˇrep´ınaˇc pro pr˚ umˇerov´an´ı hodnot hlavn´ı mˇr´ıˇzky pˇred zobrazen´ım, ter´en pak p˚ usob´ı plynuleji. Pr˚ umˇer je br´an z osmn´acti okol´ım buˇ nky. 59
• Shadows – Pˇrep´ınaˇc pro dynamick´e st´ıny. • LOD error – T´ımto podmenu se nastavuje maxim´aln´ı povolen´a chyba pro LOD.
A.1.4
Wind
• • Set wind direction to x – Nastav´ı u ´hel vˇetru na hodnotu x. • Set wind direction to + 15 degrees – Mˇen´ı u ´hel vˇetru o + 15◦ . • Set wind direction to - 15 degrees – Mˇen´ı u ´hel vˇetru o - 15◦ . • Set wind force to x – Nastav´ı parametr, L0 na hodnotu x. • Setting wind 1 – Zmˇeny u ´hlu a parametru L0 se projev´ı na vˇetru ˇc´ıslo 1. • Setting wind 2 – Zmˇeny u ´hlu a parametru L0 se projev´ı na vˇetru ˇc´ıslo 2. • Setting wind 3 – Zmˇeny u ´hlu a parametru L0 se projev´ı na vˇetru ˇc´ıslo 3. • Setting wind 4 – Zmˇeny u ´hlu a parametru L0 se projev´ı na vˇetru ˇc´ıslo 4. • Unidirectional wind regime – V modelu je pouˇzit pouze prvn´ı v´ıtr. • Bidirectional wind regime – V modelu stˇr´ıd´a 1. a 2. v´ıtr. • Tridirectional wind regime – V modelu se stˇr´ıdaj´ı vˇetry ˇc´ıslo 1, 2 a 3. • Quaddirectional wind regime – V modelu se stˇr´ıdaj´ı vˇsechny vˇetry. • Wind change after x – Zmˇena aktu´aln´ıho vˇetru se prov´ad´ı kaˇzd´ ych x cykl˚ u.
A.1.5
Terrain
• Small size – Umˇele vloˇzen´ y tvar bude mal´e velikosti. • Medium size – Umˇele vloˇzen´ y tvar bude stˇredn´ı velikosti. • Large size – Umˇele vloˇzen´ y tvar zabere t´emˇeˇr pˇres celou mˇr´ıˇzku. • Hill – Vloˇz´ı do stˇredu hlavn´ı mˇr´ıˇzky parabolick´ y kopec. • Bowl – Uprostˇred hlavn´ı mˇr´ıˇzky vyhloub´ı parabolickou j´amu. 60
• Sinus – Cel´ y ter´en je zvlnˇen pomoc´ı funkce sin. • Sinus Sinus – Cel´ y ter´en je zvlnˇen pomoc´ı funkce sin a m´ısto kde funkce dosahuje amplitudy je opˇet funkc´ı sin • Pyramid – Vloˇz´ı do stˇredu hlavn´ı mˇr´ıˇzky jehlan se sklonem stran 15◦ . • Pyramid steep – Vloˇz´ı do stˇredu hlavn´ı mˇr´ıˇzky jehlan se sklonem stran 33◦ . • a x a Flat – Vytvoˇr´ı novou hlavn´ı mˇr´ıˇzku, velikosti a x a.
A.1.6
Average height
• Inc height x – Pˇriˇcte k hodnotˇe kaˇzd´e buˇ nky hlavn´ı mˇr´ıˇzky hodnotu x. • Dec height x – Sn´ıˇz´ı hodnotu kaˇzd´e buˇ nky hlavn´ı mˇr´ıˇzky o x. ˇ ıslo x ukazuje pr˚ • Hieght value x – C´ umˇern´ y poˇcet sand slab v jedn´e buˇ nce mˇr´ıˇzky. Nejvˇetˇs´ı smysl m´a tento ukazatel pˇri inicializaci modelu, kdy je povrch dokonale ploch´ y a kdy tedy ukazuje pˇr´ımo mocnost p´ıseˇcn´e vrstvy.
A.1.7
Input / Output
• Save – Uloˇz´ı hlavn´ı mˇr´ıˇzku do aktivn´ıho souboru. • New active file, activate it – Vytvoˇr´ı nov´ y aktivn´ı soubor. • Animate active file – Postupnˇe zobraz´ı vˇsechny hlavn´ı mˇr´ıˇzky uloˇzen´e v aktivn´ım souboru. • Stop/Cont animation – Zastav´ y / nech´a d´ale bˇeˇzet animaci hlavn´ıch mˇr´ıˇzek uloˇzen´ ych v aktivn´ım souboru. • Do not save – Vypne automatick´e ukl´ad´an´ı. • Save after x iterations – Automaticky uloˇz´ı kaˇzd´ ych x cykl˚ u hlavn´ı mˇr´ıˇzku. • Rotate camera after saving – Po kaˇzd´em uloˇzen´ı otoˇc´ı kamerou kolem stˇredu hlavn´ı mˇr´ıˇzky. • Camera follow data – Pˇrep´ınaˇc, pokud je aktivn´ı, tak se po nahr´an´ı hlavn´ı mˇr´ıˇzky kamera pˇresune do t´e sam´e pozice kde byla bˇehem ukl´ad´an´ı. • Save to BMP – Uloˇz´ı Color buffer do BMP souboru, soubory jsou ˇc´ıslov´any od 1. 61
• Save every frame to BMP – Uloˇz´ı Color buffer do BMP souboru po kaˇzd´em pˇrekreslen´ı obrazovky. BMP soubory jsou ˇc´ıslov´any od 1.
62