ˇ e vysok´e uˇcen´ı technick´e v Praze Cesk´ Fakulta elektrotechnick´a
ˇ VUT FEL katedra pocˇı´tacˇu˚ C
Diplomov´a pr´ace
Modelov´ an´ı vodn´ı hladiny Luk´ aˇs Zikeˇs
Vedouc´ı pr´ace: Ing. Jaroslav Sloup
Studijn´ı program: Elektrotechnika a informatika dob´ıhaj´ıc´ı magistersk´ y Obor: Informatika a v´ ypoˇcetn´ı technika leden 2008
ii
Podˇ ekov´ an´ı R´ad bych podˇekoval vˇsem lidem, co se mnou mˇeli trpˇelivost bˇehem obdob´ı, kdy jsem se zab´ yval touto diplomovou prac´ı. T´eˇz chci podˇekovat Ing. Jaroslavu Sloupovi za veden´ı diplomov´e pr´ ace a trpˇelivost. iii
iv
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: 17.1. 2008
.............................................................
v
vi
Abstract In this thesis I want to overlook the methods for the water surface modeling used in the computer graphics and implement the technique, which make possible to modelling waves on the water surface near shore in real time. I put the accent on the shallow water phenomena i.e. refraction and breaking of the waves. The goal of this thesis is not a realistic rendering of the water surface, based on the optical phenomena at boundary between water and air.
Abstrakt Tato pr´ace si klade za c´ıl prozkoumat metody modelov´an´ı vodn´ı hladiny pouˇz´ıvan´e v poˇc´ıtaˇcov´e grafice a na z´akladˇe zjiˇstˇen´ ych fakt implementovat techniku umoˇzn ˇuj´ıc´ı modelovat vlny na povrchu hladiny pobl´ıˇz pobˇreˇz´ı v re´aln´em ˇcase. D˚ uraz je kladen na jevy projevuj´ıc´ı se v mˇelk´e vodˇe tj. lom a pˇrekl´apˇen´ı ˇcel vln. C´ılem t´eto pr´ace nen´ı realistick´e renderov´an´ı vodn´ıho povrchu, kter´e by respektovalo optick´e jevy na rozhran´ı voda-vzduch.
vii
viii
Obsah Seznam obr´ azk˚ u
xii
Seznam tabulek
xiii
´ 1 Uvod
1
2 Vymezen´ı c´ıl˚ u pr´ ace
2
3 Voda a jej´ı hladina 3.1 Z´akladn´ı vlastnosti kapalin . . . . . . . . . . . . . . . 3.1.1 Voda . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Definice z´akladn´ıch pojm˚ u . . . . . . . . . . . . . . . . 3.3 Vlny na vodn´ı hladinˇe . . . . . . . . . . . . . . . . . . 3.3.1 Vznik vˇetrn´ ych vln . . . . . . . . . . . . . . . . ˇıˇren´ı vln . . . . . . . . . . . . . . . . . . . . . 3.3.2 S´ 3.3.2.1 Vlny na hlubok´e vodˇe . . . . . . . . . 3.3.2.2 Vlny na pˇrechodn´e a mˇelk´e vodˇe . . . 3.4 Fyzik´aln´ı teorie . . . . . . . . . . . . . . . . . . . . . . 3.4.1 Kinematika . . . . . . . . . . . . . . . . . . . . 3.4.1.1 Line´arn´ı vlny s malou amplitudou . . 3.4.1.2 Gerstnerovy vlny . . . . . . . . . . . . 3.4.1.3 Aproximace chov´an´ı vln na pˇrechodn´e 3.4.2 Dynamika . . . . . . . . . . . . . . . . . . . . . 3.5 Optick´e vlastnosti . . . . . . . . . . . . . . . . . . . . 3.5.1 Odraz . . . . . . . . . . . . . . . . . . . . . . . 3.5.2 Lom . . . . . . . . . . . . . . . . . . . . . . . . 3.5.3 Fresnelovy rovnice . . . . . . . . . . . . . . . . 3.6 Vliv na pobˇreˇzn´ı geomorfologii . . . . . . . . . . . . . 4 Modelov´ an´ı vln v poˇ c´ıtaˇ cov´ e grafice 4.1 N´ahodn´e modely a bump-mapping . . . . . . . . . . . 4.1.1 Bump-mapping . . . . . . . . . . . . . . . . . . 4.1.2 Procedur´aln´ı model . . . . . . . . . . . . . . . 4.1.3 Statistick´e modely . . . . . . . . . . . . . . . . 4.2 Kinematick´e modely . . . . . . . . . . . . . . . . . . . 4.2.1 Max . . . . . . . . . . . . . . . . . . . . . . . . 4.2.2 Ts’o-Barsky . . . . . . . . . . . . . . . . . . . . 4.2.3 Peachy . . . . . . . . . . . . . . . . . . . . . . . 4.2.4 Gerstner . . . . . . . . . . . . . . . . . . . . . . 4.2.5 Biesel . . . . . . . . . . . . . . . . . . . . . . . 4.2.6 Fournier-Reeves . . . . . . . . . . . . . . . . . . 4.2.7 Gonzato-Le Sa¨ec . . . . . . . . . . . . . . . . . 4.2.7.1 Profil vln . . . . . . . . . . . . . . . . 4.2.7.2 Dynamick´e sledov´an´ı paprsku (DWT) 4.2.7.3 Vytvoˇren´ı povrchu a jeho animace . . 4.3 Dynamick´e modely . . . . . . . . . . . . . . . . . . . . 4.3.1 metoda 2D ˇrez˚ u . . . . . . . . . . . . . . . . . 4.3.2 Kass-Miller . . . . . . . . . . . . . . . . . . . . ix
. . . . . . . . . . . . a . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . mˇelk´e vodˇe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . .
3 3 3 3 4 6 7 8 8 11 11 12 12 14 15 15 16 16 16 16
. . . . . . . . . . . . . . . . . .
19 19 19 20 21 22 22 22 24 25 25 25 28 28 30 32 32 33 33
4.3.3 4.3.4
Chen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Foster-Metaxas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 Implementace 5.1 Vybran´ y model a jeho adaptace na realtime 5.1.1 Adaptace na realtime . . . . . . . . 5.2 Sch´ema funkˇcn´ıch blok˚ u . . . . . . . . . . . 5.2.1 Parametry pˇr´ıkazov´e ˇr´adky . . . . . 5.2.2 V´ yˇskov´a mapa ter´enu . . . . . . . . 5.2.3 Vrstevnice . . . . . . . . . . . . . . . 5.2.4 Kd-tree . . . . . . . . . . . . . . . . 5.2.5 Vodn´ı povrch . . . . . . . . . . . . . 5.2.5.1 DWT . . . . . . . . . . . . 5.2.5.2 V´ ypoˇcet profilu vln . . . . 5.2.6 OpenGL renderov´an´ı . . . . . . . . . 5.3 Konstrukce a animace modelu . . . . . . . .
35 36
. . . . . . . . . . . .
38 38 39 39 40 40 41 41 42 45 47 47 48
6 Mˇ eˇ ren´ı 6.1 Mˇeˇren´ı FPS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Z´avislost doby v´ ypoˇctu DWT na velikosti rozestupu paprsk˚ u . . . . . . . . . . 6.3 Z´avislost doby v´ ypoˇctu DWT na velikosti rozestupu vrstevnic . . . . . . . . . .
49 49 50 50
7 Z´ avˇ er 7.1 N´apady na dalˇs´ı pokraˇcov´an´ı pr´ace . . . . . . . . . . . . . . . . . . . . . . . . .
53 53
8 Literatura
55
A Seznam pouˇ zit´ ych zkratek
57
B Symboly pouˇ zit´ e v textu
59
C Uˇ zivatelsk´ a / instalaˇ cn´ı pˇ r´ıruˇ cka C.1 Instalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.2 Popis ovl´ad´an´ı aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C.3 Pˇr´ıkazov´a ˇr´adka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61 61 61 62
D Obsah pˇ riloˇ zen´ eho CD
65
E Obr´ azky E.1 Testovac´ı sc´eny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67 67
x
v´ ypoˇcet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
Seznam obr´ azk˚ u 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 3.12 3.13 3.14 3.15 3.16 3.17 3.18 3.19 3.20 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 4.15 4.16
5.1 5.2 5.3 5.4 5.5 5.6
Obecn´ y popis vlny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Spektrum vln vyskytuj´ıc´ıch se na vodn´ı hladinˇe oce´an˚ u (pˇrevzato z [14]) . . . . Vznik seismick´e vlny (tsunami) (pˇrevzato z [14]) . . . . . . . . . . . . . . . . . Vznik´an´ı vˇetrn´ ych vln - vertik´aln´ı rovina (pˇrevzato z [14]) . . . . . . . . . . . . Vznik´an´ı vˇetrn´ ych vln - horizobt´aln´ı rovina (pˇrevzato z [14]) . . . . . . . . . . Beaufortova stupnice s´ıly vˇetru . . . . . . . . . . . . . . . . . . . . . . . . . . . Kruhov´ y pohyb vody, pˇri ˇs´ıˇren´ı vlny (pˇrevzato z [14]) . . . . . . . . . . . . . . Tvar vlnov´ ych orbit vzhledem ke klasifikaci dle hloubky a vlnov´e d´elky (pˇrevzato z [14]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zmˇena tvaru ˇcela vln v mˇelk´e vodˇe (pˇrevzato z [14]) . . . . . . . . . . . . . . . Typ pˇrekl´apˇej´ıc´ıch se vln v z´avislosti na sklonu dna (pˇrevzato z [14]) . . . . . . Lom vln - horizont´aln´ı rovina (pˇrevzato z [14]) . . . . . . . . . . . . . . . . . . Lom vln - horizont´aln´ı rovina (mys a z´atoka) (pˇrevzato z [14]) . . . . . . . . . . Difrakce vlny za pˇrek´aˇzkou (pˇrevzato z [14]) . . . . . . . . . . . . . . . . . . . . Oznaˇcen´ı 3D souˇradnic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Trochoid´aln´ı profil Gerstnerovy vlny (pˇrevzato z [7]) . . . . . . . . . . . . . . . Zmˇena tvaru Gerstnerovy vlny v z´avislosti na souˇcinu K · A (pˇrevzato z [7]) . . Odraz a lom paprsk˚ u svˇetla na vodn´ı hladinˇe (pˇrevzato z [23]) . . . . . . . . . . Sklon moˇrsk´eho dna podle velikosti ˇc´asteˇcek usazenin (pˇrevzato z [14]) . . . . . Pˇresun usazenin dle roˇcn´ıch obdob´ı (pˇrevzato z [14]) . . . . . . . . . . . . . . . Typick´ y tvar moˇrsk´eho dna u pobˇreˇz´ı (pˇrevzato z [14]) . . . . . . . . . . . . . . Princip bump-mappingu (pˇrevzato z [15]) . . . . . . . . . . . . . . . . . . . . . Postup konstrukce Perlinova ˇsumu (δ = 0.5) (pˇrevzato z [25]) . . . . . . . . . . Lom vlnov´eho paprsku pˇri protnut´ı vrstevnice (kontury) (pˇrevzato z [15]) . . . Zarovn´av´an´ı ˇcel vln s pobˇreˇz´ım a lom vlnov´ ych paprsk˚ u (ortogon´al) (pˇrevzato z [26]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vlnov´e profily (pˇrevzato z [15]) . . . . . . . . . . . . . . . . . . . . . . . . . . . Zmˇena tvaru orbit a vliv na tvar vln (pˇrevzato z [15]) . . . . . . . . . . . . . . Vlna Gerstnerova modelu (pˇrevzato z [15]) . . . . . . . . . . . . . . . . . . . . . Vliv parametru s na tvar vln (pˇrevzato z [15]) . . . . . . . . . . . . . . . . . . . Pr˚ ubˇeh fce. Stretch a jej´ı vliv na tvar vlny (pˇrevzato z [15]) . . . . . . . . . . . Pr˚ ubˇeh fc´ı. Orientation a Displacement a jejich vliv na tvar vlny (pˇrevzato z [15]) T’so-Barsky WT algoritmus v z´atoce a kolem ostrova (pˇrevzato z [8]) . . . . . Gonzato-Le Sa¨ec DWT algoritmus v z´atoce a kolem ostrova (pˇrevzato z [8]) . . Pˇr´ıklad konstrukce triangulace (pˇrevzato z [15]) . . . . . . . . . . . . . . . . . . Diskr´etn´ı 2D v´ yˇskov´e pole reprezentuj´ıc´ı povrch h, dno d a horizont´aln´ı rychlost vody u (pˇrevzato z [15]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vztah mezi tlakem a v´ yˇskou vodn´ıho sloupce (pˇrevzato z [3]) . . . . . . . . . . Rozdˇelen´ı sc´eny na krychle a rozloˇzen´ı rychlost´ı jedn´e buˇ nky o souˇradnic´ıch (i,j,k) (pˇrevzato z [5]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Blokov´e sch´ema implementace modelu . . . . . Konstrukce povrchu vodn´ı hladiny - Situace A Konstrukce povrchu vodn´ı hladiny - Situace B . Konstrukce povrchu vodn´ı hladiny - Situace C . Konstrukce povrchu vodn´ı hladiny - Situace D Konstrukce povrchu vodn´ı hladiny - Situace E . xi
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
4 5 6 6 6 7 7 8 9 9 10 10 11 11 13 13 15 17 17 18 20 20 23 24 25 26 26 27 29 29 31 32 32 34 35 37 39 42 42 43 43 43
6.1 6.2 6.3 6.4 6.5 6.6 6.7
Graf Graf Graf Graf Graf Graf Graf
rychlosti vykreslov´an´ı testovac´ıch sc´en . . . . . . . . . . . . . . . . . . poˇctu ˇc´ast´ı paprsk˚ u a vrstevnic testovac´ıch sc´en . . . . . . . . . . . . . doby v´ ypoˇctu DWT testovac´ıch sc´en . . . . . . . . . . . . . . . . . . . poˇctu ˇc´ast´ı paprsk˚ u v z´avislosti na rozestupu paprsk˚ u (sc´ena test1) . . doby v´ ypoˇctu DWT v z´avislosti na rozestupu paprsk˚ u (sc´ena test1) . . poˇctu ˇc´ast´ı vrstevnic v z´avislosti na rozestupu vrstevnic (sc´ena test1) . doby v´ ypoˇctu DWT v z´avislosti na rozestupu vrstevnic (sc´ena test1) .
E.1 E.2 E.3 E.4 E.5 E.6 E.7 E.8 E.9 E.10 E.11 E.12 E.13 E.14 E.15 E.16
Ter´en testovac´ı sc´eny test1 . . . . . . . . . . . . . . . . . . Ter´en testovac´ı sc´eny test2 . . . . . . . . . . . . . . . . . . Ter´en testovac´ı sc´eny test3 . . . . . . . . . . . . . . . . . . Ter´en testovac´ı sc´eny test5 . . . . . . . . . . . . . . . . . . Vlnov´e paprsky na pl´aˇzi vytvoˇren´e pomoc´ı DWT . . . . . Pohled na pl´aˇz z ptaˇc´ı perspektivy . . . . . . . . . . . . . Vlny na pl´aˇzi . . . . . . . . . . . . . . . . . . . . . . . . . Vlnov´e paprsky kolem ostrova vytvoˇren´e pomoc´ı DWT . . Pohled na ostrov z ptaˇc´ı perspektivy . . . . . . . . . . . . Vlny kolem ostrova . . . . . . . . . . . . . . . . . . . . . . Vlnov´e paprsky na nerovn´e pl´aˇzi vytvoˇren´e pomoc´ı DWT Pohled na nerovnou pl´aˇz z ptaˇc´ı perspektivy . . . . . . . . Vlny na nerovn´e pl´aˇzi . . . . . . . . . . . . . . . . . . . . Vlnov´e paprsky v z´atoce vytvoˇren´e pomoc´ı DWT . . . . . Pohled z´atoku z ptaˇc´ı perspektivy . . . . . . . . . . . . . Vlny v z´atoce . . . . . . . . . . . . . . . . . . . . . . . . .
xii
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
49 50 50 51 51 52 52
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . .
67 67 67 67 68 69 69 70 71 71 72 73 73 74 75 75
Seznam tabulek B.1 Tabulka symbol˚ u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xiii
59
xiv
´ KAPITOLA 1. UVOD
1
´ 1 Uvod Voda je jednou z nejrozˇs´ıˇrenˇejˇs´ıch l´atek na Zemi a zauj´ım´a 71% z celkov´eho povrchu. Cel´ ych 94% pak pˇripad´a na vodu slanou, tedy na moˇre a oce´any (viz.[20]). Po dlouh´a tis´ıcilet´ı je voda zdrojem obˇzivy a nelze se bez n´ı obej´ıt. Lidstvo vˇsak fascinuje hlavnˇe jej´ı vzhled a chov´an´ı. Vodn´ı hladina prakticky nez˚ ust´av´a klidn´a. Dynamika tekutin (kapaliny a plyny) je zkoum´ ana jiˇz po stalet´ı, a v´ ysledkem tohoto b´ad´an´ı je soustava neline´arn´ıch diferenci´aln´ıch rovnic zn´am´ ych jako Navier-Stokesovy rovnice (d´ale jen N-S). Jejich numerick´e ˇreˇsen´ı je vˇsak velmi n´aroˇcn´e, coˇz v minulosti vyluˇcovalo jejich pouˇzit´ı pro modelov´an´ı vodn´ıch povrch˚ u pomoc´ı poˇc´ıtaˇce. Vzniklo tedy mnoho alternativn´ıch technik, jenˇz si kladou za c´ıl co nejvˇetˇs´ı pˇribl´ıˇzen´ı k fyzik´ aln´ı realitˇe, pˇri co nejmenˇs´ı v´ ypoˇcetn´ı sloˇzitosti. Bohuˇzel ani souˇcasn´a PC nejsou schopna ˇreˇsit N-S rovnice v re´aln´em ˇcase, a tak nezb´ yv´a neˇz pouˇz´ıt nˇekterou z alternativn´ıch technik vhodnou pro konkr´etn´ı typ simulace napˇr. pro vlny na otevˇren´em moˇri, pˇri pobˇreˇz´ı, proudˇen´ı v ˇrece, p´ad pˇredmˇetu do vody apod. Pokud, ale nen´ı potˇreba simulovat vodu v re´aln´em ˇcase (napˇr. generov´an´ı fotorealistick´ ych obr´azk˚ u, nebo pˇredpoˇc´ıtan´e animace), je moˇzn´e vyuˇz´ıt N-S rovnic. V komerˇcn´ı sf´eˇre nach´azej´ı poˇc´ıtaˇcov´e modely tekutin uplatnˇen´ı pˇredevˇs´ım v trikov´ ych sc´en´ach klasick´ ych film˚ u, v animovan´ ych filmech, poˇc´ıtaˇcov´ ych hr´ach a virtu´aln´ı realitˇe. Jednotliv´a uplatnˇen´ı maj´ı rozd´ıln´e poˇzadavky. U film˚ u je kladen d˚ uraz na vzhled a dojem realistiˇcnosti. Sc´eny jsou pˇredpoˇc´ıtan´e. Naproti tomu u her je d˚ uleˇzit´a co nejvyˇsˇs´ı realistiˇcnost pˇri co nejniˇzˇs´ı v´ ypoˇcetn´ı n´aroˇcnosti. Tato vyuˇzit´ı vˇsak nevyˇzaduj´ı fyzik´alnˇe zcela korektn´ı modely, ˇc´ımˇz se otev´ıraj´ı ˇsirok´e moˇznosti pˇr´ıstup˚ u vhodn´ ych pro konkr´etn´ı specifick´e potˇreby. C´ılem t´eto pr´ace je implementovat techniku modelov´an´ı moˇrsk´ ych vln v mˇelk´e vodˇe (pˇri pobˇreˇz´ı) pouˇzitelnou pro virtu´aln´ı realitu a poˇc´ıtaˇcov´e hry. Zvolen´a metoda bude schopna simulovat jevy typick´e pro mˇelkou vodu, kter´ ymi je lom vln (angl. refraction) a pˇrekl´apˇen´ı vln (angl. breaking). Lom vln se projevuje zarovn´av´an´ım ˇcel vln k pobˇreˇz´ı a pˇrekl´apˇen´ı vln, pak hroucen´ım vrˇsk˚ u vln. Cel´a simulace bude prob´ıhat v re´aln´em ˇcase. Pr´ace nebude zahrnovat realistick´e renderovan´ı. Text je rozˇclenˇen do nˇekolika odd´ıl˚ u. N´asleduj´ıc´ı kapitola 2 obsahuje struˇcn´ y popis ˇreˇsen´eho probl´emu, vymezen´ı c´ıl˚ u pr´ace a poˇzadavk˚ u na implementaci. Kapitola 3 je urˇcena k sezn´amen´ı s charakteristikou a vznikem skuteˇcn´ ych vln vyskytuj´ıc´ıch se v moˇr´ıch a oce´anech. Jsou uvedeny i fyzik´aln´ı teorie popisuj´ıc´ı vlnˇen´ı na vodn´ı hladinˇe a z´akladn´ı informace o jej´ıch optick´ ych vlastnostech. Na z´avˇer je pak uvedeno nˇekolik zaj´ımavost´ı z pobˇreˇzn´ı geomorfologie. Dalˇs´ı kapitola 4 popisuje jednotliv´e modelovac´ı techniky pouˇz´ıvan´e v poˇc´ıtaˇcov´e grafice s d˚ urazem na implementovan´ y model, jehoˇz autory jsou Gonzato a Le Saˇec [8, 9, 4]. Vlastn´ı proveden´ı implementace je uvedeno v kapitole 5.
˚ PRACE ´ KAPITOLA 2. VYMEZEN´I C´ILU
2
2 Vymezen´ı c´ıl˚ u pr´ ace C´ılem t´eto pr´ace je prostudovat dostupnou literaturu zab´ yvaj´ıc´ı se simulacemi tekutin pomoc´ı v´ ypoˇcetn´ı techniky. D´ale pak na z´akladˇe zjiˇstˇen´ ych informac´ı a n´ıˇze uveden´ ych poˇzadavk˚ u, implementovat metodu pro generov´an´ı vln na vodn´ı hladinˇe pobl´ıˇz pobˇreˇz´ı a vytvoˇrit aplikaci, jenˇz umoˇzn´ı zobrazit animovan´ y model vodn´ı hladiny. V´ ysledn´ y model by mˇel splˇ novat n´asleduj´ıc´ı poˇzadavky: • moˇznost animace povrchu v re´aln´em ˇcase (aspoˇ n 30 FPS) • simulace lomu vln pˇri pobˇreˇz´ı v mˇelk´e vodˇe (lom v horizont´aln´ı rovinˇe) • schopnost modelovat pˇrekl´apˇen´ı vln (lom profilu vlny ve vertik´aln´ı rovinˇe) • tvar vln odpov´ıdaj´ıc´ı hloubce a sklonu moˇrsk´eho dna Vstupem metody bude v´ yˇskov´a mapa ter´enu vˇcetnˇe moˇrsk´eho dna a dalˇs´ı parametry, jenˇz definuj´ı poˇc´ateˇcn´ı podm´ınky simulace (napˇr. smˇer a rychlost ˇs´ıˇren´ı vln). V´ ystupem pak bude s´ıt’ troj´ uheln´ık˚ u reprezentuj´ıc´ı vodn´ı hladinu. Pro u ´ˇcely prezentace v´ ysledk˚ u bude vytvoˇrena aplikace, kter´a umoˇzn´ı zobrazit simulaci vodn´ı hladiny s moˇznost´ı nastaven´ı poˇc´ateˇcn´ıch podm´ınek simulace a volbu tvaru ter´enu. Renderov´an´ı sc´eny bude prov´adˇeno pomoc´ı OpenGL. Nebudou uvaˇzov´any speci´aln´ı optick´e vlastnosti vody.
KAPITOLA 3. VODA A JEJ´I HLADINA
3
3 Voda a jej´ı hladina Tato kapitola slouˇz´ı k sezn´amen´ı se z´akladn´ımi vlastnostmi kapalin a vln vyskytuj´ıc´ıch se na vodn´ı hladinˇe moˇr´ı a oce´an˚ u. Nejprve se budeme zab´ yvat obecn´ ymi vlastnostmi kapalin. D´ ale jsou uvedeny z´akladn´ı pojmy pouˇz´ıvan´e pro popis vln, jenˇz budou pouˇz´ıv´any po zbytek textu. N´asleduj´ı informace o vlastnostech vln, jejich vzniku a chov´an´ı s d˚ urazem na vlny, jenˇz budou pˇredmˇetem modelov´an´ı (vˇetrn´e). D´ale jsou uvedeny fyzik´aln´ı teorie popisuj´ıc´ı kinematiku a dynamiku kapalin. Pot´e se kr´atce zm´ın´ım o Optick´ ych vlastnostech vodn´ı hladiny. V z´avˇeru je pˇredloˇzeno p´ar zaj´ımavost´ı o pobˇreˇzn´ı geomorfologii (v´ yvoj povrchu pobˇreˇz´ı). Informace obsaˇzen´e v t´eto kapitole jsem ˇcerpal z [14, 17, 22, 11, 21, 7, 26, 5, 6, 25, 15, 23]
3.1
Z´ akladn´ı vlastnosti kapalin
Kapaliny se od pevn´ ych l´atek z hlediska vnitˇrn´ı struktury liˇs´ı t´ım, ˇze nejsou pevnˇe v´az´ any. Kapaliny nekladou t´emˇeˇr ˇz´adn´ y odpor proti vz´ajemn´emu oddˇelen´ı jednotliv´ ych ˇc´ast´ı, nemaj´ı vlastn´ı tvar a pˇrizp˚ usobuj´ı se tvaru n´adoby. Pokud mohou, tak vytv´aˇrej´ı voln´ y povrch (hladinu), kter´a je kolm´a k p˚ usob´ıc´ım sil´am (pˇrirozenˇe gravitaˇcn´ı s´ıla). Jsou velmi m´alo stlaˇciteln´e. Jsou visk´ozn´ı, mezi jednotliv´ ymi objemov´ ymi elementy kapaliny p˚ usob´ı teˇcn´e s´ıly. Definice 3.1.1 Viskozita je m´ıra vnitˇrn´ıho tˇren´ı pˇri lamin´arn´ım proudˇen´ı. V praxi rozliˇsujeme dynamickou a kinematickou viskozitu. Dynamick´a viskozita je souˇcinitel u ´mˇernosti mezi smykov´ ym napˇet´ım v tekutinˇe a gradientem rychlosti v tekutiny ve smˇeru kolm´em k ploˇse, na n´ıˇz napˇet´ı sledujeme. Oznaˇcujeme ji p´ısmenem η. Kinematick´a viskozita ν je definov´ana jako pomˇer dynamick´e viskozity η ku hustotˇe kapaliny ρ. Kv˚ uli zjednoduˇsen´ı v´ ypoˇct˚ u se vˇsak obvykle poˇc´ıt´a s tzv. ide´aln´ı kapalinou. Definice 3.1.2 Ide´ aln´ı kapalina je nestlaˇciteln´a, dokonale tekut´a kapalina bez vnitˇrn´ıho tˇren´ı, tedy s nulovou viskozitou. Je dokonale pruˇzn´a. Pohyb kapalin je d´an interakc´ı molekul v cel´em objemu. Dynamiku kapalin vyjadˇruj´ı N-S rovnice (podrobnˇeji viz. kap. 3.4). 3.1.1
Voda
Nejzn´amˇejˇs´ı kapalinou s prvoˇrad´ ym v´ yznamem pro ˇziv´e organismy na Zemi je voda. Je chemickou slouˇceninou vod´ıku a kysl´ıku. Na povrchu Zemˇe se nal´ez´a ve vˇsech tˇrech skupenstv´ıch. V plynn´em se naz´ yv´a p´ara, v pevn´em led a v kapaln´em voda. Pro vodu v kapaln´em stavu plat´ı v´ yˇse uveden´e vlastnosti. Za norm´aln´ı teploty a tlaku je to bezbarv´a, ˇcir´a kapalina bez z´apachu v silnˇejˇs´ı vrstvˇe namodral´a. M´a n´ızkou viskozitu1 tj. ≈ 0.001P a · s pˇri teplotˇe 20◦ C. Pro porovn´an´ı: olivov´ y olej m´a viskozitu ≈ 0.084P a · s. Pˇri v´ ypoˇctech obvykle viskozitu vody zanedb´av´ame a povaˇzujeme ji za ide´aln´ı kapalinu. N´as bude vˇsak nejv´ıce zaj´ımat vlnˇen´ı na vodn´ı hladinˇe. To je zp˚ usobeno interakc´ı ruˇsiv´ ych (napˇr. v´ıtr) a zklidˇ nuj´ıc´ıch sil (napˇr. gravitace). Pˇri tomto jevu vˇsak doch´az´ı pouze k pˇrenosu energie. Pˇri kr´atkodob´em pozorov´an´ı hladiny jsou nejn´apadnˇejˇs´ı vlny zp˚ usoben´e vˇetrem (nepoˇc´ıt´ ameli tsunami). Objemov´e elementy pˇri tomto druhu vln vykon´avaj´ı kruhov´ y pohyb kolem pevn´e pozice. Ten je moˇzn´e pˇribliˇznˇe popsat jednoduchou kinematikou (podrobnˇeji viz. kap. 3.4).
3.2
Definice z´ akladn´ıch pojm˚ u
Pˇredt´ım neˇz pˇristoup´ıme k popisu vzniku, chov´an´ı a tvaru vln, je nutn´e uv´est v´ yznam z´akladn´ıch term´ın˚ u pouˇz´ıvan´ ych k popisu vln, jenˇz budou d´ale v textu hojnˇe vyuˇz´ıv´any. 1
hodnoty viskozit jsou pˇrevzaty z www.converter.cz
KAPITOLA 3. VODA A JEJ´I HLADINA
4
Obr´azek 3.1: Obecn´ y popis vlny vrchol (hˇ reben) vlny lok´aln´ı maximum tvaru vlny dno (´ udol´ı) vlny lok´aln´ı minimum tvaru vlny ˇ celo vlny spojit´a kˇrivka tvoˇren´a hˇrebenem 3D vlny v´ yˇ ska vlny [H] v´ yˇskov´ y rozd´ıl mezi dnem vlny a sousedn´ım vrcholem vlny amplituda [A] polovina v´ yˇsky vlny (A = H/2) klidov´ a hladina pr˚ umˇern´a v´ yˇska vodn´ıho sloupce v klidov´em stavu hloubka [d] vzd´alenost mezi dnem a klidovou hladinou sklon dna [β] u ´hel mezi teˇcnou k povrchu dna oce´anu a vodorovnou pˇr´ımkou vlnov´ a d´ elka [λ] horizont´aln´ı vzd´alenost mezi vrcholy dvou po sobˇe jdouc´ıch vln perioda [T ] ˇcas, kter´ y zabere cel´e vlnˇe neˇz projde dan´ ym bodem. kruhov´ y pohyb vody orbita po n´ıˇz se pohybuje objemov´ y element vody u ´ hlov´ a rychlost [ω] rychlost kruhov´eho pohybu vody ω = 2π/T f´ azov´ a rychlost [C] rychlost pohybu vlny C = λ/T = ω/K vlnov´ y vektor [K] horizont´aln´ı vektor, kter´ y ukazuje smˇer ˇs´ıˇr´ıc´ı se vlny vlnov´ eˇ c´ıslo [K] velikost vektoru K sled vln s´erie vln ˇs´ıˇr´ıc´ıch se stejn´ ym smˇerem vlnov´ y paprsek kolmice (ortogon´ala) k ˇcelu vlny urˇcuj´ıc´ı smˇer ˇs´ıˇren´ı strmost [S] pomˇer S = H/λ, pokud dos´ahne hodnoty 1/7 zaˇcne se hˇreben vlny hroutit (uvedeno v [14])
3.3
Vlny na vodn´ı hladinˇ e
Vlny jenˇz m˚ uˇzeme pozorovat na vodn´ı hladinˇe jsou v´ ysledkem pˇren´aˇsen´ı energie od m´ısta naruˇsen´ı rovnov´ahy sil p˚ usob´ıc´ıch na hladinu. Nedoch´az´ı k pˇrenosu hmoty. Hladina moˇr´ı a oce´an˚ u je v neust´al´em pohybu a obvykle bud´ı dojem nahodilosti, coˇz je zp˚ usobeno bohat´ ym spektrem vln (viz. obr´azek 3.2) a dalˇs´ımi jevy, kter´ ymi jsou napˇr. difrakce, odraz a lom vln. Pˇri jejich studiu se tak pˇristupuje k jejich idealizaci, a povaˇzujeme je za sinusoid´aln´ı (teorie line´arn´ıch vln s malou amplitudou), ˇci trochoid´aln´ı (Gerstnerovy vlny).
KAPITOLA 3. VODA A JEJ´I HLADINA
5
Definice 3.3.1 Trochoida je mnoˇzina bod˚ u roviny, kter´ ymi proch´az´ı body kˇrivky a (tzv. tvoˇr´ıc´ı kˇrivky), kter´a se val´ı po pevn´e kˇrivce b (tzv. z´akladn´ı kˇrivce). Speci´aln´ım pˇr´ıpadem trochoidy je napˇr. cykloida (kruˇznice val´ıc´ı se po pˇr´ımce), kter´ a je pˇr´ıpadem ide´aln´ı pˇr´ımo se ˇs´ıˇr´ıc´ı vlny. Vlny se dˇel´ı na povrchov´e a vnitˇrn´ı. Povrchov´e vlny vznikaj´ı na rozhran´ı dvou tekutin v naˇsem pˇr´ıpadˇe voda-vzduch. Naopak vnitˇrn´ı vlny vznikaj´ı na hranic´ıch vodn´ıch vrstev s rozd´ılnou hustotou.
Obr´azek 3.2: Spektrum vln vyskytuj´ıc´ıch se na vodn´ı hladinˇe oce´an˚ u (pˇrevzato z [14]) Klasifikace vln je obvykle zaloˇzena na typu ruˇsiv´ ych a zklidˇ nuj´ıc´ıch sil. Ruˇsiv´ ymi silami jsou napˇr. v´ıtr, seismick´a aktivita. Ze zklidˇ nuj´ıc´ıch jmenujme napˇr. zemskou gravitaci a povrchov´e napˇet´ı. Rozezn´av´ame tyto typy vln: pˇ r´ılivov´ e - ruˇsivou silou je gravitace Slunce a Mˇes´ıce a rotace Zemˇe. Zklidˇ nuj´ıc´ı pak gravitace Zemˇe. Vyznaˇcuj´ı se velmi velkou vlnovou d´elkou a periodou. seismick´ e - t´eˇz zvan´e tsunami. Ruˇsivou silou je v tomto pˇr´ıpadˇe seismick´a aktivita (napˇr. podmoˇrsk´e sesuvy, vulkanick´e erupce). Zklidˇ nuj´ıc´ı silou je gravitace Zemˇe. Tyto vlny se vyznaˇcuj´ı se velmi velkou vlnovou d´elkou (u pobˇreˇz´ı aˇz nˇekolik kilometr˚ u), velkou amplitudou (u pobˇreˇz´ı i nˇekolik des´ıtek metr˚ u), vysokou rychlost´ı (u pobˇreˇz´ı aˇz stovky km/h) a bohuˇzel i drtiv´ ym dopadem na pobˇreˇzn´ı infrastrukturu. Vznik tˇechto vln ilustruje obr´azek 3.3. gravitaˇ cn´ı - ruˇsivou silou je v´ıtr foukaj´ıc´ı na vodn´ı hladinu a zklidˇ nuj´ıc´ı je zemsk´a gravitaˇcn´ı s´ıla. Pr´avˇe tento typ vln je nejˇcastˇeji modelov´an. kapil´ arn´ı - vlny s velmi malou vlnovou d´elkou a periodou. Vznikaj´ı p˚ usoben´ım vˇetru a zanikaj´ı u ´ˇcinkem povrchov´eho napˇet´ı. V modelech vodn´ı hladiny se obvykle modeluj´ı pomoc´ı bump-mappingu (viz. kap. 4.1.1). stojat´ e - zp˚ usoben´e napˇr. zmˇenami atmosf´erick´eho tlaku, nebo interferenc´ı vln ostatn´ı - vlny zp˚ usoben´e dalˇs´ımi vlivy, jako napˇr. lidsk´a ˇcinnost tj. exploze, pohyb lodi apod. Pozorujeme-li vodn´ı hladinu moˇre, ˇci oce´anu po nepˇr´ıliˇs dlouou dobu, zjist´ıme, ˇze nejv´ıc n´apadn´e jsou gravitaˇcn´ı a kapil´arn´ı vlny (patrn´e t´eˇz z obr´azku 3.2 vlnov´eho spektra), jenˇz se souhrnnˇe naz´ yvaj´ı vˇetrn´e, nebot’ jsou zp˚ usobeny fouk´an´ım vˇetru.
KAPITOLA 3. VODA A JEJ´I HLADINA
6
Obr´azek 3.3: Vznik seismick´e vlny (tsunami) (pˇrevzato z [14]) 3.3.1
Vznik vˇ etrn´ ych vln
Tyto vlny, jak jiˇz n´azev napov´ıd´a, vznikaj´ı p˚ usoben´ım vˇetru na vodn´ı hladinu. V´ıtr pˇred´av´a vznikaj´ıc´ım vln´am tak dlouho energii, dokud je jeho rychlost vˇetˇs´ı neˇz rychlost ˇs´ıˇren´ı vlny, z ˇcehoˇz vypl´ yv´a to, ˇze z´avis´ı i na d´elce trv´an´ı vˇetru (ˇc´ım delˇs´ı t´ım rozlehlejˇs´ı vlny) a vzd´alenosti po kterou si v´ıtr uchov´a konkr´etn´ı smˇer vanut´ı tzv. fetch (ˇc´ım vˇetˇs´ı t´ım rozlehlejˇs´ı vlny). Nejprve vznikaj´ı pouze mal´e kapil´arn´ı vlny, kter´e se postupnˇe rozv´ıjej´ı v gravitaˇcn´ı vlny. Vznik´an´ı vln je zachyceno na obr´azku 3.4 a obr´azku 3.5.
Obr´azek 3.4: Vznik´an´ı vˇetrn´ ych vln - vertik´aln´ı rovina (pˇrevzato z [14])
Obr´azek 3.5: Vznik´an´ı vˇetrn´ ych vln - horizobt´aln´ı rovina (pˇrevzato z [14]) Ke klasifikaci vˇetru se ˇcasto pouˇz´ıv´a tzv. Beaufortova stupnice s´ıly vˇetru. A to z toho d˚ uvodu, ˇze umoˇzn ˇuje odhad s´ıly (rychlosti) vˇetru dle projev˚ u na souˇsi, ˇci hladinˇe moˇre. Stupnice je
KAPITOLA 3. VODA A JEJ´I HLADINA
7
zobrazena na obr´azku 3.62 . Mnou uv´adˇen´a tabulka obsahuje i v´ yˇsku vln vyvolan´ ych vˇetrem.
Obr´azek 3.6: Beaufortova stupnice s´ıly vˇetru
3.3.2
ˇ ıˇ S´ ren´ı vln
Vˇetrn´e vlny jsou orbit´aln´ı, coˇz znamen´a to, ˇze pˇri ˇs´ıˇren´ı vlny jednotliv´e objemov´e elementy vody vykon´avaj´ı kruhov´ y pohyb kolem pevn´e pozice. D´ale plat´ı, ˇze se zvˇetˇsuj´ıc´ı se hloubkou tento pohyb ust´av´a a v hloubce vˇetˇs´ı jak λ/2 je prakticky nulov´ y. Tuto skuteˇcnost demonstruje obr´azek 3.7. D˚ usledkem toho se objemov´e elementy vody u hˇrebenu pohybuj´ı ve smˇeru ˇs´ıˇren´ı vlny a u dna v proti smˇeru. Pokud spolu jednotliv´e vlny interferuj´ı pak doch´az´ı k jejich skl´ad´ an´ı podle principu superpozice.
Obr´azek 3.7: Kruhov´ y pohyb vody, pˇri ˇs´ıˇren´ı vlny (pˇrevzato z [14]) Vzhledem k tomu, ˇze vlnˇen´ı nen´ı jen povrchov´e, m˚ uˇze m´ıt aktu´aln´ı hloubka vody vliv na tvar samotn´ ych vln i smˇer jejich ˇs´ıˇren´ı. Z tohoto d˚ uvodu se zav´ad´ı klasifikace dle hloubky a vlnov´e d´elky: hlubok´ a - d/λ ≥ 1/2, vlny nejsou deformov´any dnem a nemˇen´ı se smˇer jejich ˇs´ıˇren´ı pˇ rechodn´ a - 1/2 > d/λ > 1/20, dno zaˇc´ın´a m´ıt vliv na tvar vlny a postupnˇe se prosazuje lom v horizont´aln´ı rovinˇe 2
Tabulka byla pˇrevzata z http://www.converter.cz
KAPITOLA 3. VODA A JEJ´I HLADINA
8
mˇ elk´ a - d/λ ≤ 1/20, vlny jsou silnˇe deformov´any dnem, doch´az´ı k lomu v horizont´aln´ı i vertik´aln´ı rovinˇe Obr´azek 3.8 demonstruje zmˇenu tvaru orbit kruhov´eho pohybu podle hloubky a vlnov´e d´elky.
Obr´azek 3.8: Tvar vlnov´ ych orbit vzhledem ke klasifikaci dle hloubky a vlnov´e d´elky (pˇrevzato z [14])
3.3.2.1
Vlny na hlubok´ e vodˇ e
Jak jiˇz bylo v´ yˇse uvedeno, tak u vln na hlubok´e vodˇe nedoch´az´ı k deformaci orbit kruhov´eho pohybu vody. Pr˚ umˇer orbity u hladiny odpov´ıd´a amplitudˇe vlny a s rostouc´ı hloubkou kles´a exponenci´alnˇe. V hloubce rovn´e polovinˇe vlnov´e d´elky jej jiˇz lze zanedbat (viz. obr´azek 3.8a). Tvar a smˇer ˇs´ıˇren´ı vlny nen´ı ovlivˇ nov´an moˇrsk´ ym dnem. Tento typ vln je moˇzn´e simulovat na poˇc´ıtaˇci i v re´aln´em ˇcase na z´akladˇe znalosti spektra vln, vyskytuj´ıc´ıch se na moˇrsk´e hladinˇe. Toto spektrum je obvykle sestrojeno na z´akladˇe oce´anografick´eho v´ yzkumu. 3.3.2.2
Vlny na pˇ rechodn´ e a mˇ elk´ e vodˇ e
V pˇr´ıpadˇe, ˇze se vlna pˇribl´ıˇz´ı k pobˇreˇz´ı a hloubka vody klesne na 1/2 vlnov´e d´elky, zaˇcne se mˇenit tvar vlny i smˇer ˇs´ıˇren´ı. Nejprve si pop´ıˇseme zmˇeny v profilu vlny (vertik´aln´ı rovina), kter´e mohou vy´ ustit aˇz v pˇrekl´apˇen´ı vln. Pot´e se zamˇeˇr´ıme na zmˇeny v ˇs´ıˇren´ı vlny (horizont´aln´ı rovina), kde doch´az´ı k lomu a ˇcela vln se zarovn´avaj´ı s konturou pobˇreˇz´ı. Pokud budeme studovat tvar profilu vlny, zjist´ıme to, ˇze hˇreben se v r´amci vlny postupnˇe posunuje st´ale v´ıce ve smˇeru ˇs´ıˇren´ı vlny s t´ım jak kles´a hloubka dna. To je zp˚ usobeno t´ım, ˇze
KAPITOLA 3. VODA A JEJ´I HLADINA
9
dno zaˇc´ın´a st´ale v´ıce ovlivˇ novat tvar vlny. Kruhov´e orbity mˇen´ı na eliptick´e a orientuj´ı se dle sklonu dna. Tento jev je patrn´ y z obr´azku 3.8b,c a obr´azku 3.9.
Obr´azek 3.9: Zmˇena tvaru ˇcela vln v mˇelk´e vodˇe (pˇrevzato z [14]) Mˇen´ı se i dalˇs´ı charakteristiky. Zvˇetˇsuje se amplituda. Stoupaj´ıc´ı moˇrsk´e dno postupnˇe vlnu zpomaluje, ale perioda z˚ ust´av´a stejn´a. D´ale zp˚ usobuje zkracov´an´ı vlnov´e d´elky. D´ıky tomu se m˚ uˇze nakonec st´at to, ˇze vlna je natolik strm´a, ˇze povrchov´e napˇet´ı vody neudrˇz´ı tvar hˇrebenu vlny, a ta se pak zhrout´ı nebo pˇreklop´ı. Literatura uv´ad´ı, ˇze k tomu doch´az´ı, pˇrekroˇc´ı-li strmost hodnotu 1/7 nebo pˇrekroˇc´ı-li u ´hlov´a rychlost ω kruhov´eho pohybu vody rychlost ˇs´ıˇren´ı vlny C. Tvar takov´eto vlny je z´avisl´ y na velikosti sklonu moˇrsk´eho dna (viz. obr´azek 3.10). Pˇreklopen´ım nebo kolapsem vlny se zmˇen´ı charakter vlnˇen´ı. Stane se turbulentn´ım a jeho chov´an´ı je tˇeˇzko pˇredv´ıdateln´e a nelze pracovat s idealizac´ı vlnˇen´ı. Pˇrekl´apˇen´ı a n´asledn´e turbulentn´ı chov´an´ı je prov´azeno vznikem vodn´ı tˇr´ıˇstˇe.
Obr´azek 3.10: Typ pˇrekl´apˇej´ıc´ıch se vln v z´avislosti na sklonu dna (pˇrevzato z [14])
10
KAPITOLA 3. VODA A JEJ´I HLADINA
Nyn´ı se pod´ıvejme, jak se mˇen´ı smˇer ˇs´ıˇren´ı vlny pˇribl´ıˇz´ı-li se k pobˇreˇz´ı (hloubka vody klesne pod 1/2 vlnov´e d´elky). Pokud se takov´a vlna doposud pohybovala jin´ ym smˇerem neˇz pˇr´ımo k pobˇreˇz´ı, zaˇcne ˇc´ast z n´ı zpomalovat vlivem zmenˇsov´an´ı hloubky. Vlna se tak zaˇcne oh´ ybat ˇ k pobˇreˇz´ı. Ten to jev se naz´ yv´a lom vlny (angl. refraction). Celo vlny se srovn´av´a s konturou pobˇreˇz´ı (viz. obr´azek 3.11).
Obr´azek 3.11: Lom vln - horizont´aln´ı rovina (pˇrevzato z [14]) V oblastech, kde pevnina ostˇre vyˇcn´ıv´a (mys) se soustˇred’uje energie vlny (amplituda vzroste) a naopak v oblastech z´atok se energie rozpt´ yl´ı do prostoru (amplituda klesne). Lom vln v tˇechto pˇr´ıpadech demonstruje obr´azek 3.12.
Obr´azek 3.12: Lom vln - horizont´aln´ı rovina (mys a z´atoka) (pˇrevzato z [14]) Dalˇs´ımi jevy, kter´e ovlivˇ nuj´ı vlnˇen´ı na vodn´ı hladinˇe jsou odraz (angl. reflection) a difrakce (angl. diffraction). Oba jevy jsou spojen´e s v´ yskytem pˇrek´aˇzek jak´ ymi jsou napˇr. pˇr´ıstavn´ı mola a hr´aze. Pokud vlna naraz´ı na takovou pˇrek´aˇzku, pak se od n´ı odraz´ı dle u ´hlu, pod kter´ ym dopad´a (z´akon odrazu). Odraˇzen´a vlna pak interferuje s pˇr´ıchoz´ımi vlnami, a pˇred pˇrek´aˇzkou tak m˚ uˇze vznikat stojat´e vlnˇen´ı. Naopak m˚ uˇze-li se vlna ˇs´ıˇrit i za pˇrek´aˇzku, pak za n´ı doch´az´ı k difrakci. Takov´a situace je zachycena na obr´azku 3.13
KAPITOLA 3. VODA A JEJ´I HLADINA
11
Obr´azek 3.13: Difrakce vlny za pˇrek´aˇzkou (pˇrevzato z [14])
3.4
Fyzik´ aln´ı teorie
C´ılem t´eto pr´ace je modelov´an´ı vln na vodn´ım povrchu. Zaj´ımav´a je tedy pro n´as mechanika, coˇz je obor fyziky zab´ yvaj´ıc´ı se mechanick´ ym pohybem, tedy pˇrem´ıst’ov´an´ım tˇeles v prostoru a ˇcase a zmˇenami velikost´ı a tvar˚ u tˇeles. Fyzik´aln´ımi vlastnostmi kapalin v klidu i za pohybu, strukturou proudˇen´ı i vz´ajemn´eho p˚ usoben´ı kapalin a pevn´ ych tˇeles se zab´ yv´a ˇc´ast mechaniky, kter´a se jmenuje hydromechanika. Dˇel´ı se na hydrostatiku, kter´a se zab´ yv´a chov´an´ım kapaliny v klidu, a hydrodynamiku, kter´a popisuje kapalinu v pohybu. Teorie, kter´e si uvedeme se d´ ale jeˇstˇe daj´ı rozdˇelit do dvou skupin, a sice na kinematiku a dynamiku. Kinematika se zab´ yv´ a klasifikac´ı a popisem r˚ uzn´ ych druh˚ u pohybu, ale nezab´ yv´a se jeho pˇr´ıˇcinami. Naproti tomu dynamika zkoum´a pohyb z hlediska p˚ usoben´ı sil. Z teori´ı snaˇz´ıc´ıch se popsat chov´an´ı tekutin uvedu pouze ty, kter´e se vyuˇz´ıvaj´ı pˇri modelov´ an´ı vlnˇen´ı na vodn´ı hladinˇe. Z kinematick´ ych je to teorie line´arn´ıch vln s malou amplitudou a Gerstnerovy vlny. Obˇe tyto teorie neumoˇzn ˇuj´ı popsat chov´an´ı vln v pˇrechodn´e a mˇelk´e vodˇe, avˇsak lze pomoc´ı nich toto chov´an´ı aproximovat (viz. 3.4.1.3). Z dynamiky uv´ad´ım NavierStokesovy rovnice, pomoc´ı kter´ ych lze popsat vlnˇen´ı na vodn´ı hladinˇe pˇri libovoln´e hloubce vody. Aby nedoˇslo k myln´ ym interpretac´ım uvedu nyn´ı zp˚ usob oznaˇcov´an´ı 3D souˇradnic, jenˇz bude pouˇzit v cel´em textu, nebude-li v´ yslovnˇe uvedeno jinak. Vodorovnou osu budeme naz´ yvat x, svislou y a smˇerem k ˇcten´aˇri z (viz. obr. 3.14). tento zp˚ usob odpov´ıd´a zvyklostem z OpenGL.
Obr´azek 3.14: Oznaˇcen´ı 3D souˇradnic
3.4.1
Kinematika
V t´eto ˇc´asti si nejdˇr´ıve pop´ıˇseme obˇe teorie (teorie line´arn´ıch vln a Gerstnerovy vlny) s uveden´ım pˇr´ıklad˚ u aplikace, a pot´e se zamˇeˇr´ıme na aproximaci chov´an´ı na pˇrechodn´e a mˇelk´e vodˇe. Za pˇredpokladu, ˇze proudˇen´ı je sloˇzeno ze zanedbatelnˇe velik´ ych objemov´ ych element˚ u kapa-
KAPITOLA 3. VODA A JEJ´I HLADINA
12
liny, budeme jej v pˇr´ıpadˇe vln na vodn´ı hladinˇe intuitivnˇe povaˇzovat za nev´ıˇriv´e. Kaˇzd´ y element se m˚ uˇze nanejv´ yˇse pohybovat po kruhov´e dr´aze, pˇriˇcemˇz nesm´ı rotovat kolem sv´e vlastn´ı osy. Matematicky lze nev´ıˇriv´e proudˇen´ı popsat rovnic´ı (3.1). rot v =
∂u ∂v − =0, ∂x ∂y
(3.1)
pˇriˇcemˇz v je vektor rychlosti, (x, y) jsou souˇradnice bodu ve 2D souˇradnicov´em syt´emu a u, v jsou sloˇzky vektoru rychlosti v. 3.4.1.1
Line´ arn´ı vlny s malou amplitudou
Tato teorie je pomˇernˇe jednoduch´a a jej´ı platnost je omezena na n´asleduj´ıc´ı podm´ınky: hustota kapaliny je konstantn´ı, proudˇen´ı je nev´ıˇriv´e a uniform´ı. Amplituda je povaˇzovan´a za malou pokud plat´ı to, ˇze strmost S = 1/20 (dle [17]). Definice 3.4.1 Uniformn´ı proudˇ en´ı ch´apeme v tomto kontextu jako takov´e, pˇri kter´em se horizont´aln´ı rychlost vlny C nemˇen´ı s vertik´aln´ı hloubkou. To tedy znamen´a, ˇze objemov´ y element na povrchu kapaliny m´a stejnou rychlost, jako jak´ ykoliv element pˇr´ımo pod n´ım. V´ yˇse uveden´e podm´ınky omezuj´ı platnost t´eto teorie na vlny na hlubok´e vodˇe, nebot’ v pˇrechodn´e a mˇelk´e vodˇe se proudˇen´ı st´av´a neuniform´ı. Teorie nen´ı schopna pˇredpovˇedˇet pˇrekl´apˇen´ı vln. Vlnˇen´ı na povrchu vodn´ı hladiny je aproximov´ano superpozic´ı jednoduch´ ych sinusoidn´ıch sled˚ u vln. N´asleduj´ıc´ı funkce f viz. (3.2) popisuje sled vln ˇs´ıˇr´ıc´ı na 1D povrchu: f (x, t) = A sin (Kx − ωt) ,
(3.2)
kde K je vlnov´e ˇc´ıslo, a plat´ı pro nˇej: K = 2π/λ. Promˇenn´a ω je u ´hlov´a rychlost a plat´ı pro n´ı: ω = KC, kde C je rychlost ˇs´ıˇren´ı vlny. A je amplituda, x je souˇradnice a t je ˇcas. Superpozici sled˚ u lze pak vyj´adˇrit n´asledovnˇe: f (x, t) =
n X
Ai sin (Ki x − ωi t) ,
(3.3)
i=1
kde n je poˇcet sled˚ u vln. Funkci f viz. (3.3) lze, pro 2D povrch, zobecnit zaveden´ım smˇerov´ ych promˇenn´ ych q a r. Funkce je pak definov´ana takto: f (x, z, t) =
n X
Ai sin(qi x + ri z − ωi t)
qi2 + ri2 = Ki2 .
(3.4)
i=1
Teorii line´arn´ıch vln vyuˇzil pro modelov´an´ı vodn´ıho povrchu Nelson Max (viz. 4.2.1) a Ts’o s Barskym (viz. 4.2.2). Pˇriˇcemˇz Ts’o a Barsky brali v u ´vahu i Aproximaci chov´an´ı v pˇrechodn´e a mˇelk´e vodˇe. 3.4.1.2
Gerstnerovy vlny
Autorem t´eto teorie je, jak jiˇz z n´azvu vypl´ yv´a, Frantiˇsek Anton´ın Gerstner (*1756 - †1832)3 . Tato teorie popisuje periodick´e vlny koneˇcn´e v´ yˇsky na hlubok´e vodˇe. Povrch je pops´an pohybem jednotliv´ ych objemov´ ych element˚ u vody, kter´e ob´ıhaj´ı po kruhov´ ych drah´ach okolo pevn´e pozice. Jejich profil tvoˇr´ı trochoid (viz. obr. 3.15). Bohuˇzel se uk´azalo, ˇze vytvoˇren´e pole rychlost´ı je v´ıˇriv´e, ˇc´ımˇz ztr´ac´ı tato teorie na v´ yznamu. ˇ P˚ uvodem ˇcesk´ y fyzik a inˇzen´ yr, jenˇz se zaslouˇzil o vytvoˇren´ı praˇzsk´e polytechniky (dneˇsn´ıho Cesk´ eho vysok´eho uˇcen´ı technick´eho v Praze), ve kter´e byl i ˇreditelem. Byl v´ yznamnou osobnost´ı sv´e doby a v nˇekter´ ych ohledech pˇredbˇehl svou dobu. 3
KAPITOLA 3. VODA A JEJ´I HLADINA
13
Pokud oznaˇc´ıme bod pevn´e pozice na klidn´e hladinˇe jako x0 = (x0 , y0 , z0 ) a jeho v´ yˇsku y0 = 0, pak vlna proch´azej´ıc´ı touto pevnou pozic´ı s amplitudou A v ˇcase t vypad´a n´asledovnˇe:
x = x0 − (K/K)A sin (Kx0 − ωt) y = A cos (Kx0 − ωt) ,
(3.5)
kde K je vlnov´ y vektor a K = 2π/λ je vlnov´e ˇc´ıslo. Promˇenn´a ω je u ´hlov´a rychlost a plat´ı pro ni: ω = KC, kde C je rychlost ˇs´ıˇren´ı vlny.
Obr´azek 3.15: Trochoid´aln´ı profil Gerstnerovy vlny (pˇrevzato z [7]) Tvar Gerstnerovy vlny je z´avisl´ y na souˇcinu K · A (viz. obr. 3.16). Pokud je K · A > 1 (velk´ a strmost vlny), vytv´aˇrej´ı se na vrcholc´ıch vln smyˇcky, kter´e se v pˇr´ırodˇe nevyskytuj´ı. Tento probl´em se vˇsak u vln na hlubok´e vodˇe neprojevuje, nebot’ zde plat´ı to, ˇze strmost vlny je n´ızk´a.
Obr´azek 3.16: Zmˇena tvaru Gerstnerovy vlny v z´avislosti na souˇcinu K · A (pˇrevzato z [7])
KAPITOLA 3. VODA A JEJ´I HLADINA
14
Gerstnerovy vlny, tak jak jsou vyj´adˇreny rovnicemi (3.5), popisuj´ı jen jeden sled vln. Komplexnˇejˇs´ı vodn´ı hladiny se dosahuje superpozic´ı jednotliv´ ych vln. Vych´az´ıme-li z mnoˇziny vlnov´ ych vektor˚ u Ki , amplitud Ai , u ´hlov´ ych rychlotst´ı ωi a f´azov´ ych posuv˚ u φi , jenˇz charakterizuj´ı i vln, dost´av´ame n´asleduj´ıc´ı rovnice:
x = x0 −
n X
(Ki /Ki )Ai sin (Ki x0 − ωi t + φi )
i=1
y =
n X
Ai cos (Ki x0 − ωi t + φi ) .
(3.6)
i=1
Tuto teorii je moˇzn´e pouˇz´ıt pˇr´ımo k modelov´an´ı vln na hlubok´e vodˇe, avˇsak dnes jsou pro tyto u ´ˇcely uzn´avanˇejˇs´ı statistick´e modely zaloˇzen´e na rozkladu spektra vln z´ıskan´eho pomoc´ı oce´anografick´eho v´ yzkumu. Po aplikaci aproximace chov´an´ı vln na pˇrechodn´e a mˇelk´e vodˇe vyuˇzili tuto teorii pro modelov´an´ı vodn´ı hladiny Fournier a Reeeves (viz. 4.2.6) a Gonzato a Le Sa¨ec (viz. 4.2.7). 3.4.1.3
Aproximace chov´ an´ı vln na pˇ rechodn´ e a mˇ elk´ e vodˇ e
Gerstnerovy vlny a teorie line´arn´ıch vln s malou amplitudou jsou platn´e pouze pro vlny na hlubok´e vodˇe. Avˇsak obˇe teorie jsou natolik jednoduch´e, ˇze je moˇzn´e je upravit a aproximovat pomoci nich chov´an´ı vln na pˇrechodn´e a mˇelk´e vodˇe, kde doch´az´ı ke zpomalov´an´ı vlny (kles´a ´ f´ azov´a rychlost C) a zkracov´an´ı vlnov´e d´elky λ vlivem klesaj´ıc´ı hloubky vody. Uhlov´ a rychlost ω se nemˇen´ı. Toto chov´an´ı popisuje n´asleduj´ıc´ı rovnice pro vlnovou d´elku λ v z´avislosti na zmˇenˇe hloubky vody d (uvedeno v [26]): λ=
gT 2 2πd tanh , 2π λ
(3.7)
kde T je perioda a g je t´ıhov´e zrychlen´ı (viz. pˇr´ıloha B). Tato rovnice lze jen obt´ıˇznˇe ˇreˇsit a je nutn´e pouˇz´ıt numerickou metodu. Rychlost ˇs´ıˇren´ı vlny C lze vyj´adˇrit takto: C=
λ gT 2πd = tanh . T 2π λ
(3.8)
Pokud do rovnice (3.8) dosad´ıme za periodu T = λ/C a K = 2π/λ nahrad´ıme vlnov´ ym ˇc´ıslem dostaneme: C2 =
g tanh Kd . K
(3.9)
Pokud se vlna ˇs´ıˇr´ı na hlubok´e vodˇe (d/λ ≥ 1/2) pak plat´ı: tanh Kd ≈ 1 =⇒ C 2 =
g . K
(3.10)
ˇıˇr´ı-li se naopak vlna na mˇelk´e vodˇe (d/λ ≤ 1/20) pak plat´ı: S´ tanh Kd ≈ Kd =⇒ C 2 = gd .
(3.11)
Pro vlny na pˇrechodn´e vodˇe (1/2 > d/λ > 1/20) plat´ı p˚ uvodn´ı rovnice (3.9). Z rovnic (3.10) a (3.11) je vidˇet, ˇze rychlost vlny na hlubok´e vodˇe nez´avis´ı na hloubce vody a u vlny na mˇelk´e vodˇe naopak nez´avis´ı na vlnov´e d´elce.
KAPITOLA 3. VODA A JEJ´I HLADINA 3.4.2
15
Dynamika
Dynamiku kapalin popisuje tzv. Navier-Stokesova rovnice (angl. Navier-Stokes equation), kter´a vyjadˇruje rovnov´ahu sil p˚ usob´ıc´ıch na element proud´ıc´ı visk´ozn´ı nestlaˇciteln´e kapaliny, uvaˇzujeme tedy i vliv tˇrec´ıch sil. Tuto rovnici odvodil Navier v roce 1827 a nez´avisle na nˇem jin´ ym zp˚ usobem Stokes v roce 1845. Claude Louise M.H. Navier (*1787-†1836) byl francouzsk´ y matematik a George Gabriel Stokes (*1819-†1903) byl anglick´ y matematik a fyzik. Jedn´a se o vektorovou diferenci´aln´ı rovnici. Obecnˇe nen´ı analyticky ˇreˇsiteln´a, chceme-li ji ˇreˇsit analyticky, mus´ıme se omezit na nˇekter´e zjednoduˇsen´e pˇr´ıpady. Nal´ezt ˇreˇsen´ı obecnˇejˇs´ıch pˇr´ıpad˚ u pak um´ıme pouze numericky a tedy pˇribliˇznˇe. Vlastn´ı N-S rovnice vypad´a n´asledovnˇe: ∂v 1 + v · grad v = f − · grad p − ν · ∆v . ∂t ρ
(3.12)
V´ yznam jednotliv´ ych ˇclen˚ u je n´asleduj´ıc´ı: ∂∂ vt je m´ıstn´ı (lok´aln´ı) zrychlen´ı, v · grad v je konvektivn´ı zrychlen´ı, vektor f je objemov´e zrychlen´ı zp˚ usoben´e vnˇejˇs´ımi objemov´ ymi silami, ρ1 ·grad p je zrychlen´ı zp˚ usoben´e tlakov´ ym sp´adem (gradientem), ν · ∆v je zrychlen´ı potˇrebn´e k pˇrekon´ an´ı visk´ozn´ıho tˇren´ı tekutiny. V´ yznam symbol˚ u je n´asleduj´ıc´ı: v je rychlost, t je ˇcas, p je tlak, ρ je hustota, ν je kinematick´ a viskozita, grad je gradient a ∆ je Laplace˚ uv oper´ator.
3.5
Optick´ e vlastnosti
Vodn´ı povrch nen´ı zaj´ımav´ y jen sv´ ym tvarem, ale i optick´ ymi vlastnostmi. Podle toho co se dˇeje s paprsky svˇetla dopadaj´ıc´ımi na hladinu rozezn´av´ame dva d˚ uleˇzit´e jevy. Jedn´ım je odraz paprsk˚ u a druh´ ym je lom paprsk˚ u a n´ım spojen´a propustnost vodn´ıho rozhran´ı. Vlastnosti vodn´ı hladiny jsou vˇsak z´avisl´e i na u ´hlu pohledu. Tento jev studoval A.J. Fresnel a jeho rovnice d´ avaj´ı do souvislosti intenzitu odrazu (tzv. odrazivost) a intenzitu lomu (tzv. propustnost) rozhran´ı. Vzhledem k tomu, ˇze nen´ı c´ılem t´eto pr´ace realistick´e renderov´an´ı vodn´ıho povrchu, uvedu jen struˇcn´e informace o optick´ ych jevech.
Obr´azek 3.17: Odraz a lom paprsk˚ u svˇetla na vodn´ı hladinˇe (pˇrevzato z [23])
KAPITOLA 3. VODA A JEJ´I HLADINA
16 3.5.1
Odraz
Odraz svˇeteln´ ych paprsk˚ u od povrchu vodn´ı hladiny je t´emˇeˇr zrcadlov´ y a ˇr´ıd´ı se z´akonem odrazu a dopadu, coˇz znamen´a to, ˇze u ´hel dopadu Θd je stejn´ y jako u ´hel odrazu Θo (viz. obr. 3.17). ´ Odraˇzen´ y paprsek z˚ ust´av´a v rovinˇe dopadu. Uhel odrazu je nez´avisl´ y na frekvenci svˇeteln´eho paprsku. 3.5.2
Lom
V pˇr´ıpadˇe lomu svˇeten´ ych paprsk˚ u je situace sloˇzitˇejˇs´ı. To jak se bude paprsek l´amat z´avis´ı jednak na u ´hlu pod kter´ ym paprsek dopad´a na rozhran´ı (vodn´ı hladina), ale tak´e na indexech lomu4 jednotliv´ ych prostˇred´ı. Rovnice popisuj´ıc´ı Snell˚ uv z´akon vypad´a n´asledovnˇe: nd sin Θd = nl sin Θl ,
(3.13)
kde Θd je u ´hel dopadu paprsku, nd je index lomu prostˇred´ı z kter´eho paprsek pˇrich´az´ı (v naˇsem pˇr´ıpadˇe vzduch =⇒ nd ≈ 1), Θl je u ´hel lomu paprsku a nl je index lomu prostˇred´ı, do kter´eho paprsek vstupuje (v naˇsem pˇr´ıpadˇe voda =⇒ nl ≈ 1.33) (viz. obr. 3.17). 3.5.3
Fresnelovy rovnice
Vzhled vodn´ı hladiny silnˇe z´avis´ı na u ´hlu pohledu, pod kter´ ym se na hladinu d´ıv´ame. Pokud hled´ıme pˇr´ımo pod sebe na vodn´ı hladinu a jeli voda ˇcist´a a nepˇr´ıliˇs hlubok´a, pak vid´ıme jasnˇe dno, avˇsak pokud se pod´ıv´ame do d´alky, bud´ı vodn´ı hladina dojem zrcadla odr´aˇzej´ıc´ıho okol´ı. Tento jev studoval Augustin Jean Fresnel (*1788-†1827) a jeho rovnice (tzv. Fresnelovy rovnice) d´avaj´ı do souvislosti koeficienty, jenˇz popisuj´ı efektivitu odrazu R (odrazivost) a lomu T (propustnost). Vzhledem k tomu, ˇze plat´ı to, ˇze se na rozhran´ı neztr´ac´ı ˇz´adn´e svˇetlo, pak plat´ı jednoduch´a rovnice: Rk + T k = 1 .
(3.14)
Koneˇcn´ y vztah pro Rk je podle Tessendorfa [25] n´asleduj´ıc´ı: 1 Rk = 2
sin2 (Θd − Θl ) tan2 (Θd − Θl ) + sin2 (Θd + Θl ) tan2 (Θd + Θl )
!
,
(3.15)
pˇriˇcemˇz v´ yznam symbol˚ u odpov´ıd´a pˇredchoz´ım pouˇzit´ım (viz. obr. 3.17).
3.6
Vliv na pobˇ reˇ zn´ı geomorfologii
V t´eto ˇc´asti se chci jen velmi zevrubnˇe zm´ınit o formov´an´ı pobˇreˇz´ı, aby ˇcten´aˇr z´ıskal pˇredstavu o tom jak vypad´a typick´ y tvar pobˇreˇz´ı, a to z toho d˚ uvodu, ˇze pokud nejsou k dispozici pˇresn´e mapy dna, je nutn´e vytvoˇrit vlastn´ı model, nebot’ bez znalosti tvaru dna pˇri pobˇreˇz´ı, nelze korektnˇe modelovat vlny na vodn´ı hladinˇe. Detaily o vlivu hloubky vody lze nal´ezt v kapitole 3.3.2.2. Pobˇreˇz´ı lze povaˇzovat za doˇcasnou strukturu, nebot’ velmi ˇcasto proch´azej´ı rapidn´ımi zmˇenami. Poloha pobˇreˇz´ı je z´avisl´a na tektonick´e aktivitˇe a u ´rovni vodn´ı hladiny. Tvar pobˇreˇz´ı je v´ ysledkem mnoha proces˚ u. Pˇr´ırodn´ı pobˇreˇz´ı lze rozdˇelit do dvou skupin a sice na erozn´ı a usazeninov´ y. Typick´ ym m´ıstem erozn´ıho p˚ usoben´ı jsou oblasti, kde tvrd´e a kamenit´e pobˇreˇz´ı ostˇre vystupuje do vody (mys). Zde doch´az´ı k soustˇredov´an´ı energie vln. Naopak usazeniny jsou typick´e pro pl´aˇze, kde doch´az´ı k rozptylu energie vln (viz. obr. 3.12). 4
Index lomu je pomˇer c/v tedy rychlosti svˇetla ve vakuu ku rychlosti svˇetla v dann´em prostˇred´ı
KAPITOLA 3. VODA A JEJ´I HLADINA
17
Usazeniny v oblasti pl´aˇz´ı jsou sloˇzeny z lok´alnˇe dostupn´ ych materi´al˚ u. Velikost ˇc´asteˇcek, kter´e je tvoˇr´ı, z´avis´ı pˇredevˇs´ım na sklonu dna, a to tak, ˇze ˇc´ım je sklon vˇetˇs´ı, t´ım sou vˇetˇs´ı i jednotliv´e ˇc´asteˇcky. Kamenit´e pl´aˇze maj´ı tedy nejvˇetˇs´ı sklon dna, zat´ımco pl´aˇze s jemn´ ym p´ıskem maj´ı sklon dna velmi mal´ y. Pro n´azornost uv´ad´ım tabulku 3.18, kde jsou uvedeny velikosti ˇc´asteˇcek usazenin a jim odpov´ıdaj´ıc´ı sklon moˇrsk´eho dna.
Obr´azek 3.18: Sklon moˇrsk´eho dna podle velikosti ˇc´asteˇcek usazenin (pˇrevzato z [14]) Vlastn´ı tvar dna se mˇen´ı i v pr˚ ubˇehu roˇcn´ıch obdob´ı. Zat´ımco n´ızk´e letn´ı vlny pˇren´aˇsej´ı usazeniny bl´ıˇze k pevninˇe, tak naopak zimn´ı vysok´e vlny zp˚ usobuj´ı erozi nebot’ odn´aˇsej´ı usazeniny z pevniny (viz. obr. 3.19).
Obr´azek 3.19: Pˇresun usazenin dle roˇcn´ıch obdob´ı (pˇrevzato z [14]) Z´avˇerem bych shrnul v´ yˇse uveden´e poznatky do p´ar slov. Typick´ y pr˚ ubˇeh moˇrsk´eho dna pl´ aˇz´ı je n´asleduj´ıc´ı: pobl´ıˇz pevniny je sklon moˇrsk´eho dna pomˇernˇe mal´ y (cca. 1 − 24◦ ) a v m´ıstech, kde jsou pozorov´any pˇrekl´apˇej´ıc´ı vlny pak doch´az´ı k n´ahl´emu zv´ yˇsen´ı sklonu a hloubka vody prudce stoup´a. Jako pˇr´ıklad uv´ad´ım obr´azek 3.20, kde je zobrazena situace typick´e pl´aˇze v obou extr´emn´ıch situac´ıch a to v pˇr´ıpadˇe maxim´aln´ıho pˇr´ılivu a odlivu.
18
KAPITOLA 3. VODA A JEJ´I HLADINA
Obr´azek 3.20: Typick´ y tvar moˇrsk´eho dna u pobˇreˇz´ı (pˇrevzato z [14])
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
19
4 Modelov´ an´ı vln v poˇ c´ıtaˇ cov´ e grafice Tato kapitola si klade za c´ıl popsat z´akladn´ı techniky pouˇz´ıvan´e pro simulaci tekutin pomoc´ı v´ ypoˇcetn´ı techniky, kter´e umoˇzn ˇuj´ı modelovat vlny na vodn´ı hladinˇe. Nutno dodat, ˇze vˇetˇsina technik je specificky zamˇeˇrena na konkr´etn´ı situaci (napˇr. vlny na hlubok´e vodˇe, nebo modelov´an´ı pˇrekl´apˇej´ıc´ıch vln), ˇci pouˇzit´ı (napˇr. realtime aplikace, pˇredpoˇc´ıtan´e animace, fotorealistick´e obr´azky, fyzik´aln´ı modely). Nejstarˇs´ım pokusem o ”modelov´an´ı” vodn´ıch ploch je pouˇzit´ı bump-mappingu (viz. kap. 4.1.1), kter´e jen vytv´aˇr´ı dojem vodn´ı hladiny na rovn´e ploˇse. Pokroˇcilejˇs´ı sou pak procedur´aln´ı modely (viz. kap. 4.1.2), kde lze jiˇz hovoˇrit o 3D modelu. Statistick´e modely (viz. kap. 4.1.3) zaloˇzen´e na rychl´e Fourierovi transformaci, jenˇz vyuˇz´ıvaj´ı vlnov´ ych spekter zaloˇzen´ ych na mˇeˇren´ı vln v pˇr´ırodˇe (napˇr. oce´anografick´a data), jsou pak vrcholem souˇcasn´eho snaˇzen´ı dos´ahnout co nejvˇetˇs´ı realistiˇcnosti, pˇri co nejmenˇs´ı v´ ypoˇcetn´ı sloˇzitosti. Bohuˇzel vˇsak popisuj´ı jen vlny na hlubok´e vodˇe. Dalˇs´ı druh model˚ u je zaloˇzen na jednoduch´e kinematice (viz. kap. 4.2), kter´ a vychaz´ı z teorie line´arn´ıch vln s malou amplitudou (viz. kap. 3.4.1.1), nebo z modelu Gerstnerov´ ych vln (viz. kap. 3.4.1.2). A koneˇcnˇe nejsloˇzitˇejˇs´ımi jsou dynamick´e syst´emy vych´azej´ıc´ı z N-S hydrodynamick´ ych rovnic (viz. kap. 3.4.2), kter´e jsou fyzik´alnˇe nejpˇresnˇejˇs´ı, ale z´aroveˇ n vyluˇcuj´ı modelov´an´ı v re´aln´em ˇcase (angl. realtime). V´ yˇse uveden´e modelovac´ı techniky lze rozdˇelit dle jejich charakteru do tˇr´ı skupin: N´ ahodn´ e a bump-mapping - procedur´aln´ı a statistick´e modely, bump-mapping Kinematick´ e - vyuˇz´ıvaj´ıc´ı teorie line´arn´ıch vln s malou amplitudou, nebo Gerstnerovy vlny Dynamick´ e - ˇreˇs´ıc´ı N-S rovnice Nejvˇetˇs´ı pozornost bude vˇenov´ana kinematick´emu modelu vodn´ı hladiny Gonzato-Le Saˇec [8, 9, 4] (viz. kap. 4.2.7), kter´ y sem se rozhodl implementovat, nebot’ se nejv´ıce bl´ıˇz´ı poˇzadavk˚ um t´eto pr´ace (viz. kap. 2). To znamen´a, ˇze umoˇzn ˇuje modelovat jak lom vln (horizont´aln´ı rovina) tak i jejich pˇrekl´apˇen´ı (vertik´aln´ı rovina) a v´ ysledn´e vlny, se bl´ıˇz´ı fyzik´aln´ı realitˇe s platnost´ı jak pro hlubokou tak i mˇelkou vodu a v´ ypoˇcet je moˇzn´e (po m´ırn´ ych u ´prav´ach) prov´est v re´aln´em ˇcase.
4.1
N´ ahodn´ e modely a bump-mapping
Tato skupina model˚ u se vyznaˇcuje t´ım, ˇze povrch vodn´ı hladiny je vytv´aˇren generov´an´ım n´ahodn´ ych ˇc´ısel dle urˇcit´ ych pravidel, kter´a zaruˇcuj´ı, ˇze vzhled v´ ysledn´eho povrchu bude vypadat jako zvlnˇen´a vodn´ı hladina, pˇriˇcemˇz u bump-mappingu se nejedn´a pˇr´ımo o modelov´ an´ı, n´ ybrˇz jen mapov´an´ı textury s norm´alami. Tyto modely maj´ı niˇzˇs´ı v´ ypoˇcetn´ı sloˇzitost neˇz kinematick´e a dynamick´e modely, a umoˇzn ˇuj´ı modelovat vodn´ı hladinu v re´aln´em ˇcase. Bl´ıˇze si pop´ıˇseme bump-mapping [2, 15], procedur´aln´ı model zaloˇzen´ y na Perlinovˇe ˇsumu [1, 13] a statistick´ y model vyuˇz´ıvaj´ıc´ı rychlou Fourierovu transformaci [25, 23]. 4.1.1
Bump-mapping
Tato technika je zaloˇzena na zmˇenˇe optick´eho vzhledu pˇri zachov´an´ı geometrie povrchu. Dojem vln´ıc´ı se hladiny je vyvol´an mˇenˇen´ım povrchov´e norm´aly rovn´eho povrchu. Principi´alnˇe tedy vych´az´ıme z textury s norm´alami, kterou mapujeme na hladk´ y povrch. Takov´a textura m˚ uˇze ob’ sahovat v kaˇzd´em sv´em bodˇe, bud pˇr´ımo hodnoty jenˇz se pˇriˇctou k povrchov´e norm´ale (posunut´ı ve dvou kolm´ ych smˇerech), anebo jen jednu hodnotu, kter´a pˇredstavuje v´ yˇsku zvlnˇen´ı povrchu v dan´em m´ıstˇe (tzv. bump-mapa - obvykle ˇsedot´onov´ y obr´azek). Norm´ala je pak pozmˇenˇena
20
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
Obr´azek 4.1: Princip bump-mappingu (pˇrevzato z [15]) podle grafientu t´eto mapy v dan´em bodˇe. Podrobnosti o zp˚ usobu mapov´an´ı norm´al lze nal´ezt v [2, 15]. Nejvˇetˇs´ı pˇrednost´ı t´eto metody je jej´ı jednoduchost a s n´ı spojen´a n´ızk´a v´ ypoˇcetn´ı sloˇzitost a implementace pˇr´ımo v hardware grafick´ ych karet. Naopak nev´ yhodou je to, ˇze nedok´aˇze simulovat silnˇe zvlnˇen´ y povrch, kter´ y by zakr´ yval s´am sebe. Vzhledem k tomu, ˇze nedoch´az´ı k zmˇenˇe tvaru geometrie, m´a vodn´ı povrch, pˇri pouˇzit´ı t´eto techniky, tvar rovn´e desky, coˇz je patrn´e pˇri pohledu z bl´ızka. Z v´ yˇse uveden´ ych informac´ı vypl´ yv´a to, ˇze se tato technika hod´ı na modelov´an´ı drobn´ ych nerovnost´ı, kter´e v pˇr´ıpadˇe vodn´ı hladiny pˇredstavuj´ı kapil´arn´ı vlny. 4.1.2
Procedur´ aln´ı model
ˇ Casto vyuˇz´ıvanou technikou modelov´an´ı vodn´ıho povrchu, kter´a je m´enˇe ˇcasovˇe n´aroˇcnˇejˇs´ı neˇz d´ ale uv´adˇen´ y statistick´ y model, je procedur´aln´ı model vyuˇz´ıvaj´ıc´ı tzv. Perlin˚ uv ˇsum [13], jehoˇz z´ akladem je opakovanˇe pouˇzit´ y b´ıl´ y ˇsum. V´ ysledn´ y povrch se nejv´ıce podob´a rozbouˇren´e vodn´ı hladinˇe, kter´a pˇripom´ın´a sv´ ym vzhledem ˇsum. Z´akladem Perlinova ˇsumu je tzv. b´ıl´ y ˇsum, kter´ y je definov´an takto: Definice 4.1.1 B´ıl´ yˇ sum je n´ahodn´ y sign´al s rovnomˇernou v´ ykonovou spektr´aln´ı hustotou. Sign´al m´a stejn´ y v´ ykon v jak´emkoli p´asmu shodn´e ˇs´ıˇrky. Tento ˇsum je opakovanˇe vyuˇz´ıv´an pro generov´an´ı Perlinova ˇsumu. B´ıl´ y ˇsum m˚ uˇze b´ yt uloˇzen do pamˇeti (textura), nebo lze pouˇz´ıt n´ahodnou funkci, kter´a generuje b´ıl´ y ˇsum a d´a se opakovanˇe pouˇz´ıt. Z´akladn´ı Perlin˚ uv ˇsum z´ısk´ame interpolov´an´ım znovupouˇziteln´eho b´ıl´eho ˇsumu. Kombinac´ı tohoto ˇsumu z´ısk´ame frakt´aln´ı ˇsum, kter´ y naz´ yv´ame Perlin˚ uv ˇsum, a kter´ y pˇri spr´avn´em nastaven´ı vypad´a jako rozbouˇren´a hladina moˇre. Frekvence kaˇzd´e ˇc´asti je obvykle dvojn´asobek t´e pˇredch´azej´ıc´ı, proto jsou ˇc´asti ˇcasto oznaˇcovan´e jako okt´avy (viz. obr. 4.2). Zpracujeme-li ˇsum dvojdimenzion´alnˇe, m˚ uˇzeme jej pouˇz´ıt jako texturu, zpracujeme-li jej tˇr´ıdimenzion´alnˇe, m˚ uˇzeme jej i animovat.
Obr´azek 4.2: Postup konstrukce Perlinova ˇsumu (δ = 0.5) (pˇrevzato z [25]) Funkce generuj´ıc´ı Perlin˚ uv ˇsum vypad´a n´asledovnˇe:
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
fsum (x) =
n−1 X
δ i · sum(2i · x) ,
21
(4.1)
i=0
kde sum(x) je funkce vracej´ıc´ı okt´avu Perlinova ˇsumu, x je bod, ve kter´em poˇc´ıt´ame ˇsum. δ je ˇ ım je vˇetˇs´ı, t´ım je hladina rozbouˇrenˇejˇs´ı. n je poˇcet okt´av. parametr ovlivˇ nuj´ıc´ı s´ılu ˇsumu. C´ Hlavn´ı nev´ yhodou t´eto techniky je neschopnost modelovat realistickou hladinu pro jin´e neˇz rozbouˇren´e moˇre. T´eˇz nebere v potaz vliv hloubky vody, s neum´ı modelovat pˇrekl´apˇen´ı vln, avˇsak d´ıky sv´e n´ızk´e v´ ypoˇcetn´ı n´aroˇcnosti umoˇzn ˇuje modelovat rozs´ahl´e vodn´ı plochy v re´aln´em ˇcase. Dalˇs´ı informace vˇcetnˇe implementace lze nal´ezt v pr´aci [13] a popis Perlinova ˇsumu spolu se zdrojov´ ymi k´ody na webov´e str´ance [1]. 4.1.3
Statistick´ e modely
Do t´eto kategorie spadaj´ı pˇrev´aˇznˇe statistick´e modely, kter´e vyuˇz´ıvaj´ı v´ ysledk˚ u oce´anografick´eho v´ yzkumu. V´ yˇska vodn´ıho sloupce h(x, t) je povaˇzov´ana za n´ahodnou promˇennou horizont´ aln´ı polohy a ˇcasu. U statistick´ ych metod je takov´eto v´ yˇskov´e pole v´ ysledkem skl´ad´an´ı r˚ uznˇe posunut´ ych sinusov´ ych pr˚ ubˇeh˚ u s komplexn´ı a ˇcasovˇe z´avislou amplitudou. Dekompozice vodn´ı hladiny se prov´ad´ı pomoc´ı inverzn´ı rychl´e fourieovy transformace (d´ale jen IFFT). Ze znalosti rozkladu, lze pak pomoc´ı rychl´e fourierovy transformace [12] (d´ale jen FFT) vytv´aˇret vodn´ı hladinu, kterou lze vyj´adˇrit n´asleduj´ıc´ı funkc´ı: h(x, t) =
X
˜ h(K, t) exp(iK·x) ,
(4.2)
K
kde x je horizont´aln´ı pozice x = (x, z), t je ˇcas, K je dvoudimenzion´aln´ı vlnov´ y vektor, kter´ y sleduje smˇer vlny. K = (Kx , Kz ), Kx = 2πn/Lx a Kz = 2πm/Lz . Promˇenn´e n a m maj´ı rozsah ˜ n ∈ h−N/2, N/2) a m ∈ h−M/2, M/2). h(K, t) (Fourier˚ uv ˇclen) urˇcuje strukturu povrchu. tato FFT generuje pole o velikosti Lx × Lz . Pˇri modelov´an´ı pomoc´ı poˇc´ıtaˇce je nutn´e zn´at krom vlastn´ı geometrie povrchu i norm´ alu v kaˇzd´em vrcholu jednotliv´ ych ploˇsek, a to kv˚ uli v´ ypoˇctu osvˇetlen´ı sc´eny. V´ ypoˇcet t´eto norm´ aly lze prov´est napˇr. ze znalosti sklonu v´ yˇskov´eho pole, kter´ y lze vypoˇc´ıtat dle n´asleduj´ıc´ıho vztahu. (x, t) = ∇h(x, t) =
X
˜ iKh(K, t) exp(iK·x) .
(4.3)
K
D´ıky oce´anografick´emu v´ yzkumu bylo zjiˇstˇeno, ˇze rovnice (4.2) vyjadˇruje pˇrirozenˇe se vysky˜ tuj´ıc´ı vlny vytv´aˇren´e vˇetrem a v´ yˇsky vlnov´ ych amplitud h(K, t) jsou statisticky t´emˇeˇr nemˇenn´e, nez´avisl´e, gausovsk´e fluktuace s urˇcit´ ym spektrem (oznaˇcuje se jako Ph (K)). Model˚ u vlnov´eho spektra existuje v´ıce, avˇsak nejˇcastˇeji pouˇz´ıvan´ ym je Phillipsovo spektrum, kter´e popisuje gravitaˇcn´ı vlny (zp˚ usoben´e p˚ usoben´ım vˇetru (viz. kap. 3.3.1)). Toto spektrum popisuje n´asleduj´ıc´ı funkce: exp(−1/(KL) Ph (K) = B K4
2)
|K · w|2 ,
(4.4)
kde L = V 2 /g je nejvˇetˇs´ı moˇzn´a vlna zp˚ usoben´a vˇetrem o rychlosti V , g je t´ıhov´e zrychlen´ı na ˇ Zemi, w je smˇer vˇetru, B je numerick´a konstanta, K je vlnov´ y vektor. Clen |K · w|2 eliminuje vlny pohybuj´ıc´ı se kolmo ke smˇeru vˇetru. Vytv´aˇren´ı v´ yˇskov´eho pole je tedy generov´an´ı m´ahodn´ ych ˇc´ısel za pomoc´ı urˇcit´eho spektra, ˜ l´epe ˇreˇceno, d´ıky znalosti spektra vypoˇcteme Fourier˚ uv ˇclen h(K, t) a pak pomoc´ı FFT (4.2) v´ yˇsku vodn´ıho sloupce h(x, t). Konkr´etn´ı detaily lze nal´ezt v [25].
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
22
Tato technika umoˇzn ˇuje v re´aln´em ˇcase realisticky simulovat vˇetrem vytvoˇren´e gravitaˇcn´ı vlny na hlubok´e vodˇe, ale nedok´aˇze modelovat jevy vznikaj´ıc´ı v mˇelk´e vodˇe (lom a pˇrekl´apˇen´ı vln).
4.2
Kinematick´ e modely
Tato skupina model˚ u je zaloˇzena na poznatc´ıch ze studia kinematiky kapalin. K aproximaci vln na vodn´ı hladinˇe se obvykle vyuˇz´ıv´a line´arn´ıch vln s malou amplitudou (viz. kap. 3.4.1.1), nebo Gerstnerov´ ych vln (viz. kap. 3.4.1.2). Vodn´ı hladina je v´ ysledkem superpozice jednoduch´ ych vln. Pˇriˇcemˇz nejjednoduˇsˇs´ı forma vlny (postupn´e vlnˇen´ı) m´a n´asleduj´ıc´ı tvar:
f (x, t) = A cos
2π(x − Ct) λ
,
(4.5)
kde A je amplituda, λ je vlnov´a d´elka, C je f´azov´a rychlost a x vzd´alenost od poˇc´atku. Z model˚ u vyuˇz´ıvaj´ıc´ıch teorii line´arn´ıch vln s malou amplitudou si bl´ıˇze pop´ıˇseme model Nelsona L. Maxe [18], a z nˇej vych´azej´ıc´ı model Pauliny Y. Ts’o a Briana A. Barskeho [26]. Z model˚ u vyuˇz´ıvaj´ıc´ıch Gerstnerov´ ych vln se zamˇeˇr´ıme na modelov´an´ı pomoc´ı nezmˇenˇen´ ych Gerstnerov´ ych vln [25], pop´ıˇseme jejich vylepˇsen´ı, kter´e uvedl Biesel, d´ale budeme pokraˇcovat modelem Alaina Fourniera a Williama T. Reevese [7], a z nˇej vych´azej´ıc´ım modelem JeanChristopha Gonzata a Bertranda Le Sa¨eca [8, 9, 4]. Jeˇstˇe uv´ad´ım model D. R. Peacheyho [21], kter´ y vyuˇzil nejen sinusov´e vlny, ale obecnˇe line´arn´ı. 4.2.1
Max
Tento model je zaloˇzen na teorii line´arn´ıch vln s malou amplitudou (viz. kap. 3.4.1.1). Vyuˇz´ıv´a v´ yˇskov´eho pole, tud´ıˇz je nevhodn´ y pro modelov´an´ı pˇrekl´apˇen´ı vln. Teorie je jednoduch´a a plat´ı jen tehdy, pokud je hustota vodn´ı masy konstantn´ı, tok vˇsude stejn´ y (horizont´aln´ı rychlost je nez´avisl´a na hloubce) a ˇc´astice kapaliny nerotuj´ı. Podrobnˇejˇs´ı informace lze nal´ezt v [18]. Rovnice pro v´ ypoˇcet v´ yˇsky vodn´ıho sloupce m´a tento tvar: h(x, z, t) =
n X
Ai sin(qi x + ri z − ωi t)
qi2 + ri2 = Ki2 ,
(4.6)
i=1
kde x, z jsou souˇradnice bodu, A je amplituda, ω je u ´hlov´a rychlost, t je ˇcas, q, r jsou smˇerov´e promˇenn´e, K je vlnov´e ˇc´ıslo a n je poˇcet sled˚ u vln. Tato technika modelov´an´ı je velice jednoduch´a a umoˇzn ˇuje v´ ypoˇcet v re´aln´em ˇcase, ale v´ ysledn´a vodn´ı hladina je korektn´ı jen v pˇr´ıpadˇe hlubok´e vody, protoˇze nen´ı uvaˇzov´an vliv moˇrsk´eho dna. Nen´ı br´an v u ´vahu ani lom (horizont´aln´ı rovina), ani pˇrekl´apˇen´ı vln (vertik´aln´ı rovina) 4.2.2
Ts’o-Barsky
Tato technika rozˇsiˇruje model Nelsona L. Maxe (viz. kap. 4.2.1), kter´ y je zaloˇzen´ y na teorii line´arn´ıch vln s malou amplitudou a T’so s Barskym jej rozˇsiˇruje o jev naz´ yvan´ y l´am´an´ı vln, jenˇz vych´az´ı ze Snellova z´akona lomu (viz. kap. 3.5.2). Modelov´an´ı tohoto jevu se pak prov´ad´ı technikou sledov´an´ı vln (wave-tracing d´ale jen WT). Model je zaloˇzen na v´ yˇskov´e mapˇe, a proto neumoˇzn ˇuje modelovat pˇrekl´apˇen´ı vln. Sledov´ an´ı vln WT je technika analogick´a ke sledov´an´ı paprsk˚ u (ray-tracing). Zde je ale pojem paprsek (ortogon´ala k ˇcelu vlny) ch´ap´an jako smˇer ˇcela vlny. WT slouˇz´ı ke konstrukci trajektorie jednotliv´ ych vlnov´ ych paprsk˚ u. Princip metody sledov´an´ı spoˇc´ıv´a ve vys´ıl´an´ı
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
23
paprsk˚ u ve smˇeru pohybu vlny a v´ ypoˇcet jejich lomu pˇri kolizi s konturovac´ımi ˇcarami (vrstevnice) dna, tedy pˇri kaˇzd´e zmˇenˇe hloubky dna.
Obr´azek 4.3: Lom vlnov´eho paprsku pˇri protnut´ı vrstevnice (kontury) (pˇrevzato z [15]) V´ ypoˇcet lomu pˇri WT je, jak jiˇz bylo uvedeno, prov´adˇen pomoc´ı Snellova z´akona. Jeho konkr´etn´ı tvar, pro vztah mezi rychlostmi ˇs´ıˇren´ı paprsku, je n´asleduj´ıc´ı: sin (θi ) Ci = , (4.7) sin (θr ) Cr kde θi u ´hel dopadu, θr je u ´hel lomu, Ci rychlost ˇs´ıˇren´ı vlny pˇred lomem a Cr je rychlost po lomu (viz. obr. 4.3). Rychlosti ˇs´ıˇren´ı vlny jsou z´avisl´e na aktu´aln´ı hloubce vody a jejich velikost se urˇcuje pomoc´ı aproximace chov´an´ı vln v mˇelk´e vodˇe (viz. kap. 3.4.1.3). Nyn´ı si pop´ıˇseme postup modelov´an´ı vodn´ı hladiny. Prvn´ım krokem je vytvoˇren´ı vlnov´eho bal´ıku (jednotliv´e elementy naz´ yv´ame paprsky), jenˇz je vysl´an smˇerem proti pobˇreˇz´ı. Pot´e se aplikuje algoritmus sledov´an´ı vln, pomoc´ı kter´eho urˇc´ıme trajektorii jednotliv´ ych paprsk˚ u vlnov´eho bal´ıku, coˇz staˇc´ı prov´est jen jednou pro danou sc´enu, v pˇr´ıpadˇe ˇze nen´ı mˇenˇen smˇer vlnov´eho bal´ıku a nemˇen´ı se topografie dna. D´ale pro vˇsechny hodnoty ˇcasu t proch´az´ıme vˇsechny paprsky a poˇc´ıt´ame jejich pˇr´ıspˇevky k povrchu hi (x, z, t), a to podle n´asleduj´ıc´ı funkce: hi (x, z, t) = Ai sin(qi x + ri z − ωi t) qi = Ki cos θi
(4.8)
ri = Ki sin θi , kde θi je u ´hel mezi vlnovou ortogon´alou (paprsek) (viz. obr.4.4) a osou x. V´ yznam ostatn´ıch symbol˚ u odpov´ıd´a rovnici (4.6). Pro modelov´an´ı vln je pouˇzito 3D B-spline kˇrivek. Kontroln´ı vrcholy jsou urˇceny mˇr´ıˇzkou roviny xz a hodnotami hloubky h(x, z, t). Podrobnˇejˇs´ı informace o t´eto technice lze nal´ezt v [26]. Model vytv´aˇren´ y touto technikou m´a vˇsak jist´a omezen´ı. Pokud je pˇrekroˇcena hranice sklonu dna (uvaˇzeuje se 1/10) pak se nelze spolehnout na korektnost v´ ysledn´eho modelu. D´ale pat´ı to, ˇze je-li pomˇer vzd´alenosti vlnov´ ych ortogon´al na hlubok´e vodˇe ku vzd´alenosti ortogon´ al v aktu´aln´ım bodˇe > 2 nebo < 1/2, nelze br´at model jako korektn´ı. V´ ypoˇcetn´ı sloˇzitost konstrukce tohoto modelu je srovnateln´a s modelem Nelsona L. Maxe (viz. kap. 4.2.1), nebot’ lom paprsk˚ u je poˇc´ıt´an pouze jednou na poˇc´atku simulace. Tento model bere v u ´vahu tvar dna a jeho vliv na smˇer a rychlost ˇs´ıˇren´ı vln. Vodn´ı povrch je reprezentov´ an v´ yˇskovou mapou, a proto nen´ı vhodn´ y pro modelov´an´ı pˇrekl´apˇej´ıc´ıch se vln. Dalˇs´ı nepˇr´ıjemnou vlastnost´ı je omezen´ı maxim´aln´ıho sklonu dna a vzd´alenosti mezi konturami v horizont´ aln´ı rovinˇe.
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
24
Obr´azek 4.4: Zarovn´av´an´ı ˇcel vln s pobˇreˇz´ım a lom vlnov´ ych paprsk˚ u (ortogon´al) (pˇrevzato z [26]) 4.2.3
Peachy
Tato technika modeluje vˇetrn´e vlny (gravitaˇcn´ı a kapil´arn´ı). Pouˇz´ıv´a v´ yˇskov´e pole, a je tud´ıˇz nevhodn´a pro modelov´an´ı pˇrekl´apˇen´ı vln. Bere v potaz vliv dna na tvar vln. V´ yˇska vodn´ıho sloupce je reprezentov´ana funkc´ı tˇr´ı promˇenn´ ych. Jsou jimi poloha x, z a ˇcas t. Funkce h je souˇctem mnoha line´arn´ıch kˇrivek Wi s amplitudami Ai pohybuj´ıc´ıch se r˚ uzn´ ym smˇerem z r˚ uzn´ ych poˇc´atk˚ u. V´ ysledn´a funkce vypad´a takto: h(x, z, t) =
n X
Ai Wi (x, z, t)
Wi = wi (f raction [θi (x, z, t)]) ,
(4.9)
i=1
kde funkce wi (u) jsou vlnov´e profily (periodick´e fce. s oborem hodnot h−1, 1i a u ∈ h0, 1) s hˇrebenem vlny v bodˇe wi (0) = 1). θi (x, z, t) je f´azov´a funkce, jej´ıˇz tvar je z´avisl´ y na vlnov´e d´elce. Funkce f raction vyb´ır´a pouze urˇcitou ˇc´ast f´azov´e funkce, kter´a je jej´ım parametrem. Kaˇzd´a vlna je charakterizov´ana svou periodou Ti , amplitudou Ai , sv´ ym poˇc´atkem a smˇerem ˇs´ıˇren´ı. Pro f´azovou funkci θi plat´ı tento jednoduch´ y vztah: ∂ θi 1 =− . (4.10) ∂t Ti F´azov´a funkce se v konkr´etn´ım bodu urˇc´ı pomoc´ı numerick´e integrace pod´el trajektorie ˇs´ıˇren´ı vlny v z´avislosti na mˇen´ıc´ı se vlnov´e d´elce λ a f´azov´e rychlosti C, pˇriˇcemˇz hodnoty λ a C se poˇc´ıtaj´ı dle aproximace pro vlny na mˇelk´e vodˇe (viz. kap. 3.4.1.3). Vlnov´e profily wi (u) postupnˇe lin´arnˇe pˇrech´azej´ı ze sinusovky (pˇri mal´e strmosti S (viz. kap. 3.2)) na parabolickou funkci (pˇri velk´e strmosti) (viz. obr. 4.5). Konkr´etnˇe jsou to tyto funkce: wi (u) = cos (2πu) 1 2 wi (u) = 8 u − − 1 . 2
(4.11)
Tento model bere v u ´vahu vliv dna na tvar vlny a pˇredv´ıd´a v´ yskyt l´amaj´ıc´ıch se vln, ale nedok´aˇze je modelovat. Pomoc´ı ˇc´asticov´eho syst´emu umoˇzn ˇuje simulovat vodn´ı tˇr´ıˇst, kter´a pˇri pˇrekl´apˇen´ı vln vznik´a. Podrobnˇejˇs´ı informace lze nal´ezt v [21].
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
25
Obr´azek 4.5: Vlnov´e profily (pˇrevzato z [15]) 4.2.4
Gerstner
Tato technika popisuje vodn´ı hladinu pomoc´ı Gerstnerov´ ych vln (viz. kap. 3.4.1.2), tedy jako pohyb samostatn´ ych bod˚ u na povrchu. Kaˇzd´a ˇc´astice vody ob´ıh´a kolem pevn´eho bodu na povrchu klidn´e hladiny x(x0 , y0 , z0 ) po kruhov´e dr´aze s polomˇerem A. Kruh je vloˇzen do disku jehoˇz polomˇer je 1/K, pˇriˇcemˇz K je vlnov´e ˇc´ıslo. Vodn´ı hladina je reprezentov´ana pomoc´ı v´ yˇskov´eho pole. V´ ysledn´ y povrch je tvoˇren superpozic´ı nˇekolika Gerstnerov´ ych vln. Pozice ˇc´astice tvoˇr´ıc´ı vodn´ı hladinu v konkr´etn´ım ˇcasov´em okamˇziku se vypoˇc´ıt´a dle rovnic (3.6) (viz. kap. 3.4.1.2). Tento model je korektn´ı pouze pro vlny na hlubok´e vodˇe, nebot’ nebere v u ´vahu vliv tvaru dna na charakter vln. Neumoˇzn ˇuje tak modelovat ani pˇrekl´apˇen´ı vln. Nelze ani pˇr´ımo (bez manipulace s amplitudou) pouˇz´ıt aproximaci chov´an´ı v mˇelk´e vodˇe (viz. kap. 3.4.1.3), protoˇze pokud se vlna dost´av´a bliˇze k pobˇreˇz´ı, z˚ ust´av´a perioda nezmˇenˇena, ale zkracuje se vlnov´a d´elka. To nakonec vede k tomu, ˇze v urˇcit´em okamˇziku bude A > 1/K, coˇz povede ke vzniku smyˇcek na vrcholc´ıch vln a model nebude korektn´ı (viz. obr. 3.16). Na druhou stranu je model velmi jednoduch´ y a umoˇzn ˇuje simulovat vodn´ı hladinu v re´aln´em ˇcase. 4.2.5
Biesel
Tato technika navazuje na Gerstner˚ uv model, avˇsak v mnoh´em jej vylepˇsuje. Kruhov´e orbity Gerstnerova modelu jsou nahrazeny eliptick´ ymi, jejichˇz hlavn´ı osy se st´aˇc´ı a protahuj´ı, podle toho jak´a je v dan´em m´ıstˇe hloubka vody a sklon dna (viz. obr.4.6). Takto upraven´ y model je schopn´ y simulovat vodn´ı hladinu i v mˇelk´e vodˇe, ale ani tak neum´ı modelovat pˇrekl´apˇej´ıc´ı se vlny (simuluje pouze jejich formov´an´ı) a je n´aroˇcn´ y na v´ ypoˇcet. 4.2.6
Fournier-Reeves
Tato technika je schopn´a modelovat vˇetˇsinu bˇeˇzn´ ych vln. Hybnou silou je v´ıtr a tlum´ıc´ı gravitace (vˇetrn´e vlny). Proveden´ı modelu se bl´ıˇz´ı fyzik´aln´ı realitˇe. Principi´alnˇe vych´az´ı z Gerstnerova a Beiselova modelu a pˇri dostateˇcnˇe siln´em vˇetru umoˇzn ˇuje pˇrekl´apˇen´ı vln. Tuto techniku nelze
26
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
Obr´azek 4.6: Zmˇena tvaru orbit a vliv na tvar vln (pˇrevzato z [15]) pouˇz´ıt pro ter´eny s opaˇcn´ ym sklonem dna (vlny se pak nah´ ybaj´ı proti sobˇe ve smˇeru klesaj´ıc´ı hloubky). Dalˇs´ım probl´emem je to, ˇze na mˇelk´e vodˇe obˇcas vygeneruje vlny pod povrchem dna. Vlastn´ı modelov´an´ı prob´ıh´a tak, ˇze nejdˇr´ıve urˇc´ıme mˇr´ıˇzku bod˚ u x = (x0 , y0 , z0 ), kde y0 je konstanta urˇcuj´ıc´ı v´ yˇsku klidn´e hladiny. Jednotliv´e body budou pevn´ ymi pozicemi kolem nichˇz budou ob´ıhat ˇc´asteˇcky vody tvoˇr´ıc´ı vodn´ı hladinu. Podle hodnot souˇradnice osy Z rozdˇel´ıme pevn´e body do skupin, pro kter´e je souˇradnice z0 konstantn´ı. Tuto skupinu bod˚ u jenˇz leˇz´ı v rovinˇe XY pak budeme naz´ yvat profil vlny. V kaˇzd´em ˇcase pak vypoˇc´ıt´ame jednotliv´e profily, jejichˇz rovnice si nyn´ı odvod´ıme. V´ ypoˇcet profilu vych´az´ı z rovnic popisuj´ıc´ıch Gerstnerovy vlny (viz. kap. 3.4.1.2). Rovnice pro profil leˇz´ıc´ı v rovinˇe XY (viz. obr. 4.7) vypadaj´ı n´asledovnˇe:
x = x0 + A0 sin(Kx0 − ωt) y = y0 − A0 cos(Kx0 − ωt) ,
(4.12)
kde x0 , y0 jsou souˇradnice pevn´eho bodu, A0 je amplituda, K je vlnov´e ˇc´ıslo, ω je u ´hlov´a rychlost a t je ˇcas. D´ale plat´ı, ˇze K = 2π/λ, kde λ je vlnov´a d´elka, C = λ/T = ω/K, kde C je f´ azov´a rychlost ˇs´ıˇren´ı vlny a T je perioda a T = 2π/ω
Obr´azek 4.7: Vlna Gerstnerova modelu (pˇrevzato z [15]) K stanoven´ı poˇc´ateˇcn´ıch podm´ınek na hlubok´e vodˇe, kter´ ymi jsou ω, K, A0 m˚ uˇzeme vych´azet pouze ze znalosti rychlosti vˇetru V [7]: r
ω = K
=
g 2 V 3 4π 2 gT 2
(4.13)
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E H1 A0 =
3
2
27
= 3.5325 · 10−3 V 2.5 ,
umˇern´a v´ yˇska jedn´e tˇretiny nejvyˇsˇs´ıch vln. kde g je t´ıhov´e zrychlen´ı na Zemi a H 1 je pr˚ 3 Gerstnerovy vlny jsou nevhodn´e pro modelov´an´ı vln na mˇelk´e vodˇe, proto je nutn´e rovnice (4.13) upravit. Nejdˇr´ıve se zamˇeˇr´ıme na f´azov´ y u ´hel φ = Kx0 − ωt. Pˇrid´ame tˇret´ı ˇclen, kter´ y zp˚ usob´ı protahov´an´ı vrchol˚ u vln (urychlov´an´ı ˇc´astic pohybuj´ıc´ıch se na vrcholu vlny a zpomalov´ an´ı ˇc´astic u dna vlny), kter´e m´a na svˇedom´ı v´ıtr (viz. obr. 4.8). F´azov´ yu ´hel bude pak m´ıt tento tvar: φ = Kx0 − ωt − s∆z∆t ,
(4.14)
kde, s je koeficient urˇcuj´ıc´ı s´ılu protaˇzen´ı vrchol˚ u vlny (viz. obr. 4.8), ∆z = z − z0 a ∆t je ˇcasov´ y rozd´ıl mezi dvˇema v´ ypoˇcty modelu.
pohyb vln s=0
s = 1.5
s = 2.5
Obr´azek 4.8: Vliv parametru s na tvar vln (pˇrevzato z [15]) Druh´a u ´prava f´azov´eho u ´hlu φ zohledˇ nuje vliv hloubky vody. Vzhledem k tomu, ˇze se v z´avislosti na hloubce vody mˇen´ı vlnov´a d´elka λ a t´ım p´adem i vlnov´e ˇc´ıslo K, je tˇreba upravit prvn´ı ˇclen rovnice (4.14). F´azov´ yu ´hel se pak vypoˇc´ıt´a takto: φ=
x0 X
K∞ ∆x − ωt − s∆z∆t , tanh (K∞ di )
p i=0
(4.15)
kde suma je poˇc´ıt´ana pˇres pˇr´ıspˇevky jednotliv´ ych pevn´ ych bod˚ u, ∆x je vzd´alenost mezi dvˇema sousedn´ımi pevn´ ymi body, K∞ je vlnov´e ˇc´ıslo na hlubok´e vodˇe a di je hloubka vody na pozici pevn´eho bodu x = (i, y0 , z0 ) Posledn´ı u ´prava se t´ yk´a tvaru orbit po kter´ ych se pohybuj´ı ˇc´asteˇcky vody. K tomu vyuˇzijeme Bieselov´ ych poznatk˚ u o zmˇenˇe kruhov´ ych orbit na eliptick´e a k tomuto u ´ˇcelu zavedeme dva koeficienty Sx , Sy , kter´e budou pˇredstavovat zmˇenu poloos elips. Nat´aˇcen´ı orbit podle sklonu dna zajist´ı vhodnˇe um´ıstˇen´e funkce sin a cos. Koneˇcn´e rovnice, kter´e popisuj´ı profil vlny jsou tyto: x = x0 + A0 cos (α)Sx sin (φ) + A0 sin(α)Sy cos (φ) y = y0 − A0 cos(α)Sy cos (φ) + A0 sin(α)Sx sin (φ) , kde φ je f´azov´ yu ´hel vypoˇc´ıtan´ y dle 4.15. sin (α) se urˇc´ı n´asledovnˇe:
(4.16)
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
28
sin (α) = sin (β) exp−K0 d ,
(4.17)
kde β je sklon dna a K0 je tvarovac´ı konstanta urˇcuj´ıc´ı vliv hloubky na sklon elips. Hodnota tohoto ˇclenu je v intervalu < 0, 1 >. Koeficienty Sx , Sy se vypoˇc´ıtaj´ı z tˇechto rovnic: 1 1 − exp−Kx d = Sx (1 − exp−Ky d ) ,
Sx = Sy
(4.18)
kde Kx a Ky jsou tvarovac´ı konstanty urˇcuj´ıc´ı vliv hloubky na tvar elips. Kx je rozˇsiˇruj´ıc´ı faktor hlavn´ıch os elips a Ky je redukˇcn´ı faktor vedlejˇs´ıch os elips. Hodnoty tˇechto ˇclen˚ u jsou v intervalu < 0, 1 > . T´ımto je model kompletn´ı. Jeˇstˇe se zm´ın´ım o tom, ˇze mal´e kapil´arn´ı vlnky jsou simulov´any pomoc´ı bump-mappingu (viz. kap. 4.1.1) a vodn´ı tˇr´ıˇst’ pomoc´ı syst´emu ˇcastic. V´ ypoˇcet tohoto modelu lze prov´est v re´aln´em ˇcase pokud uvaˇzujeme jen jeden sled vln, nebot’ skl´ad´an´ı v´ıce vln je komplikovan´e a pˇredstavuje skl´ad´an´ı povrch˚ u. Vlny je moˇzn´e modelovat jak na hlubok´e tak i mˇelk´e vodˇe, avˇsak u vln na mˇelk´e vodˇe m˚ uˇze doch´azet k chyb´am a mohou vznikat vlny pod u ´rovn´ı dna a smyˇcky na jejich vrcholech. D´ale nesm´ı m´ıt ter´en opaˇcn´ y sklon dna (rostouc´ı hloubka vody smˇerem k pobˇreˇz´ı). Dalˇs´ı informace lze nal´ezt v [7]. 4.2.7
Gonzato-Le Sa¨ ec
Tato technika vych´az´ı z algoritm˚ u T’so-Barsky (viz. kap. 4.2.2), Gestner (viz. kap. 4.2.4), Biesel (viz. kap. 4.2.5) a Fournier-Reeves (viz. kap. 4.2.6). Proces vytv´aˇren´ı modelu je rozdˇelen do dvou rovin, a to do vertik´aln´ı roviny XY v kter´e jsou modelov´any profily vln, a do horizont´aln´ı roviny XZ ve kter´e jsou vytv´aˇreny vlnov´e paprsky (jako u WT modelu T’so-Barsky) na, kter´e se pot´e mapuj´ı profily vln. Z´akladem tohoto modelu je vylepˇsen´ y Fournier-Reeves model slouˇz´ıc´ı k vytvoˇren´ı profilu vln, u kter´eho je odstranˇen probl´em s opaˇcn´ ym sklonem dna a vznikem vln pod u ´rovn´ı dna. Pro v´ ypoˇcet lomu vln je pouˇzita dynamick´a verze algoritmu sledov´an´ı vln (d´ale jen DWT), jenˇz je vylepˇsen´ım WT z modelu T’so-Barsky. Povrch vodn´ı hladiny je vytv´aˇren pro kaˇzd´ y sled zvl´aˇst’. Ke slouˇcen´ı povrch˚ u pak doch´az´ı aˇz pˇri renderov´an´ı sc´eny pomoc´ı upraven´eho ray-tracingu. Pokud se vˇsak omez´ıme pouze na jeden sled vln, pak je moˇzn´e simulovat vodn´ı povrch i v re´aln´em ˇcase, jak je uvedeno v [9]. 4.2.7.1
Profil vln
Jak jiˇz bylo uvedeno profil vln vych´az´ı z modelu Fournier-Reeves, pˇriˇcemˇz promˇenn´e (K0 , Kx , Ky ) jsou povaˇzov´any za konstanty z´ıskan´e empiricky bˇehem simulac´ı. Model je d´ale obohacen o tˇri funkce upravuj´ıc´ı tvar vln. Jsou to tyto: • Stretch - protaˇzen´ı vlny simuluj´ıc´ı zrychlov´an´ı ˇc´astic na hˇrebenu vlny (viz. obr.4.9) • Orientation a Displacement - simulace p˚ usoben´ı gravitace na vlnu (viz. obr.4.10) Funkce Stretch m´a za u ´kol modelovat protaˇzen´ı vrcholu vlny ve smˇeru ˇs´ıˇren´ı, aniˇz by se zmˇenilo dno vlny. Jedn´a se o parabolickou funkci (viz. obr.4.9). Dno vlny je pak urˇceno takto: !
γβ Sx φmin = arctan 0 γβ Sy 1 Stretch(φ, Stmax ) = (Stmax φ2 − 2Stmax φmin φ + Stmax φ2min ) , π2
(4.19) (4.20)
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
29
Obr´azek 4.9: Pr˚ ubˇeh fce. Stretch a jej´ı vliv na tvar vlny (pˇrevzato z [15])
kde Stmax je maxim´aln´ı protaˇzen´ı vrcholu vlny, φmin je f´azov´ y u ´hel odpov´ıdaj´ıc´ı dnu vlny, p 0 γβ = sin (β) exp−0.1d a γβ = 1 − γβ , kde β je sklon dna. Jelikoˇz je pˇrekl´apˇej´ıc´ı masa kapaliny podrobena u ´ˇcink˚ um gravitace bylo nutn´e pˇridat jeˇstˇe dalˇs´ı dvˇe funkce, a to Orientation, kter´a upravuje smˇer a prodlouˇzen´ı hˇreben˚ u vln, Displacement, pak zabraˇ nuje tomu, aby nedoˇslo k dotyku hˇrebenu a dna vlny. Funkce jsou rozdˇeleny na tyto u ´seky:
1. sestupn´a ˇc´ast vlny φmin − π ≤ φ < φmin − 2. dno vlny φmin −
π 3
≤ φ < φmin +
3. vzestupn´a ˇc´ast vlny φmin +
7π 8
π 3
7π 8
≤ φ < φmin + π
Obr´azek 4.10: Pr˚ ubˇeh fc´ı. Orientation a Displacement a jejich vliv na tvar vlny (pˇrevzato z [15]) Vlastn´ı funkce jsou pak definov´any takto (viz. obr.4.10):
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
30
Orientation(φ, β) =
if (1) ⇒ rovnice pˇr´ımky proch´azej´ıc´ı body (φmin − π, − π4 ) & (φmin − π3 , β)
if (2) ⇒ β
if (3) ⇒ rovnice pˇr´ımky proch´azej´ıc´ı body π (φmin + 7π 8 , β) & (φmin + π, − 4 ) if (1) ⇒ rovnice pˇr´ımky proch´azej´ıc´ı body (φmin − π, H) & (φmin − π3 , 0)
Displacement(φ, H) =
if (2) ⇒ 0
(4.21)
(4.22)
if (3) ⇒ rovnice pˇr´ımky proch´azej´ıc´ı body (φmin + 7π 8 , 0) & (φmin + π, H) ,
kde β je sklon dna a H je v´ yˇska vlny. Posledn´ı u ´pravy Fournier-Reeves modelu spoˇc´ıvaj´ı v omezen´ı sklonu dna na kladn´e u ´hly, coˇz znamen´a to, ˇze pokud je sklon dna opaˇcn´ y (hloubka vody stoup´a s pˇribliˇzov´an´ım k pobˇreˇz´ı) pak je m´ısto β < 0 nastaven sklon dna na β = 0. Dalˇs´ı u ´prava m´a za u ´kol odstranit probl´emy s chov´an´ım v mˇelk´e vodˇe. Hlavn´ı poloosa elips m´a tendenci se nepˇrimˇeˇrenˇe zvˇetˇsovat a proto jej´ı velikost omez´ıme na hodnotu 1/K, coˇz je pr˚ umˇer disku (viz. obr. 4.7). Kompletn´ı upraven´e rovnice popisuj´ıc´ı profil vlny jsou tyto: 0
0
x = x0 + A0 γβ Sx sin(φ) + A0 γβ Sy cos(φ) + Stretch(φ, Stmax )γβ exp−Ks d + Displacement(φ, H) cos(Orientation(φ, β)) exp−Kd d 0
y = y0 − A0 γβ Sy cos(φ) + A0 γβ Sx sin(φ) + Stretch(φ, Stmax )γβ exp−Ks d + Displacement(φ, H) sin(Orientation(φ, β)) exp−Kd d
(4.23)
−0.1d
γβ = sin (β) exp 0
γβ =
q
1 − γβ
1 1 − exp−0.11d = Sx (1 − exp−0.09d )
Sx = Sy
φ =
x0 X
K∞ ∆x − ωt , tanh (K∞ di )
p i=0
kde Ks urˇcuje vliv hloubky na funkci Stretch, Kd je faktor urˇcuj´ıc´ı jak hloubka ovlivˇ nuje funkci Displacement s Orientation a ostatn´ı parametry jsou definov´any obdobnˇe jako u modelu Fournier-Reeves (viz. kap. 4.2.6). 4.2.7.2
Dynamick´ e sledov´ an´ı paprsku (DWT)
DWT je rozˇs´ıˇren´ım obyˇcejn´eho sledov´an´ı paprsku WT (viz. kap. 4.2.2), kter´e upravuje o dynamick´e generov´an´ı nov´ ych paprsk˚ u. Pokud dva sousedn´ı paprsky rychle diverguj´ı, pak je mezi nimi vysl´an nov´ y paprsek. Dalˇs´ı u ´pravou je zp˚ usob v´ ypoˇctu lomu, kter´ y nen´ı prov´adˇen po kaˇzd´em protnut´ı vrstevnice, ale po pevn´em kroku ve smˇeru ˇs´ıˇren´ı paprsku. Kaˇzd´ y paprsek je bˇehem v´ ypoˇctu oznaˇcen atributem, jenˇz m˚ uˇze nab´ yvat tˇechto hodnot: DEAD - opustil sc´enu a nen´ı d´ale uvaˇzov´an
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
31
ALIVE - aktivn´ı paprsek FLAT - amplituda nepˇresahuje urˇcitou mez, do kter´e je paprsek povaˇzov´an za rovn´ y AGROUND - sleduje reli´ef pobˇreˇz´ı ˇıˇren´ı a vznik paprsk˚ S´ u se ˇr´ıd´ı urˇcit´ ymi pravidly, aby nedoch´azelo k jejich nekontrolovateln´emu vzniku a ˇs´ıˇren´ı. Jsou to tyto pravidla: 1. Kaˇzd´ y paprsek je pˇri sv´em vzniku oznaˇcen jako ALIVE. 2. Pokud paprsek opust´ı sc´enu je oznaˇcen jako DEAD. 3. Doraz´ı-li paprsek k pobˇreˇz´ı je oznaˇcen jako AGROUND (uvaˇzujeme, ˇze od t´eto chv´ıle kop´ıruje pobˇreˇz´ı). 4. Je-li AGROUND paprsek mezi dalˇs´ımi dvˇema AGROUND, pak je oznaˇcen jako DEAD. 5. Klesne-li amplituda paprsku pod urˇcitou mez je oznaˇcen jako FLAT. 6. Mezi dvˇema sousedn´ımi paprsky oznaˇcen´ ymi jako FLAT nen´ı nikdy vytv´aˇren nov´ y paprsek. 7. Pokud vzd´alenost mezi dvˇema sousedn´ımi ALIVE paprsky pˇres´ahne urˇcitou mez, pak je mezi nimi vygenerov´an dalˇs´ı paprsek. Velikost amplitudy A0 je z´avisl´a na vzd´alenosti mezi paprsky. Pokud paprsky diverguji (pˇr´ıpad z´atoky) pak se energie vlny rozptyluje a amplituda se zmenˇsuje. Naopak pˇri konvergenci paprsk˚ u (pˇr´ıpad mysu) se energie vlny soustˇred’uje a amplituda se zvˇetˇsuje. Tyto zmˇeny amlitudy vyjadˇruje n´asleduj´ıc´ı vztah: s
A = A∞
L∞ , L
(4.24)
kde A je amplituda respektive L je vzd´alenost mezi sousedn´ımi paprsky v m´ıstˇe v´ ypoˇctu a A∞ je amplituda respektive L∞ je vzd´alenost mezi sousedn´ımi paprsky na otevˇren´em moˇri (hlubok´ a voda). DWT oproti WT poskytuje pˇresnˇejˇs´ı v´ ypoˇcet lomu paprsk˚ u a l´epe pokr´ yv´a sc´enu. Rozd´ıly jsou nejv´ıce patrn´e u modelov´an´ı vln v z´atok´ach a okolo ostrov˚ u (viz. obr. 4.11 a 4.12).
Obr´azek 4.11: T’so-Barsky WT algoritmus v z´atoce a kolem ostrova (pˇrevzato z [8])
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
32
Obr´azek 4.12: Gonzato-Le Sa¨ec DWT algoritmus v z´atoce a kolem ostrova (pˇrevzato z [8]) 4.2.7.3
Vytvoˇ ren´ı povrchu a jeho animace
Vlastn´ı algoritmus vytv´aˇren´ı a animov´an´ı vodn´ı hladiny prob´ıh´a n´asledovnˇe. Nejdˇr´ıve urˇc´ıme polohu a smˇer ˇs´ıˇren´ı vln. Potom zkonstruujeme vlnov´e paprsky pomoc´ı DWT algoritmu (viz. kap. 4.2.7.2). A nakonec prov´ad´ıme animaci, kdy pro kaˇzd´ y ˇcasov´ y okamˇzik proch´az´ıme paprsky a vypoˇc´ıt´av´ame polohu ˇc´astic vody pomoc´ı rovnic modeluj´ıc´ıch profil vln (viz. kap. 4.2.7.1). Souˇcasnˇe vytv´aˇr´ıme i triangulaci povrchu, kter´a spoˇc´ıv´a ve vytv´aˇren´ı dvou nebo tˇr´ı troj´ uheln´ıku mezi sousedn´ımi paprsky oznaˇcen´ ymi jako ALIVE, FLAT nebo AGROUND (viz. obr. 4.13).
pevnina
Obr´azek 4.13: Pˇr´ıklad konstrukce triangulace (pˇrevzato z [15]) Tato technika umoˇzn ˇuje vytv´aˇret vlny na vodn´ı hladinˇe jak v hlubok´e, tak i v mˇelk´e vodˇe. Bere v potaz tvar dna, pˇriˇcemˇz modeluje lom (horizont´aln´ı rovina) a pˇrekl´apˇen´ı vln (vertik´aln´ı rovina). Ze vˇsech uveden´ ych kinetick´ ych model˚ u je nejsloˇzitˇejˇs´ı, ale i tak jej lze animovat v re´aln´em ˇcase. Podrobnˇejˇs´ı informace lze nal´ezt v [8, 9, 4].
4.3
Dynamick´ e modely
Metody t´eto skupiny vych´azej´ı z dynamiky tekutin a model vodn´ı hladiny je v´ ysledkem v´ ypoˇctu zjednoduˇsen´ ych, nebo kompletn´ıch N-S rovnic, kter´e obecnˇe popisuj´ı dynamiku tekutiny (viz. kap. 3.4.2). Tyto modely jsou nejbliˇzˇs´ı fyzik´aln´ı realitˇe, ale vzhledem k tomu, ˇze kompletn´ı N-S rovnice jsou neline´arn´ı diferenci´aln´ı, a nen´ı zn´am´e jejich obecn´e analytick´e ˇreˇsen´ı, mus´ı se ˇreˇsit pouˇzit´ım numerick´ ych metod a jejich v´ ypoˇcet je tak znaˇcnˇe ˇcasovˇe n´aroˇcn´ y a vyluˇcuje v´ ypoˇcet modelu v re´aln´em ˇcase. Bl´ıˇze si pop´ıˇseme modelov´an´ı pˇrekl´apˇej´ıc´ıch se vln tzv. Metoda 2D ˇrez˚ u [19, 24], modelovac´ı
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
33
techniku Michaela Kasse a Gavina Millera [16] vych´azej´ıc´ı ze zjednoduˇsen´ ych N-S rovnic, Jim X. Chen˚ uv [3] model vyuˇz´ıvaj´ıc´ı 2D N-S rovnic, a techniku Nicka Fostera a Dimitrise Metaxase [5, 6], kter´a se op´ır´a o numerick´e ˇreˇsen´ı kompletn´ıch 3D N-S rovnic. 4.3.1
metoda 2D ˇ rez˚ u
Princip t´eto metody [19] tkv´ı v definici tvaru vlny pomoc´ı vertik´aln´ıch 2D ˇrez˚ u a n´asledn´e animaci pˇrekl´apˇej´ıc´ı vlny pomoc´ı 3D N-S rovnic (viz. kap. 3.4.2). Pˇri modelov´an´ı za pomoc´ı Navier-Stokesov´ ych rovnic je tˇreba krom vlastn´ıho ˇreˇsen´ı rovnic, prov´adˇet detekci povrchu. Pro tento algoritmus je pouˇzita metoda CLSVOF ( combined level set and volume fluid ). Podrobnosti lze nal´ezt v [24]. Vlastn´ı ˇreˇsen´ı N-S rovnic pouˇzit´e pro tuto metodu lze nal´ezt v [24]. Prvn´ım krokem pˇri simulaci pomoc´ı 2D ˇrez˚ u je tvoba 2D profil˚ u vlny (ˇrezy). Toto je provedeno ve dvou kroc´ıch. Nejdˇr´ıve stanov´ıme poˇc´ateˇcn´ı podm´ınky (profil vlny a rychlost jej´ıch ˇc´astic) odvozen´ım z teorie line´arn´ıch vln a pot´e pomoc´ı ˇreˇsen´ı 2D N-S rovnic dotvoˇr´ıme poˇzadovan´ y 2D profil nestabiln´ı vlny (vlna kter´a se bude pˇrekl´apˇet). Pˇredpokl´ad´ame-li hustotu vody ρ = 1000 a viskozitu ν = 0, bude rovnice popisuj´ıc´ı profil (superpozice jednoduch´ ych kosinusov´ ych vln) pak vypadat takto: 1 1 3 cos(2πx) + 2 cos(4πx) + 3 cos(6πx) 2π 2 8
h(x, 0) = d +
,
(4.25)
kde d je hloubka vody, = KA = 2πA e ˇc´ıslo a A je amplituda. λ , K je vlnov´ Jednotliv´e sloˇzky rychlosti ˇc´astic popisuj´ı tyto funkce: u(x, t) = Aωe−Kz cos (Kx − ωt) v(x, t) = Aωe−Kz sin (Kx − ωt) ,
(4.26)
kde u(x, t) respective v(x, t) je sloˇzka rychlosti ve smˇeru x respective y, A je amplituda, z je vzd´alenost ˇc´astice od klidn´e vodn´ı hladiny, K je vlnov´e ˇc´ıslo, ω je u ´hlov´a frekvence. Volbou d,A,ω lze modifikovat tvar vlny. Po vytvoˇren´ı vˇsech 2D profil˚ u vlny je tˇreba zkonstruovat 3D povrch, coˇz se provede pomoc´ı Marching Cubes algoritmu. Animace tohoto modelu se pak ˇr´ıd´ı 3D N-S rovnicemi. Tato metoda je prim´arnˇe urˇcena k animaci pˇrekl´apˇen´ı konkr´etn´ı vymodelovan´e vlny, a nepopisuje tak celou vodn´ı hladinu. Pˇrekl´apˇen´ı samo o sobˇe je sice fyzik´alnˇe korektn´ı, ale v´ ypoˇcet je ˇcasovˇe n´aroˇcn´ y a vyluˇcuje pouˇzit´ı pro simulaci v re´aln´em ˇcase. 4.3.2
Kass-Miller
Tato technika vych´az´ı ze zjednoduˇsen´ ych hydrodynamick´ ych rovnic. Je br´an v u ´vahu jak ohyb vln, odrazy, tak i transport kapaliny. K tomu abychom dos´ahli stabiln´ıho a rychl´eho ˇreˇsen´ı rovnic je tˇreba dodrˇzet n´asleduj´ıc´ı pˇredpoklady: • vodn´ı hladina je reprezentov´ana v´ yˇskov´ ym polem • vertik´aln´ı sloˇzku rychlosti ˇc´astic kapaliny lze zanedbat • horizont´aln´ı sloˇzka rychlosti ˇc´astic kapaliny je mal´a, skoro konstantn´ı • hloubka se mˇen´ı pomalu Pro jednoduchost si nejfˇr´ıve pop´ıˇseme chov´an´ı 2D vlny. Necht’ je h(x) v´ yˇska vodn´ıho povrchu, b(x) v´ yˇska dna, u(x) horizont´aln´ı rychlost vodn´ıho sloupce, d(x) = h(x) − b(x) je hloubka
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
34
h0
h1
h2
h3
h4
b0
b1
b2
b3
b4
u0
. . .
. . .
h n−3
h n−2
h n−1
b n−3
b n−2
b n−1
u1
u n−3
u n−2
Obr´azek 4.14: Diskr´etn´ı 2D v´ yˇskov´e pole reprezentuj´ıc´ı povrch h, dno d a horizont´aln´ı rychlost vody u (pˇrevzato z [15]) vody (viz. obr. 4.14), a jsou splnˇeny v´ yˇse uveden´e pˇredpoklady, pak rovnice pro mˇelkou vodu vypadaj´ı n´asledovnˇe: ∂u ∂u ∂h +u +g = 0 ∂t ∂x ∂x ∂d ∂ + (ud) = 0 , ∂t ∂x
(4.27) (4.28)
kde, g je t´ıhov´e zrychlen´ı a t je ˇcas. Rovnice (4.27) vyjadˇruje Newton˚ uv z´akon (F = ma). I takto jsou vˇsak rovnice st´ale neline´arn´ ı. Po dalˇ s ´ ım zjednoduˇ s en´ ı a u ´ pravˇ e viz. [16], dost´av´ame √ rovnici 1D vlny s rychlost´ı ˇs´ıˇren´ı C = gd: ∂ 2h ∂ 2h = gd . (4.29) ∂ t2 ∂ x2 Nyn´ı pˇrejdeme ke 3D situaci. Vlnov´e rovnice se aproximuj´ı, s´eri´ı 2D rovnic. V´ ysledn´a rovnice m´a pak tento tvar: ∂ 2h = gd ∂t2
∂ 2h ∂ 2h + ∂x2 ∂z 2
!
= gd ∇2 h .
(4.30)
V´ yznam symbol˚ u odpov´ıd´a pˇredchoz´ım 2D rovnic´ım. h je funkce urˇcuj´ıc´ı hloubku vody v kaˇzd´em bodˇe povrchu v urˇcit´em ˇcase. Rovnice se ˇreˇs´ı za pouˇzit´ı metody stˇr´ıd´an´ı smˇer˚ u (alternating-direction method). Z´akladem t´eto metody je rozdˇelen´ı prav´e strany rovnice (4.28) do souˇctu dvou ˇc´ast´ı. Pˇriˇcemˇz jedna z nich bude nez´avisl´a na x a druh´a na z. Pak se iterace rozdˇel´ı na dvˇe poditerace, kter´e se ˇreˇs´ı samostatnˇe podle n´asleduj´ıc´ı rovnice: ∂ 2h ∂ 2h = gd . (4.31) ∂t2 ∂x2 Tato rovnice plat´ı analogicky i pro z. Detailn´ı Popis iteraˇcn´ıho zp˚ usobu ˇreˇsen´ı tˇechto rovnic je moˇzn´e nal´ezt v [16]. V prvn´ım v´ ypoˇctu spoˇcteme hodnoty pro kaˇzd´ y ˇr´adek v´ yˇskov´eho pole a v druh´em pro kaˇzd´ y sloupec.
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
35
Tato metoda plnˇe nepopisuje pohyb prob´ıhaj´ıc´ı v kapalin´ach, coˇz je zp˚ usobeno t´ım, ˇze rychlost kapaliny je zn´am´a pouze na hladinˇe a vnitˇrn´ı tlak nen´ı uvaˇzov´an. Model je, ale i tak bl´ızk´ y fyzik´aln´ı realitˇe a bere v u ´vahu vliv dna na tvar vln a simuluje i lom vln. K reprezentaci vodn´ı hladiny vyuˇz´ıv´a v´ yˇskov´e pole a nelze jej tak vyuˇz´ıt k modelov´an´ı pˇrekl´apˇej´ıc´ıch se vln. Dle informac´ı jenˇz uv´ad´ı autor, lze velmi mal´e povrchy simulovat v re´aln´em ˇcase. 4.3.3
Chen
Tato metoda pˇredstavuje kompromis mezi pˇr´ıstupem jak´ y zvolil pro sv˚ uj model Kass a Miller (viz. kap. 4.3.2) a kompletn´ım ˇreˇsen´ım 3D N-S rovnic (v´ ypoˇcet chov´an´ı tekutiny v cel´em obˇ s´ı se pouze 2D N-S rovnice pro nestlaˇcitelnou kapalinu a tˇret´ı vertik´aln´ı souˇradnice jemu). Reˇ je dopoˇc´ıt´ana z tlaku v dan´em bodˇe kapaliny.
Obr´azek 4.15: Vztah mezi tlakem a v´ yˇskou vodn´ıho sloupce (pˇrevzato z [3]) Vˇetˇs´ı tlak v kapalinˇe m´a z an´asledek vyˇsˇs´ı vodn´ı sloupec. Bernouliho rovnice, kter´a tento jev popisuje m´a tento tvar: v12 p1 v2 p2 + gh1 + = 2 + gh2 + , 2 ρ 2 ρ
(4.32)
kde v1 , v2 jsou rychlosti, h1 , h2 hloubky a p1 , p2 tlaky v kapalinˇe v bodech P1 a P2 , g je t´ıhov´e zrychlen´ı na Zemi a ρ je hustota vody (viz. obr. 4.15). Povaˇzujeme-li rychlosti ve dvou vertik´ alnˇe sousedn´ıch bodech P1 a P2 za stejn´e, pˇriˇcemˇz bod P1 je na povrchu kapaliny a P2 na povrchu klidn´e kapaliny, pak plat´ı, ˇze p1 = 0 a h2 je konstanta . Pro tlakem vyvolanou v´ yˇsku hp pak bude platit: h1 =
p2 + h2 . gρ
(4.33)
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
36
Tato metoda nen´ı fyzik´alnˇe ekvivalentn´ı s 3D N-S rovnicemi a neum´ı modelovat pˇrekl´apˇej´ıc´ı se vlny, nicm´enˇe je moˇzn´e prov´adˇet simulaci vodn´ı hladiny v re´aln´em ˇcase, umoˇzn ˇuje interakci kapaliny s pohybliv´ ymi objekty (musej´ı b´ yt 2D) a bere v u ´vahu tvar dna. Podrobnˇejˇs´ı informace lze nal´ezt v [3]. 4.3.4
Foster-Metaxas
Tato technika vyuˇz´ıv´a k modelov´an´ı kapaliny kompletn´ıch 3D N-S rovnic (3.4.2) a snaˇz´ı se tak co nejv´ıce pˇribl´ıˇzit fyzik´aln´ı realitˇe. Do sc´eny je moˇzno vkl´adat i dynamick´e objekty. Nutno vˇsak podotknout, ˇze v´ ypoˇcet vlastn´ıho modelu je znaˇcnˇe ˇcasovˇe n´aroˇcn´ y (sloˇzitost roste s ˇctvrtou mocninou prostorov´eho rozliˇsen´ı) a nelze jej prov´est v re´aln´em ˇcase. Cel´ y algoritmus lze shrnout do n´asleduj´ıc´ıch krok˚ u: 1. Definice pˇrek´aˇzek a dynamick´ ych objekt˚ u ve sc´enˇe a rozdˇelen´ı sc´eny do krychlov´ ych bunˇek. 2. Nastaven´ı poˇc´ateˇcn´ıch podm´ınek pro tlak a rychlost. 3. Urˇcen´ı obsahu bunˇek (Obstacle, Full, Empty, Surface). 4. Nastaven´ı hraniˇcn´ıch podm´ınek pro buˇ nky obsahuj´ıc´ı ˇc´ast pˇrek´aˇzky (Obstacle) a povrchu hladiny (Surface). 5. V´ ypoˇcet nov´ ych rychlost´ı (u,v,w) pro buˇ nky obsahuj´ıc´ı kapalinu (Full). 6. Proveden´ı tlakov´ ych interakc´ı se vˇsemi buˇ nkami pln´ ymi kapaliny (Full). 7. Pˇrepoˇcten´ı hran´ıˇcn´ıch rychlost´ı pro buˇ nky povrchu hladiny (Surface). 8. Aktualizace pozic povrchu a objekt˚ u 9. Opakovat od kroku 3. Nejprve si uvedeme Navier-Stokesovy rovnice pro nestlaˇcitelnou kapalinu, o jejichˇz ˇreˇsen´ı se op´ır´a tento model: !
∂ u ∂ u2 ∂ uv ∂ uw + + + ∂t ∂x ∂y ∂z
∂p = − + gx + ν ∂x
∂2 u ∂2 u ∂2 u + + ∂ x2 ∂ y2 ∂ z2
∂ v ∂ vu ∂ v 2 ∂ vw + + + ∂t ∂x ∂y ∂z
∂p = − + gy + ν ∂y
∂2 v ∂2 v ∂2 v + + 2 ∂x ∂ y2 ∂ z2
∂ w ∂ wu ∂ wv ∂ w2 + + + ∂t ∂x ∂y ∂z
∂p = − + gz + ν ∂z
∂2 w ∂2 w ∂2 w + + ∂ x2 ∂ y2 ∂ z2
!
(4.34) !
,
kde u, v, w jsou rychlosti ve smˇeru x,y,z, p je lok´aln´ı tlak, g je gravitaˇcn´ı konstanta a υ je kinematick´a viskozita kapaliny. V´ ypoˇcet rovnic je prov´adˇen pˇres cel´ y objem sc´eny, kter´a je rozdˇelena na krychle. Souˇradnicov´ y syst´em dˇel´ıc´ı mˇr´ıˇzky je rovnobˇeˇzn´ y s kart´ezsk´ ym souˇradnicov´ ym syst´emem sc´eny. rychlosti u, v, w jsou definovan´e uprostˇred ploch buˇ nky (viz. obr. 4.16). Tlak p je v centru buˇ nky. Kaˇzd´a buˇ nka m´a pak i atribut, jenˇz popisuje jej´ı obsah. Ten m˚ uˇze nab´ yvat tˇechto hodnot: Empty - pr´azdn´a Full - pln´a kapaliny Surface - ˇc´ast povrchu kapaliny
´ ´I VLN V POC ˇ ´ITACOV ˇ ´ GRAFICE KAPITOLA 4. MODELOVAN E
37
Obr´azek 4.16: Rozdˇelen´ı sc´eny na krychle a rozloˇzen´ı rychlost´ı jedn´e buˇ nky o souˇradnic´ıch (i,j,k) (pˇrevzato z [5]) Obstacle - pˇrek´aˇzka (napˇr. krajina, dynamick´ y objekt) D´ıky t´eto diskretizaci je moˇzn´e k v´ ypoˇctu pouˇz´ıt koneˇcnou rozd´ılovou aproximaci (explicit finite difference approximation) rovnice (4.34):
u ˜i+1/2,j,k = ui+1/2,j,k + ∆t (1/∆x) (ui,j,k )2 − (ui+1,j,k )2
+ (1/∆y) (uv)i+1/2,j−1/2,k − (uv)i+1/2,j+1/2,k
+ (1/∆z) (uw)i+1/2,j,k−1/2 − (uw)i+1/2,j,k+1/2 + gx + (1/∆x)(pi,j,k − pi+1,j,k ) + (ν/∆x2 )(ui+3/2,j,k
(4.35)
− 2ui+1/2,j,k + ui−1/2,j,k ) + (ν/∆y 2 )(ui+1/2,j+1,k − 2ui+1/2,j,k + ui+1/2,j−1,k ) + (ν/∆z 2 )(ui+1/2,j,k+1
− 2ui+1/2,j,k + ui+1/2,j,k−1 ) . ˇ Tuto rovnici poˇc´ıt´ame pouze pro buˇ nky oznaˇcen´e jako Full a Surface. Casovˇ e navazuj´ıc´ı ˇreˇsen´ı z´ısk´ame tak, ˇze do rovnice dosad´ıme rychlosti a tlaky z pˇredchoz´ıho kroku v´ ypoˇctu a t´ım z´ısk´ame nov´e hodnoty rychlost´ı a tlak˚ u po uplynut´ı dan´eho ˇcasov´eho kroku ∆t. K z´ısk´an´ı pˇresn´e reprezentace aktu´aln´ıho povrchu kapaliny se pouˇz´ıv´a syst´em ˇc´astic. Pˇri kaˇzd´em kroku algoritmu je pak poloha ˇc´astic pˇrepoˇc´ıt´av´ana podle t´eto rovnice: x(n+1) = x(n) m m + ∆tvx(n) ,
(4.36)
m
(n)
kde xm je pozice ˇc´astice m v kroku n a vx(n) je rychlost ˇc´astice m v kroku n z´ıskan´a line´ arn´ı m interpolac´ı rychlost´ı vˇsech sousedn´ıch bunˇek. Tato technika umoˇzn ˇuje fyzik´alnˇe korektnˇe simulovat kapaliny i s moˇznost´ı interakce s dynamick´ ymi objekty ve sc´enˇe. Vˇse je ale vykoupeno pˇr´ıliˇsnou v´ ypoˇcetn´ı sloˇzitost´ı. Podrobnˇejˇs´ı informace o t´eto metodˇe lze nal´ezt v [5, 6].
38
KAPITOLA 5. IMPLEMENTACE
5 Implementace V t´eto kapitole se zamˇeˇr´ım na popis implementace konkr´etn´ı techniky modelov´an´ı vodn´ı hladiny. Nejprve uvedu, kterou techniku jsem vybral a proˇc, a pot´e pop´ıˇsi zmˇeny v˚ uˇci origin´aln´ımu modelu (zejm´ena adaptace na realtime). D´ale uvedu sch´ema funkˇcn´ıch blok˚ u a komunikaci mezi nimi. Pot´e se zamˇeˇr´ım na detaily implementace jednotliv´ ych blok˚ u. Na z´avˇer shrnu pouˇzit´ y postup konstrukce a animace modelu. Aplikace simuluj´ıc´ı vodn´ı hladinu je naps´ana v C++ ve v´ yvojov´em prostˇred´ı Microsoft Visual .NET Studio 2003 a vyuˇz´ıv´a QT toolkit verze 4.2.2, kter´ y v sobˇe zahrnuje i podporu pro OpenGL.
5.1
Vybran´ y model a jeho adaptace na realtime v´ ypoˇ cet
Modely vyuˇz´ıvan´e v poˇc´ıtaˇcov´e grafice jsme si rozdˇelili do tˇr´ı skupin (viz. kap. 4). Pˇriˇcemˇz sloˇzitost dynamick´ ych model˚ u vyluˇcuje v´ ypoˇcet v re´aln´em ˇcase. Naopak n´ahodn´e modely neum´ı modelovat jevy vznikaj´ıc´ı na mˇelk´e vodˇe, coˇz je lom a pˇrekl´apˇen´ı vln (viz. kap. 3.3.2.2). Kompromisem mezi obˇema skupinami jsou kinematick´e modely. Jedin´ y model, kter´ y vyhovuje vˇsem poˇzadavk˚ um (viz. kap. 2), tedy moˇznosti simulace vodn´ı hladiny v re´aln´em ˇcase, schopnost modelovat lom, pˇrekl´apˇen´ı vln, a korektn´ı tvar vlny v z´avislosti na hloubce, je model GonzatoLe Sa¨ec (viz. kap. 4.2.7). Tento model jsem se tedy rozhodl implementovat. Oproti p˚ uvodn´ımu modelu, tak jak je uveden v [8] jsem provedl nˇekolik u ´prav, kter´e jsou uvedeny d´ale v textu a v n´asleduj´ıc´ı kapitole 5.1.1. Autoˇri modelu J. C. Gonzato a B. Le Sa¨ec navrhli sv˚ uj prvn´ı model (d´ale v textu oznaˇcov´an jako p˚ uvodn´ı) bez uveden´ı techniky renderov´an´ı viz. [8]. V dalˇs´ı pr´aci se pak zab´ yvali vizualizac´ı a pˇridali modelov´an´ı difrakce (viz. kap. 3.3.2.2) za statick´ ymi objekty viz. [9]. Metoda vykreslov´an´ı sc´eny (modifikovan´ y ray-tracing), kterou pˇredstavili je bohuˇzel nevhodn´a pro simulaci v re´aln´em ˇcase. Nicm´enˇe J. C. Gonzato spolupracoval spolu s J. M. Cieutatem a P. Guittonem na adaptaci modelu pro n´amoˇrn´ı simul´ator viz. [4] a j´a jsem tedy pˇri u ´pravˇe modelu pro v´ ypoˇcet v re´aln´em ˇcase vych´azel z t´eto pr´ace. Modelov´an´ı vodn´ıho povrchu dle p˚ uvodn´ıho modelu je rozdˇeleno do dvou rovin. Nejprve jsou v horizont´aln´ı rovinˇe vypoˇcteny trajektorie vlnov´ ych paprsk˚ u pomoc´ı DWT, a potom se pˇri proch´azen´ı tˇechto paprsk˚ u vypoˇc´ıt´av´a profil vln (vertik´aln´ı rovina). Rovnice pro v´ ypoˇcet profilu vln jsem pouˇzil kompletn´ı a t´emˇeˇr nezmˇenˇen´e vyjma dvou vyj´ımek. Vliv hloubky na 4 oh´ yb´an´ı hˇrebenu vlny ve smˇeru p˚ usoben´ı gravitace, jsem upravil z exp−Kd d na exp−Kd d , d´ıky ˇcemuˇz se vrchol pˇrekl´apˇej´ıc´ı vlny oh´ yb´a rychleji a od pˇresnˇeji nastaviteln´e hloubky. D´ale jsem tehdy, kdyˇz byla zmenˇsov´ana hlavn´ı poloosa eliptick´e orbity, zmenˇsil v odpov´ıdaj´ıc´ım pomˇeru i vedlejˇs´ı poloosu. U Algoritmu DWT jsem jsem vych´azel z takov´e podoby, v jak´e je uveden v p˚ uvodn´ım modelu, tedy bez uvaˇzov´an´ı difrakce. Pouze jsem jej zjednoduˇsil a to tak, ˇze jsem zruˇsil atribut AGROUND a paprsek kter´ y se dotkne pobˇreˇz´ı je rovnou oznaˇcen jako DEAD. Kl´ıˇcovou ˇc´ast´ı DWT je lom paprsk˚ u k jehoˇz v´ ypoˇctu je nutn´e zn´at polohu vrstevnice, kterou paprsek prot´ın´a. Pro tento u ´ˇcel jsem implementoval 3 metody, a to v´ ybˇer vrstevnice projit´ım vˇsech vrstevnic (viz. kap. 5.2.3), v´ ybˇer pomoc´ı kd-stromu (viz. kap. 5.2.4) a v´ ypoˇcet vrstevnice z obklopuj´ıc´ıho troj´ uheln´ıku (viz. kap. 5.2.2). Podrobnosti o tˇechto metod´ach jsou uvedeny v popisu odpov´ıdaj´ıc´ıch funkˇcn´ıch blok˚ u (viz. kap. 5.2). Dle autor˚ u se vol´ı krok v´ ypoˇctu (d´elka jednoho u ´seku paprsku) ˇs´ıˇren´ı paprsk˚ u jako konstantn´ı. Uk´azalo se vˇsak, ˇze je daleko v´ yhodnˇejˇs´ı volit tento krok jako adaptivn´ı se z´avislost´ı na hloubce vody (ˇc´ım je hloubka menˇs´ı t´ım je krok menˇs´ı). Vytv´aˇren´ı triangulace povrchu po aplikaci DWT a v´ ypoˇctu profil˚ u vln jsem vytvoˇril s´ am, nebot’ ji autoˇri jen velmi zlehka nast´ınili.
KAPITOLA 5. IMPLEMENTACE 5.1.1
39
Adaptace na realtime
Nyn´ı se zamˇeˇr´ıme na u ´pravy, kter´e maj´ı za u ´kol adaptovat model na v´ ypoˇcet v re´aln´em ˇcase. Prvn´ı u ´prava se t´ yk´a modelov´an´ı v horizont´aln´ı rovinˇe. Budeme uvaˇzovat, ˇze smˇer a rychlost vˇetru je konstantn´ı, a moˇrsk´e dno je statick´e. Tyto pˇredpoklady n´am umoˇzn´ı na poˇc´ atku simulace vypoˇc´ıtat trajektorie paprsk˚ u pomoc´ı DWT jen jednou pro kaˇzd´ y sled vln. Druh´a u ´prava se dotkne modelov´an´ı ve vertik´aln´ı rovinˇe. Moj´ı snahou bylo prov´est co nejv´ıce v´ ypoˇct˚ u pˇredem, a proto se vypoˇctou vˇsechny ˇcasovˇe nez´avisl´e parametry (definuj´ıc´ı profil vlny) na poˇc´atku simulace. Tyto parametry jsou vˇsak z´avisl´e na poloze, a mohou tak b´ yt pro r˚ uzn´e body paprsku jin´e. Jejich v´ ypoˇcet jsem tedy pˇresunul do DWT (budou poˇc´ıt´any pˇri vytv´aˇren´ı trajektorie paprsk˚ u), ˇc´ımˇz jsou pro kaˇzd´ yu ´sek paprsku stanoven´e parametry urˇcuj´ıc´ı tvar vlny. Dalˇs´ı podrobnosti jsou uvedeny v popisu funkˇcn´ıho bloku Vodn´ı povrch (viz. kap. 5.2.5). Posledn´ı u ´prava se t´ yk´a tvorby triangulace povrchu. Aby bylo moˇzn´e renderovat sc´enu standartn´ım zp˚ usobem za pomoc´ı OpenGL bez nutnosti pouˇzit´ı speci´aln´ıho ray-tracingu, je nutn´e se vyhnout prol´ın´an´ı povrchu. Gonzato uv´ad´ı v [4], ˇze se toho dos´ahne omezen´ım v´ ypoˇctu vodn´ıho povrchu pouze na jeden sled vln, nebot’ pak jedn´ım bodem sc´eny proch´az´ı jen jeden paprsek. Bohuˇzel se uk´azalo, ˇze v pˇr´ıpadˇe vln nar´aˇzej´ıc´ıch na ostrov doch´az´ı i v tomto pˇr´ıpadˇe k prot´ınan´ı vlnov´ ych paprsk˚ u (viz. obr. E.8). T´ımto probl´emem se autoˇri nezab´ yvaj´ı a mˇe se jej nepodaˇrilo vyˇreˇsit.
5.2
Sch´ ema funkˇ cn´ıch blok˚ u
Obr´azek 5.1: Blokov´e sch´ema implementace modelu Implementaci simulace vodn´ı hladiny lze rozdˇelit do nˇekolika logick´ ych funkˇcn´ıch celk˚ u. Konkr´etnˇe se jedn´a o V´ yˇskovou mapu ter´enu (1D pole v´ yˇsek, norm´al a troj´ uheln´ık˚ u triangulace), Vrstevnice (seznam u ´sek˚ u vrstevnic), Kd-tree (vyhled´avac´ı strom nad u ´seky vrstevnic), Parametry pˇr´ıkazov´e ˇr´adky (zpracov´an´ı vstupn´ıch parametr˚ u simulace), OpenGL renderov´ an´ı
40
KAPITOLA 5. IMPLEMENTACE
(ˇc´ast aplikace prov´adˇej´ıc´ı renderov´an´ı pomoc´ı OpenGL) a Vodn´ı povrch, kter´ y v sobˇe zahrnuje DWT (seznam vlnov´ ych paprsk˚ u) a V´ ypoˇcet profilu vln. Vztahy mezi jednotliv´ ymi celky jsou vyznaˇceny na obr´azku 5.1. 5.2.1
Parametry pˇ r´ıkazov´ eˇ r´ adky
Jak jiˇz s´am n´azev napov´ıd´a, star´a se tento celek o zpracov´an´ı parametr˚ u simulace, kter´e jsou aplikaci pˇred´av´any pˇres pˇr´ıkazovou ˇr´adku. Parametry jsou pˇred´av´any V´ yˇskov´e mapˇe ter´enu, Vrstevnic´ım a DWT. Konkr´etnˇe jsou to tyto parametry: • V´ yˇskov´a mapa ter´enu – soubor s v´ yˇskovou mapou (nekomprimovan´ y 8-bit shade TGA obr´azek) – n´asob´ıc´ı faktor pro zmˇenu hodnot v´ yˇsky ter´enu – v´ yˇska klidn´e vodn´ı hladiny – krok pro vykreslov´an´ı ter´enu – velikost polomˇeru obklopuj´ıc´ı kruˇznice pˇri v´ ypoˇctu vrstevnice pomoc´ı obklopuj´ıc´ıho troj´ uheln´ıku • Vrstevnice – minim´aln´ı v´ yˇska – maxim´aln´ı v´ yˇska – rozteˇc • DWT – charakteristika vlny (amplituda, vlnov´a d´elka, rychlost ˇs´ıˇren´ı, velikost protaˇzen´ı vrcholu, koeficient vlivu hloubky na protaˇzen´ı vrcholu, koeficient vlivu hloubky na pˇrekl´apˇen´ı vlny) – typ zp˚ usobu urˇcen´ı vrstevnice (naivn´ı, kd-tree, obklopuj´ıc´ı troj´ uheln´ık) – poˇc´ateˇcn´ı vzd´alenost mezi paprsky – velikost jednoho u ´seku paprsku (na poˇc´atku a konci) – minim´aln´ı amplituda pro vznik nov´ ych paprsk˚ u – smˇer fouk´an´ı vˇetru ( sever, jih, v´ ychod, z´apad) – typ v´ ypoˇctu lomu ( paprsek rovnobˇeˇzn´ y s vrstevnic´ı se bud’ l´ame nebo nel´ame) Pokud je zad´ana rychlost vˇetru, pak se dle rovnic (4.13) vypoˇcte amplituda, vlnov´a d´elka a rychlost ˇs´ıˇren´ı. 5.2.2
V´ yˇ skov´ a mapa ter´ enu
Tento celek obsahuje v´ yˇskovou mapu ter´enu naˇctenou z nekomprimovan´eho 8-bit shade TGA obr´azku. Jenodtliv´e v´ yˇsky jsou vyn´asobeny faktorem pro zmˇenu hodnot v´ yˇsky ter´enu. Mapa jako takov´a je reprezentovan´a 1D polem v´ yˇsek. Celek d´ale obsahuje 1D pole norm´al (poˇc´ıt´any z osmi soused´ıc´ıch bod˚ u) a troj´ uheln´ık˚ u, kter´e tvoˇr´ı triangulaci povrchu. V´ yˇskov´a mapa pˇred´av´a celku Vrstevnice pole troj´ uheln´ıku, z pomoc´ı kter´ ych jsou pak vypoˇc´ıt´av´any u ´seky jednotliv´ ych vrstevnic. Celku Kd-tree poskytuje rozmˇery krajiny. Celku DWT poskytuje funkce pro urˇcen´ı hloubky vody, sklonu dna, a urˇcen´ı vrstevnice pomoc´ı obklopuj´ıc´ıho troj´ uheln´ıku. Celku OpenGL renderov´an´ı poskytuje funkci pro vykreslen´ı ter´enu.
KAPITOLA 5. IMPLEMENTACE
41
Hloubka vody na konkr´etn´ı pozici se vypoˇc´ıt´av´a pomoc´ı Biline´arn´ı interpolace viz. [12]. Sklon dna je poˇc´ıt´an ve smˇeru ˇs´ıˇren´ı vlnov´eho paprsku, jako u ´hel kter´ y sv´ır´a vodorovn´ a rovina s pˇr´ımkou urˇcenou dvˇema body v´ yˇskov´e mapy. Jeden z bod˚ u je um´ıstˇen 10 metr˚ u ve smˇeru ˇs´ıˇren´ı a druh´ y 10m proti smˇeru ˇs´ıˇren´ı. Hodnota 10 metr˚ u byla urˇcena empiricky podle pozorov´an´ı vlivu na plynulost profilu vlny, protoˇze pokud se mˇen´ı sklon dna pˇr´ıliˇs rychle, pak je profil vlny kostrbat´ y. Vrstevnice pomoc´ı obklopuj´ıc´ıho troj´ uheln´ıku je metoda z´ısk´av´an´ı vrstevnice proch´ azej´ıc´ı konkr´etn´ım bodem (v´ ychoz´ı bod) povrchu. Nejdˇr´ıve sestroj´ıme rovnostrann´ y troj´ uheln´ık, kter´ y obklopuje v´ ychoz´ı bod tak, aby jeden z vrchol˚ u m´ıˇril ve smˇeru ˇs´ıˇren´ı paprsku. Pot´e urˇc´ıme dva body leˇz´ıc´ı na stran´ach troj´ uheln´ıku, kter´e maj´ı stejnou v´ yˇsku jako v´ ychoz´ı bod a jejich spojen´ım z´ısk´ame vrstevnici. 5.2.3
Vrstevnice
Tento celek obsahuje seznam u ´sek˚ u vrstevnic reprezentovan´ y typem seznam. Od celku V´ yˇskov´a mapa ter´enu z´ısk´av´a pole troj˚ uheln´ık˚ u, kter´e pˇredstavuj´ı povrch ter´enu. Celku Kd-tree poskytuje seznam u ´sek˚ u vrstevnic. Celku DWT, na z´akladˇe poˇzadavku na u ´sek vrstevnice, kter´ y prot´ın´a paprsek, vrac´ı protknut´ yu ´sek vrstevnice. Celku OpenGL renderov´ an´ı poskytuje funkci pro vykreslen´ı vrstevnic. V´ ypoˇ cet u ´ sek˚ u vrstevnic z troj´ uheln´ık˚ u povrchu ter´enu popisuje n´asleduj´ıc´ı pseudok´ od: for (h=min; h<=max; h+=rozteˇ c) { for (i=0; i<poˇ cetTroj´ uheln´ ık˚ u; i++) { if (troj´ uheln´ ık i je cel´ y pod nebo nad h) { continue; } vypoˇ cti_vrstevnici; pˇ ridej_vrstevnici_do_seznamu; } } Slovy ˇreˇceno: pro kaˇzdou v´ yˇsku vrstevnice proch´az´ıme vˇsechny troj´ uheln´ıky povrchu a zjiˇst’ujeme, zda j´ımi neproch´az´ı vrstevnice. Pokud proch´az´ı, pak ji vypoˇcteme tak, ˇze urˇc´ıme dva body na stran´ach troj´ uheln´ıku, kter´e maj´ı stejnou v´ yˇsku jako vrstevnice, a tyto body spoj´ıme. Hled´ an´ı u ´ seku vrstevnice, kterou prot´ın´ a paprsek se v tomto celku prov´ad´ı pomoc´ı naivn´ıho pˇr´ıstupu, coˇz znamen´a, ˇze projdeme vˇsechny u ´seky vrstevnic, a kaˇzd´ y z nich otestujeme na pr˚ useˇc´ık s paprskem. V pˇr´ıpadˇe n´alezu v´ıce u ´sek˚ u vrstevnic, kter´e paprsek prot´ın´a, vybereme ten, kter´ y je nejbl´ıˇze poˇc´atku paprsku. 5.2.4
Kd-tree
Tento celek pˇredstavuje kd-strom sestrojen´ y nad u ´seky vrstevnic a jeho hlavn´ım u ´kolem je urychlovat hled´an´ı u ´seku vrstevnice, kterou prot´ın´a paprsek. Seznam vrstevnic je z´ısk´av´an od celku Vrstevnice. Od celku V´ yˇskov´a mapa jsou pˇreb´ır´ any rozmˇery ter´enu, kter´e slouˇz´ı jako z´akladn´ı test na pr˚ useˇc´ık paprsku se sc´enou. Celku DWT, na z´akladˇe poˇzadavku na u ´sek vrstevnice, kter´ y prot´ın´a paprsek, vrac´ı protknut´ yu ´sek vrstevnice. Celku OpenGL renderov´an´ı poskytuje funkci pro vykreslen´ı hranic oblast´ı kd-stromu. Pˇri stavbˇe Kd-tree jsem postupoval takto: prostor jsem dˇelil stˇr´ıdavˇe podle osy x, z, x, z, . . . a dˇel´ıc´ı pˇr´ımku jsem umist’oval tak, ˇze jsem nejdˇr´ıve proˇsel seznam nezpracovan´ ych u ´sek˚ u vrstevnic a urˇcil minim´aln´ı a maxim´aln´ı hodnotu souˇradnice ( x nebo z podle aktu´aln´ı dˇel´ıc´ı osy). Tu sem pˇr´ıpadnˇe omezil rozmˇery aktu´aln´ıho podprostoru. Dˇel´ıc´ı pˇr´ımku jsem pak um´ıstil uprostˇred tˇechto krajn´ıch hodnot. Dalˇs´ı dˇelen´ı prostoru je ukonˇceno pokud se v aktu´aln´ım
42
KAPITOLA 5. IMPLEMENTACE
podprostoru nal´ezaj´ı 3 nebo m´enˇe u ´sek˚ u vrstevnic, anebo pokud hloubka stromu pˇres´ahne hodnotu 3 + 0.6 log N , kde N je poˇcet u ´sek˚ u vrstevnic. Tuto maxim´aln´ı hloubku jsem stanovil empiricky (na z´akladˇe pozorov´an´ı vlivu na testovac´ıch sc´en´ach) a je tedy moˇzn´e, ˇze nen´ı obecnˇe optim´aln´ı. Hled´an´ı u ´seku vrstevnice, kterou prot´ın´a paprsek se prov´ad´ı pomoc´ı traverzov´ an´ı kd-tree. K tomuto u ´ˇcelu jsem pouˇzil Recursive Ray Traversal Algoritmus T AA uveden´ y v [10]. rec 5.2.5
Vodn´ı povrch
Tento celek zahrnuje konstrukci a animaci vodn´ı hladiny. Dˇel´ı se na dva celky. Jedn´ım je DWT algoritmus (viz. kap. 5.2.5.1), kter´ y slouˇz´ı k vytvoˇren´ı trajektori´ı vlnov´ ych paprsk˚ u a druh´ ym je V´ ypoˇcet profilu vln (viz. kap. 5.2.5.2), kter´ y pro urˇcit´ y ˇcasov´ y okamˇzik spoˇc´ıt´a aktu´aln´ı tvar vln. Celku OpenGL renderov´an´ı poskytuje tento celek funkci, kter´a zkonstruuje a vykresl´ı povrch. Dˇr´ıve neˇz si pop´ıˇseme postup konstrukce a vykreslen´ı, je nutn´e popsat strukturu vlnov´ ych paprsk˚ u, kter´a je v´ ystupem DWT algoritmu. Tyto paprsky jsou uloˇzeny v seznamu, kter´ y je seˇrazen podle jejich sousednosti, tedy paprsek, kter´ y je lev´ ym sousedem ve sc´enˇe je o jednu pozici pˇred paprskem v seznamu a paprsek, kter´ y je prav´ ym sousedem ve sc´enˇe je pak o jednu pozici za paprskem v seznamu. D´ale je kaˇzd´ y paprsek oznaˇcen ˇc´ıslem iterace (krok DWT algoritmu), v kter´e vznikl. Samotn´ y paprsek je pak seznam u ´sek˚ u, z kter´ ych se skl´ad´a. Princip konstrukce povrchu tkv´ı ve vytv´aˇren´ı dvou nebo tˇr´ı troj´ uheln´ık˚ u mezi dvˇema sousedn´ımi pozicemi ve dvou sousedn´ıch paprsc´ıch (viz. obr. 4.13), pˇr´ıpadnˇe jednoho vyhlazovac´ıho torj´ uheln´ıku. M˚ uˇze nastat celkem pˇet r˚ uzn´ ych situac´ı.
Obr´azek 5.2: Konstrukce povrchu vodn´ı hladiny - Situace A
Obr´azek 5.3: Konstrukce povrchu vodn´ı hladiny - Situace B
Situace A (viz. obr. 5.2) nast´av´a pokud je v dan´e iteraci vytvoˇren nov´ y paprsek (paprsek1) mezi okrajem sc´eny a jiˇz existuj´ıc´ımi paprsky (paprsek2). Paprsek1 tak nem´a v pˇredchoz´ı iteraci definov´an bod a nen´ı vytv´aˇren ˇz´adn´ y troj´ uheln´ık. Situace B (viz. obr. 5.3) nast´av´a pokud dva paprsky (paprsek1 a paprsek3) diverguj´ı a v dan´e iteraci byl mezi nimi vytvoˇren nov´ y paprsek (paprsek2). V tomto pˇr´ıpadˇe se vytvoˇr´ı tˇri nov´e troj´ uheln´ıky.
KAPITOLA 5. IMPLEMENTACE
43
Obr´azek 5.4: Konstrukce povrchu vodn´ı hladiny - Situace C
Obr´azek 5.5: Konstrukce povrchu vodn´ı hladiny - Situace D Situace C (viz. obr. 5.4) je nejobyˇcejnˇejˇs´ım pˇr´ıpadem, kdy jsou vytvoˇreny dva troj´ uheln´ıky mezi pozicemi aktu´aln´ı a pˇredchoz´ı iterace. Situace D (viz. obr. 5.5) nast´av´a tehdy, kdyˇz paprsek2 byl v pˇredchoz´ı iteraci oznaˇcen jako DEAD, ale paprsek1 i tak d´ale pokraˇcuje. Aby nebyl pˇrechod mezi sousedn´ımi paprsky hranat´ y, pˇrid´ame k povrchu jeden vyhlazovac´ı troj´ uheln´ık. Situace E (viz. obr. 5.6) je obdobou situace D s t´ım rozd´ılem, ˇze zde je v pˇredchoz´ı iteraci oznaˇcen jako DEAD paprsek1 a paprsek2 pokraˇcuje d´ale. I zde je vytvoˇren jeden vyhlazovac´ı troj´ uheln´ık
Obr´azek 5.6: Konstrukce povrchu vodn´ı hladiny - Situace E
44
KAPITOLA 5. IMPLEMENTACE
Konkr´etn´ı postup konstrukce a vykreslen´ı vodn´ıho povrchu vyjadˇruje n´asleduj´ıc´ı pseudok´od: build=true j=1 while (build) { build=false; i=0; while(i<poˇ cetPaprsk˚ u) { paprsek1 = najdi_aktivn´ ı_paprsek(i,j); i++; paprsek2 = najdi_aktivn´ ı_paprsek(i,j); k1 = j-paprsek1->iter; k2 = j-paprsek2->iter; if ( k1 == 0) { //paprsek1 je nov´ y - situace A continue; } if ( k2 == 0 ) { //paprsek2 je nov´ y - situace B i++; paprsek3 = najdi_aktivn´ ı_paprsek(i,j); k2 = j-paprsek3->iter; if ( k1<poˇ cet_ˇ c´ ast´ ı(paprsek1) && k2<poˇ cet_ˇ c´ ast´ ı(paprsek3) ) { vykresli_3_troj´ uheln´ ıky(); build=true; } } else { if ( k1<poˇ cet_ˇ c´ ast´ ı(paprsek1) && k2<poˇ cet_ˇ c´ ast´ ı(paprsek2) ) { // situace C vykresli_2_troj´ uheln´ ıky(); build=true; } else { if ( k1<poˇ cet_ˇ c´ ast´ ı(paprsek1) && k2>=poˇ cet_ˇ c´ ast´ ı(paprsek2) ) { // situace D vykresli_1_troj´ uheln´ ık(); build=true; } if ( k1>=poˇ cet_ˇ c´ ast´ ı(paprsek1) && k2<poˇ cet_ˇ c´ ast´ ı(paprsek2) ) { // situace E vykresli_1_troj´ uheln´ ık(); build=true; } } } } j++; }
KAPITOLA 5. IMPLEMENTACE
45
Funkce najdi aktivn´ı paprsek(i,j) hled´a od pozice i v seznamu paprsk˚ u prvn´ı paprsek, kter´ y m´a poˇc´atek (byl vloˇzen do seznamu) pˇri iteraci ≤ j. Promˇennou i nastavuje na pozici nalezen´eho paprsku. Pokud nen´ı nalezen ˇz´adn´ y vyhovuj´ıc´ı paprsek, dojde k pˇreruˇsen´ı cyklu while a pokraˇcuje se dalˇs´ı iterac´ı. 5.2.5.1
DWT
Tento celek vytv´aˇr´ı pomoc´ı DWT algoritmu seznam vlnov´ ych paprsk˚ u. Kaˇzd´ y paprsek je sloˇzen z ˇc´ast´ı, kdy v kaˇzd´em kroku (iteraci) algoritmu pˇrid´ame jednu nebo ˇz´adnou ˇc´ast. Paprsek t´eˇz obsahuje ˇc´ıslo kroku v kter´em vznikl, kter´e je vyuˇz´ıv´ano pˇri konstrukci triangulace povrchu. Od celku V´ yˇskov´a mapa vyuˇz´ıv´a funkce pro urˇcen´ı hloubky vody, sklonu dna, a urˇcen´ı vrstevnice pomoc´ı obklopuj´ıc´ıho troj´ uheln´ıku. Celky Vrstevnice a Kd-tree na z´akladˇe poˇzadavku na u ´sek vrstevnice, kter´ y prot´ın´a paprsek, vrac´ı protknut´ y u ´sek vrstevnice. Celku OpenGL renderov´an´ı poskytuje DWT funkci pro vykreslen´ı vlnov´ ych paprsk˚ u a celku V´ ypoˇcet profilu vln poskytuje seznam paprsk˚ u. Nejdˇr´ıve si pop´ıˇseme strukturu paprsku, kter´ y tvoˇr´ı seznam jeho ˇc´ast´ı a ˇc´ıslo kroku v kter´em vznikl. Jednotliv´e ˇc´asti obsahuj´ı informace o poloze, smˇeru ˇs´ıˇren´ı vlny, amplitudu vlny, velikost u ´seku, vlnov´e ˇc´ıslo, hloubku vody, sklon dna, ˇcasovˇe nez´avislou sloˇzku f´azov´eho u ´hlu (P HI), ˇcasovˇe nez´avisl´e parametry vlny (A1 . . . A3, B1 . . . B3, C a parametry funkc´ı Orientation a Displacement), atribut (nab´ yv´a hodnoty ALIVE, FLAT, nebo DEAD) a aktu´aln´ı polohu ˇc´asteˇcky vody, kter´a tvoˇr´ı v´ ysledn´ y povrch (vypoˇc´ıt´av´ana pomoc´ı celku V´ ypoˇcet profilu vln). N´asleduj´ıc´ı rovnice popisuj´ı v´ ypoˇcet ˇcasovˇe nez´avisl´ ych parametr˚ u vlny: 0
A1 = A0 γβ Sx A2 = A0 γβ Sy 0
A3 = Stmax γβ exp−Ks d /π 2 0
B1 = A0 γβ Sy B2 = A0 γβ Sx B3 = Stmax γβ exp−Ks d /π 2 4
C = exp−Kd d
P HIn = P HIn−1 + krok · K ,
(5.1)
kde v´ yznam symbol˚ u odpov´ıd´a origin´aln´ım rovnic´ım modelu (4.23). P HIn−1 pˇredstavuje f´azov´ y u ´hel ˇc´asti paprsku z pˇredch´azej´ıc´ıho kroku algoritmu, pˇriˇcemˇz P HI0 = 0. krok je velikost u ´seku. V´ ypoˇcet parametr˚ u funkc´ı Orientation a Displacement neuv´ad´ım, nebot’ spoˇc´ıv´a pouze v urˇcen´ı parametr˚ u definuj´ıc´ıch pˇr´ımky, z kter´ ych se tyto funkce skl´adaj´ı. Nyn´ı pˇristoup´ıme k popisu DWT algoritmu. O u ´prav´ach, kter´e jsem provedl jsem se jiˇz zm´ınil v u ´vodu (viz. kap. 5).
46
KAPITOLA 5. IMPLEMENTACE
Pseudok´od algoritmu je n´asleduj´ıc´ı: iterace=0; Vytvoˇ r_poˇ c´ ateˇ cn´ ı_paprsky(); iterace++; pracuj=true; while (pracuj) { pracuj=false; for {kaˇ zd´ y paprsek P} { if ( P.atribut == ALIVE || P.atribut == FLAT ) { pracuj=true; ˇ C´ AST = P.posledn´ ı(); smˇ er = Vypoˇ c´ ıtej_lom(ˇ C´ AST); ˇ ˇ ´ Siˇ r_paprsek(CAST, smˇ er); } } Nastav_amplitudy(); Odstranˇ en´ ı_ˇ spiˇ cek(); V´ ypoˇ cet_ˇ casovˇ e_nez´ avisl´ ych_parametr˚ u(); Vytv´ aˇ ren´ ı_nov´ ych_paprsk˚ u(); iterace++; } Funkce Vytvoˇr poˇc´ ateˇcn´ı paprsky vytv´aˇr´ı prvn´ı u ´seky paprsk˚ u ve smˇeru fouk´an´ı vˇetru. F´azov´ y u ´hel je nastaven na nulu a amplituda na poˇc´ateˇcn´ı hodnotu zadanou parametry simulace1 . Funkce Vypoˇc´ıtej lom vypoˇc´ıt´a podle Snellova z´akona lomu nov´ y smˇer paprsku. K tomu je nutn´e zn´at pozici vrstevnice v m´ıstˇe lomu. Tu jsem p˚ uvodnˇe z´ısk´aval pomoc´ı naivn´ıho algoritmu, coˇz znamen´a to, ˇze jsem zjiˇst’oval pr˚ useˇc´ık paprsku postupnˇe se vˇsemi u ´seky vrstevnic a pak vybral tu nejbliˇzˇs´ı. Toto vyb´ır´an´ı bylo vˇsak velmi pomal´e a tak jsem nad u ´seky vrstevnic vytvoˇril kd-tree. Vyzkouˇsel jsem i alternativn´ı metodu, kter´a se snaˇz´ı urˇcit vrstevnici z rovnostrann´eho troj´ uheln´ıku obklopuj´ıc´ıho m´ısto lomu. Parametry simulace dovoluj´ı vybrat jednu z tˇechto ˇ r paprsek. metod. Vrstevnice v m´ıstˇe lomu je vypoˇctena vˇzdy v pˇredchoz´ım kroku ve funkci Siˇ ˇ r paprsek vytvoˇr´ı novou ˇc´ast paprsku ve smˇeru vypoˇcten´em pomoc´ı lomu a ve Funkce Siˇ vzd´alenosti d´elky jednoho u ´seku. Aktu´aln´ı d´elka u ´seku je stanovena jako dx = dmax a pokud je d < λ/2, pak je pouˇzita tato rovnice: 2(dmax − dmin ) d + dmin , (5.2) λ Funkce Nastav amplitudy na z´akladˇe vztahu (4.24) urˇc´ı amplitudy novˇe vytvoˇren´ ych ˇc´ast´ı 2 paprsk˚ u . Funkce Odstranˇen´ı ˇspiˇcek oˇrez´a v pˇredeˇsl´em kroku vypoˇcten´e amplitudy tak, aby jejich rozd´ıl velikost´ı nezp˚ usoboval mezi sousedn´ımi paprsky stoup´an´ı nebo kles´an´ı ˇcela vlny vˇetˇs´ı neˇz 10◦ . Funkce V´ypoˇcet ˇcasovˇe nez´ avisl´ych parametr˚ u vypoˇcte zbyl´e parametry vlny pro novˇe vytvoˇren´e u ´seky paprsk˚ u. Funkce Vytv´ aˇren´ı nov´ych paprsk˚ u pak zkontroluje vzd´alenosti krajn´ıch paprsk˚ u od okraje sc´eny a vzd´alenosti mezi sousedn´ımi paprsky. Pokud pˇrekroˇc´ı nˇekter´a vzd´alenost povolenou mez, tedy od okraje o vzd´alenost, kter´a je mezi paprsky na poˇc´atku ˇs´ıˇren´ı a mezi sousedn´ımi dx =
1
Druh´ a verze programu s koncovkou C m´ a nastaven´ y f´ azov´ yu ´hel i amplitudu jako funkci nˇekolika sinusovek. V´ ysledn´ a amplituda je pr˚ umˇerem z amplitud vypoˇcten´ ych vzhledem k obˇema soused˚ um paprsku, pro kter´ y je amplituda poˇc´ıt´ ana. 2
KAPITOLA 5. IMPLEMENTACE
47
paprsky pak o vzd´alenost 1.5× vzd´alenost mezi paprsky na poˇc´atku ˇs´ıˇren´ı, pak je vytvoˇren nov´ y paprsek. Nov´ y krajn´ı paprsek je vysl´an ve smˇeru p˚ uvodn´ıho paprsku a pˇrej´ım´a od nˇej i velikost amplitudy. Paprsek je vloˇzen bud’ na konec nebo na poˇc´atek seznamu paprsk˚ u (dle m´ısta vzniku). Nov´ y paprsek, kter´ y vznik´a mezi dvˇema sousedn´ımi paprsky, je vysl´an ve smˇeru pr˚ umˇeru mezi smˇery p˚ uvodn´ıch soused˚ u. Zpr˚ umˇerov´ana je i amplituda. Paprsek je vloˇzen do seznamu mezi p˚ uvodn´ımi sousedy. 5.2.5.2
V´ ypoˇ cet profilu vln
Tento celek, kter´ y je ˇc´ast´ı celku Vodn´ı povrch m´a za u ´kol vypoˇc´ıt´avat polohu ˇc´asteˇcek tvoˇr´ıc´ıch vodn´ı hladinu v konkr´etn´ım ˇcase t. Od celku DWT z´ısk´av´a seznam paprsk˚ u, pro kter´ y prov´ad´ı v´ ypoˇcet. Od celku OpenGL renderov´an´ı z´ısk´av´a tento celek konkr´etn´ı hodnotu ˇcasu t. V´ ypoˇ cet profilu vln se prov´ad´ı tak, ˇze se postupnˇe proch´az´ı jednotliv´e vlnov´e paprsky ze seznamu paprsk˚ u. Kaˇzd´a ˇc´ast paprsku je urˇcena svou polohou, kter´a je ch´ap´ana jako pevn´ y bod x = (x0 , z0 ) kolem kter´eho ob´ıh´a ˇc´astice vody, kter´a tvoˇr´ı povrch a vektorem v = (vx, vz), kter´ y urˇcuje smˇer ˇs´ıˇren´ı vlny. Kaˇzd´a ˇc´ast paprsku obsahuje i ˇcasovˇe nemˇenn´e parametry definuj´ıc´ı tvar vlny v dan´em m´ıstˇe. V´ ypoˇcet pozice ˇc´astice vych´az´ı z rovnic (4.23). N´asleduj´ıc´ı pseudok´ od popisuje v´ ypoˇcet s ohledem na pˇredpoˇc´ıtan´e parametry: For (vˇ sechny ˇ c´ asti paprsk˚ u CP) { phi = - omega*time+CP.PHI; UpravPhi(phi); Vypoˇ cti_ˇ casovˇ e_z´ avisl´ e_parametry(phi); tmp = CP.A1*sin(phi)+ CP.A2*cos(phi)+ CP.A3*stretch+ CP.C*displacement*cos(orientation); CP.ax = CP.x0 + (tmp)*CP.vx; CP.az = CP.z0 + (tmp)*CP.vz; CP.ay = ´ uroveˇ n_vodn´ ı_hladiny CP.B1*cos(phi)+ CP.B2*sin(phi)+ CP.B3*stretch+ CP.C*displacement*sin(orientation); } Funkce UpravPhi m´a za u ´kol pˇrev´est u ´hel do rozsahu < −2π, 2π >. Funkce Vypoˇcti ˇcasovˇe z´ avisl´e parametry vypoˇc´ıt´av´a ˇcasovˇe z´avisl´e sloˇzky funkc´ı Orientation, Diplacement a Stretch. Konkr´etn´ı v´ ypoˇcet ˇcasovˇe nemˇen´ ych parametr˚ u uv´adˇej´ı rovnice (5.1). 5.2.6
OpenGL renderov´ an´ı
Tento celek pˇredstavuje ˇc´ast aplikace, kter´a prov´ad´ı renderov´an´ı pomoc´ı OpenGL. Od celk˚ u V´ yˇskov´a mapa, Vrstevnice, Kd-tree, Vodn´ı povrch a DWT vol´a vykreslovac´ı funkce a celku V´ ypoˇcet profilu vln pˇred´av´a aktu´aln´ı hodnotu ˇcasu. K vykreslov´an´ı povrchu vodn´ı hladiny a ter´enu se vyuˇz´ıv´a OpenGL primitiv GL TRIANGLE STRIP. Vlnov´e paprsky se vykresluj´ı pomoc´ı primitiv GL LINE STRIP a vrstevnice spolu s kd-tree pomoc´ı GL LINE.
48
5.3
KAPITOLA 5. IMPLEMENTACE
Konstrukce a animace modelu
Vlastn´ı algoritmus konstrukce a animace vodn´ı hladiny, tak jak jsem jej implementoval, se d´a shrnout n´asleduj´ıc´ım pseudok´odem: Naˇ cten´ ı_v´ yˇ skov´ e_mapy(file); troj´ uheln´ ıky = Konstrukce_s´ ıtˇ e_troj´ uheln´ ık˚ u_ter´ enu(); vrstevnice = Konstrukce_vrstevnic(troj´ uheln´ ıky); Konstrukce_kd-tree(vrstevnice); DWT(); while (animovat) { cas = aktu´ ˇ aln´ ı_ˇ cas_od_poˇ c´ atku_simulace(); V´ ypoˇ cet_profilu_vln(ˇ cas); Konstrukce_a_vykreslen´ ı_vodn´ ı_hladiny(); } Konstrukci a animaci vodn´ı hladiny lze rozdˇelit na dvˇe ˇc´asti, a to na pˇr´ıpravnou a animaˇcn´ı. V pˇr´ıpravn´e f´azi je nejdˇr´ıve naˇctena v´ yˇskov´a mapa ze vstupn´ıho souboru (Naˇcten´ı v´yˇskov´e mapy) a vygenerov´an seznam troj´ uheln´ık˚ u popisuj´ıc´ı povrch ter´enu (Konstrukce s´ıtˇe troj´ uheln´ık˚ u ter´enu). Pomoc´ı tˇechto troj´ uheln´ık˚ u jsou vypoˇcteny u ´seky vrstevnic (Konstrukce vrstevnic). Nad nimi je vytvoˇren kd-tree (Konstrukce kd-tree). D´ale je proveden DWT algoritmus (DWT) pomoc´ı kter´eho se sestroj´ı trajektorie vlnov´ ych paprsk˚ u a spoˇc´ıtaj´ı parametry charakterizuj´ıc´ı profil vln. N´asleduje animaˇcn´ı f´aze, kdy se nejdˇr´ıve z´ısk´a ˇcas bˇehu simulace (aktu´ aln´ı ˇcas od poˇc´ atku simulace) a na jeho z´akladˇe se vypoˇc´ıtaj´ı profily vln (V´ypoˇcet profilu vln), tedy aktu´aln´ı polohy ˇc´asteˇcek vody, kter´e tvoˇr´ı vodn´ı hladinu, a ob´ıhaj´ı kolem pevn´e pozice spojen´e s vlnov´ ym paprskem. Nakonec se sestroj´ı a vykresl´ı vodn´ı povrch (Konstrukce a vykreslen´ı vodn´ı hladiny). Animaˇcn´ı f´aze se opakuje tak dlouho dokud nen´ı animace zastavena, nebo nen´ı ukoˇcena aplikace.
ˇ REN ˇ ´I KAPITOLA 6. ME
49
6 Mˇ eˇ ren´ı Za u ´ˇcelem testov´an´ı funkˇcnosti a mˇeˇren´ı rychlosti implementace jsem vytvoˇril nˇekolik testovac´ıch sc´en. Z nich sem vybral ˇctyˇri, kter´e pˇredstavuj´ı rovnou pl´aˇz (test1), ostrov (test2), zakˇrivenou pl´aˇz (test3) a z´atoku (test5) viz. pˇr´ıloha E.1. Jednotliv´e namˇeˇren´e hodnoty jsou pr˚ umˇerem ze tˇr´ı mˇeˇren´ı. Sc´eny test1 a test2 pˇredstavuj´ı ˇctverec o velikosti 500 × 500m, sc´ena test3 m´a velikost 501 × 501m a sc´ena test5 400 × 400m. Pˇri testov´an´ı byly pouˇzity v´ ychoz´ı hodnoty parametr˚ u −1 (viz. kap. C.3), pˇriˇcemˇz byla uvedena rychlost vˇetru 15ms . Poˇc´ıtaˇc pouˇzit´ y pro mˇeˇren´ı mˇel n´asleduj´ıc´ı konfiguraci: procesor Intel Pentium M 2GHz, ’ pamˇet 1GB RAM a grafickou kartu Ati Mobility Radeon X600. Uv´adˇen´a doba v´ ypoˇctu trajektori´ı paprsk˚ u pomoc´ı DWT zahrnuje, dle typu urˇcov´an´ı vrstevnic, i ˇcas potˇrebn´ y na konstrukci u ´sek˚ u vrstevnic a tvorbu kd-tree. Dobu v´ ypoˇctu pomoc´ı DWT jsem mˇeˇril v z´avislosti na dvou z´akladn´ıch parametrech, kter´ ymi je poˇc´ateˇcn´ı rozestup paprsk˚ u (urˇcuje podrobnost povrchu) a rozestup vrstevnic (urˇcuje pˇresnost v´ ypoˇctu lomu pˇri pouˇzit´ı naivn´ıho algoritmu nebo kd-tree). Mˇeˇren´ı z´avislosti doby v´ ypoˇctu DWT na rozestupu paprsk˚ u a vrstevnic jsem mˇeˇril pouze na sc´enˇe test1, protoˇze u n´ı nedoch´az´ı k l´am´an´ı paprsk˚ u a metody v´ ybˇeru pˇredpoˇc´ıtan´ ych u ´sek˚ u vrstevnic (naivn´ı a kd-tree) poskytuj´ı stejn´e v´ ysledky jako lok´aln´ı v´ ypoˇcet u ´seku vrstevnice z obklopuj´ıc´ıho troj´ uheln´ıku (d´ale jen MOT).
6.1
Mˇ eˇ ren´ı FPS
Obr´azek 6.1: Graf rychlosti vykreslov´an´ı testovac´ıch sc´en Graf 6.1 zobrazuje rychlost vykreslov´an´ı jednotliv´ ych testovac´ıch sc´en a graf 6.2 obsahuje odpov´ıdaj´ıc´ı poˇcet ˇc´ast´ı paprsk˚ u (vytvoˇren´ ych pomoc´ı DWT) a ˇc´ast´ı vrstevnic. Sloupce oznaˇcen´e jako FPS-tabulky pˇredstavuj´ı implementaci, v kter´e byly funkce sinus a cosinus nahrazeny tabulkami jejich hodnot a sloupce FPS pˇredstavuj´ı implementaci vyuˇz´ıvaj´ıc´ı klasick´ ych funkc´ı sinus a cosinus. Z obou graf˚ u je patrn´e to, ˇze poˇcet FPS je nepˇr´ımo u ´mˇern´ y poˇctu ˇc´ast´ı paprsk˚ u, kter´e urˇcuj´ı poˇcet vykreslovan´ ych troj´ uheln´ık˚ u. Pod´ıv´ame-li se na graf 6.3 vid´ıme, ˇze pouˇzit´ı naivn´ı metody, pˇri vyhled´av´an´ı ˇc´asti vrstevnice, je ˇr´adovˇe pomalejˇs´ı, neˇz pouˇzit´ı kd-tree nebo MOT. Kd-tree je zhruba dvakr´at pomalejˇs´ı neˇz MOT.
50
ˇ REN ˇ ´I KAPITOLA 6. ME
Obr´azek 6.2: Graf poˇctu ˇc´ast´ı paprsk˚ u a vrstevnic testovac´ıch sc´en
Obr´azek 6.3: Graf doby v´ ypoˇctu DWT testovac´ıch sc´en
6.2
Z´ avislost doby v´ ypoˇ ctu DWT na velikosti rozestupu paprsk˚ u
Mˇen´ıme-li poˇc´ateˇcn´ı rozestup paprsk˚ u, mˇen´ı se jejich celkov´ y poˇcet a t´ım i celkov´ y poˇcet ˇc´ast´ı paprsk˚ u (viz. graf 6.4). Poˇcet u ´sek˚ u vrstevnic z˚ ust´av´a konstantn´ı. Z grafu 6.5 lze vyˇc´ıst to, ˇze naivn´ı algoritmus je opˇet ˇr´adovˇe pomalejˇs´ı, neˇz kd-tree a MOT. Kd-tree je zhruba dvakrat pomalejˇs´ı neˇz MOT. Z obou graf˚ u je d´ale patrn´a dalˇs´ı z´avislost, a sice pokud se rozestup paprsk˚ u zvˇetˇs´ı dvojn´asobnˇe, pak se zhruba dvojn´asobnˇe zmenˇs´ı poˇcet vygenerovan´ ych u ´sek˚ u paprsk˚ u (ovˇeˇreno pokusem na vˇsech testovac´ıch sc´en´ach) a dvojn´asobnˇe zrychl´ı v´ ypoˇcet DWT, a to nez´avisle na pouˇzit´e metodˇe.
6.3
Z´ avislost doby v´ ypoˇ ctu DWT na velikosti rozestupu vrstevnic
Mˇen´ıme-li rozestup vrstevnic (rozd´ıl v´ yˇsky mezi dvˇema sousedn´ımi vrstevnicemi) mˇen´ı se celkov´ y poˇcet u ´sek˚ u vrstevnic, ale poˇcet vygenerovan´ ych u ´sek˚ u paprsk˚ u z˚ ust´av´a pˇribliˇznˇe stejn´ y (v pˇr´ıpadˇe mˇeˇren´e sc´eny test1 je pˇresnˇe stejn´ y). Pokud se zvˇetˇs´ı rozestup vrstevnic dvakr´at, pak se zhruba dvakr´at zmenˇs´ı i poˇcet u ´sek˚ u vrstevnic (viz. graf 6.6). Z grafu 6.7 lze vyˇc´ıst to, ˇze MOT je nez´avisl´e na zmˇenˇe rozestupu vrstevnic, coˇz je zp˚ usobeno t´ım, ˇze v˚ ubec nevyuˇz´ıv´a pˇredpoˇc´ıtan´ ych vrstevnic. Pod´ıv´ame-li se vˇsak na v´ ysledky naivn´ıho algoritmu a kd-tree vid´ıme,
ˇ REN ˇ ´I KAPITOLA 6. ME
51
Obr´azek 6.4: Graf poˇctu ˇc´ast´ı paprsk˚ u v z´avislosti na rozestupu paprsk˚ u (sc´ena test1)
Obr´azek 6.5: Graf doby v´ ypoˇctu DWT v z´avislosti na rozestupu paprsk˚ u (sc´ena test1) ˇze ˇc´ım je rozestup vrstevnic menˇs´ı, t´ım je doba v´ ypoˇctu vˇetˇs´ı. Zat´ımco u kd-tree nar˚ ust´a doba v´ ypoˇctu jen pozvolna, tak u naivn´ıho odpov´ıd´a n´ar˚ ustu poˇctu u ´sek˚ u vrstevnic.
52
ˇ REN ˇ ´I KAPITOLA 6. ME
Obr´azek 6.6: Graf poˇctu ˇc´ast´ı vrstevnic v z´avislosti na rozestupu vrstevnic (sc´ena test1)
Obr´azek 6.7: Graf doby v´ ypoˇctu DWT v z´avislosti na rozestupu vrstevnic (sc´ena test1)
´ ER ˇ KAPITOLA 7. ZAV
53
7 Z´ avˇ er Simulace tekutin v re´aln´em ˇcase je pomˇernˇe sloˇzit´ y probl´em. Vzhledem k tomu, ˇze neexistuje obecn´e ˇreˇsen´ı, je tˇreba se zamˇeˇrit na konkr´etn´ı situaci a re´aln´e chov´an´ı tekutin aproximovat. V m´em pˇr´ıpadˇe jsem se omezil na vlny na vodn´ı hladinˇe. C´ılem t´eto pr´ace bylo prozkoumat metody modelov´an´ı vodn´ı hladiny a implementovat takov´ y model, kter´ y by umoˇzn ˇoval, co nejvˇernˇeji modelovat vlny pˇri pobˇreˇz´ı. Na rozd´ıl od vln na otevˇren´em moˇri, doch´az´ı na mˇelk´e vodˇe, p˚ usoben´ım moˇrsk´eho dna, k deformaci vln a jejich ˇcela se snaˇz´ı zarovnat s konturou pobˇreˇz´ı. Vˇetˇsina model˚ u, kter´e jsem prostudoval nebyla schopn´ a z´aroveˇ n modelovat l´aman´ı i pˇrekl´apˇen´ı vln, nebo se nedala vypoˇc´ıtat v re´aln´em ˇcase. Nejl´epe ze vˇsech vyhovoval model Gonzato-Le Sa¨ec (viz. kap. 4.2.7), ale i ten bylo nutn´e upravit pro v´ ypoˇcet v re´aln´em ˇcase. M´a implementace umoˇzn ˇuje simulovat vlny na vodn´ı hladinˇe v re´aln´em ˇcase. Vhodn´ ym nastaven´ım poˇc´ateˇcn´ıho rozestupu paprsk˚ u a adaptivn´ıho kroku ˇs´ıˇren´ı paprsk˚ u, kter´e de facto urˇcuj´ı rozmˇery jednotliv´ ych ploˇsek povrchu, lze snadno dos´ahnout postaˇcuj´ıc´ı sn´ımkov´e frekvence (> 30F P S). Model splˇ nuje vˇsechny poˇzadavky uveden´e v kapitole 2. Nen´ı vˇsak zcela bez vady. Pokud dojde k pˇrekˇr´ıˇzen´ı vlnov´ ych paprsk˚ u (napˇr. vlivem ˇspatnˇe namodelovan´eho moˇrsk´eho dna, nebo za ostrovem (viz. obr. E.8), dojde k setk´an´ı vln, kter´e by se mˇeli sloˇzit, coˇz nen´ı podporov´ano a vlny jsou pouze pˇrekresleny jedna pˇres druhou. Tento probl´em se bohuˇzel nepodaˇrilo odstranit, nebot’ vyˇzaduje proveden´ı skl´ad´an´ı povrch˚ u.
7.1
N´ apady na dalˇ s´ı pokraˇ cov´ an´ı pr´ ace
Jako prvn´ı n´amˇet na vylepˇsen´ı mnou proveden´e implementace bych uvedl zrychlen´ı konstrukce triangulace povrchu a jeho vykreslen´ı. Triangulace by mohla b´ yt vytvoˇrena pouze jednou, a to hned po vytvoˇren´ı trajektori´ı paprsk˚ u (DWT) a vykreslov´ana pomoc´ı vertex fields. Mnou uveden´a simulace trp´ı t´ım, ˇze pokud dojde k pˇrekˇr´ıˇzen´ı vlnov´ ych paprsk˚ u respektive vln, nen´ı schopn´a vytvoˇrit vodn´ı hladinu jako superpozici obou vln. Bylo by tedy dobr´e vymyslet zp˚ usob jak identifikovat m´ısta, kde se vlny kˇr´ıˇz´ı a v tˇechto m´ıstech pak vytv´aˇret povrch dle pˇr´ıspˇevk˚ u od obou kˇr´ıˇz´ıc´ıch se vln. Pokud by bylo toto vyˇreˇseno, bylo by moˇzn´e do modelu zahrnout i difrakci za pevnou pˇrek´aˇzkou a odraz vln od pˇrek´aˇzky. Dalˇs´ı zaj´ımavost´ı, kter´a stoj´ı za zm´ınku je vznik vodn´ı pˇeny, kter´a se objevuje pˇri pˇrekl´apˇen´ı vln, a kter´a nen´ı v m´e implementaci uvaˇzov´ana. Ta by mohla b´ yt simulov´ana ˇc´asticov´ ym syst´emem uveden´ ym v pr´aci Fourniera a Reevese [7]. V t´eto pr´aci jsem se zab´ yval pouze modelov´an´ım vln na vodn´ı hladinˇe a neˇreˇsil jsem realistick´e renderov´an´ı, kter´e by bralo v potaz odraz a lom svˇeteln´ ych paprsk˚ u na rozhran´ı vodavzduch. Proto by dalˇs´ım logick´ ym krokem bylo naprogramov´an´ı renderov´an´ı tohoto modelu, pˇri kter´em by se dalo vyuˇz´ıt v dneˇsn´ı dobˇe ˇc´ım d´al t´ım v´ıce obl´ıben´eho programov´an´ı GPU.
54
´ ER ˇ KAPITOLA 7. ZAV
KAPITOLA 8. LITERATURA
55
8 Literatura [1] Perlin noise. www. http://freespace.virgin.net/hugo.elias/models/m_perlin.htm. [2] J. F. Blinn. Simulation of wrinkled surfaces. Computer Graphics, 12(3):286–292, Aug. 1978. [3] J. X. Chen. Physically-based Modeling and Real-time Simulation of Fluids. PhD thesis, University of Central Florida, 1995. [4] J. M. Cieutat, J. C. Gonzato, and P. Guitton. A new efficient wave model for maritime training simulator, Feb. 04 2001. [5] N. Foster and D. Metaxas. Realistic animation of liquids. Graphical models and image processing: GMIP, 58(5):471–483, Sept. 1996. [6] N. Foster and D. Metaxas. Controlling fluid animation. In Proceedings CGI ’97, pages 178–188, 1997. Winner of the Androme Award 1997. [7] A. Fournier and W. T. Reeves. A simple model of ocean waves. In SIGGRAPH ’86: Proceedings of the 13th annual conference on Computer graphics and interactive techniques, pages 75–84, New York, NY, USA, 1986. ACM. [8] J.-C. Gonzato and B. L. Sa¨ec. A phenomenological model of coastal scenes based on physical considerations. In D. Thalmann and M. van de Panne, editors, Computer Animation and Simulation ’97, Eurographics, pages 137–148. Springer-Verlag Wien New York, 1997. [9] J.-C. Gonzato and B. L. Sa¨ec. On modelling and rendering ocean scenes. Journal of Visualization and Computer Animation, 11(1):27–37, 2000. [10] V. Havran. Heuristic Ray Shooting Algorithms. Ph.d. thesis, Department of Computer Science and Engineering, Faculty of Electrical Engineering, Czech Technical University in Prague, November 2000. [11] Z. Hor´ak and F. Krupka. Fyzika, Pˇr´ıruˇcka pro fakulty strojn´ıho inˇzen´yrstv´ı. St´atn´ı nakladatelstv´ı technick´e literatury, Praha, 1966. in Czech. ˇ ara, B. Beneˇs. Modern´ı poˇc´ıtaˇcov´ [12] P. F. J. Z´ a grafika. Computer Press s.r.o, Brno, 1st edition, 1998. in Czech. [13] C. Johanson. Real-time water rendering - introducing the projected grid concept. Master’s thesis, Lund University, 2004. [14] G. Jones. Ocean101 course - slides. Bellevue Community Coledge, Washington. http://scidiv.bcc.ctc.edu/gj/#Ocean101. ˇ [15] D. Kalita. Modelov´an´ı a renderov´an´ı vodn´ı hladiny. Master’s thesis, FEL CVUT Praha, 2001. in Czech. [16] M. Kass and G. Miller. Rapid, stable fluid dynamics for computer graphics. Computer Graphics (SIGGRAPH ’90 Proceedings), 24(4):49–57, Aug. 1990. [17] J. A. Knauss. Introduction to physical oceanography - slides. College of Marine Studies, University of Delaware. http://www.cms.udel.edu/mast602/. [18] N. L. Max. Vectorized procedural models for natural terrain: Waves and islands in the sunset. Computer Graphics, 15(3):317–324, Aug. 1981.
56
KAPITOLA 8. LITERATURA
[19] V. Mihalef, D. Metaxas, and M. Sussman. Animation and control of breaking waves. pages 315–324. [20] K. Ondrejka. Rekordy Zemˇe 1 - neˇziv´ a pˇr´ıroda, volume 1. Slovensk´a kartografia, Bratislava, SK, prvn´ı edition, 1992. [21] D. R. Peachey. Modeling waves and surf. Computer Graphics (SIGGRAPH ’86 Proceedings), 20(4):65–74, Aug. 1986. [22] B. Robertson. Shallow water ocean waves including tsunamis - slides. Columbia University in the City of New York, NY. www.earth2class.org/k12/w4_f2005/shallowWaterWaves.pdf. ˇ [23] V. Spev´ak. Simulace vodn´ı hladiny. Master’s thesis, FEL CVUT Praha, 2006. in Czech. [24] M. Sussman. A second order coupled level set and volume of fluid method for computing the growth and collapse of vapor bubbles. In Journal of Computational Physics, volume 187, pages 110–136, 2003. [25] J. Tessendorf. Simulating ocean water. SIGGRAPH ’99, pages 3–1—3–18, April 1999. [26] P. Y. Ts’o and B. A. Barsky. Modeling and rendering waves: Wave-tracing using betasplines and reflective and refractive texture mapping. ACM Transactions on Graphics, 6(3):191–214, July 1987.
ˇ YCH ´ DODATEK A. SEZNAM POUZIT ZKRATEK
A Seznam pouˇ zit´ ych zkratek 1D One-dimensional (jednorozmˇern´ y) 2D Two-dimensional (dvojrozmˇern´ y) 3D Three-dimensional (trojrozmˇern´ y) CLSVOF Combined Level Set and VOlume Fluid DWT Dynamic Wave Tracing (dynamick´e sledov´an´ı paprsk˚ u vln) FFT Fast Fourier Transformation (rychl´a Fourierova transformace) FPS Frames Per Second (sn´ımkov´a frekvence) GPU Graphic Processing Unit (procesor na grafick´e kartˇe) IFFT Inverse Fast Fourier Transformation (inverzn´ı rychl´a Fourierova transformace) MOT Metoda Obklopuj´ıc´ıho Troj´ uheln´ıku N-S Navier-Stokes WT Wave Tracing (sledov´an´ı paprsk˚ u vln)
57
58
ˇ YCH ´ DODATEK A. SEZNAM POUZIT ZKRATEK
ˇ E ´ V TEXTU DODATEK B. SYMBOLY POUZIT
B Symboly pouˇ zit´ e v textu Symbol α β δ η γβ λ ν ω ρ φ θ A B C d f g H K K K0 Kd Ks Kx Ky n p q r Rk s S Sx Sy Stmax t T Tk v V x, y, z x0 , y0 , z0 w
Jednotka rad rad Pa · s m m2 · s−1 rad · s−1 kg · m−3 rad rad m m · s−1 m m · s−2 m rad · m−1
Pa
s s m · s−1 m · s−1 m m
Popis u ´hel sklon dna parametr dynamick´a viskozita parametr vlnov´a d´elka kinematick´a viskozita u ´hlov´a rychlost hustota f´azov´ yu ´hel u ´hel amplituda parametr f´azov´a rychlost hloubka vody objemov´e zrychlen´ı t´ıhov´e zrychlen´ı na Zemi ≈ 9.806 v´ yˇska vlny vlnov´ y vektor vlnov´e ˇc´ıslo parametr parametr parametr parametr parametr index lomu tlak smˇerov´a promˇenn´a smˇerov´a promˇenn´a koeficient odrazivosti koeficient strmost parametr parametr parametr ˇcas perioda koeficient propustnosti rychlost rychlost vˇetru pozice bodu v ˇcase t pozice pevn´eho bodu vektor smˇeru vˇetru
Tabulka B.1: Tabulka symbol˚ u
59
60
ˇ E ´ V TEXTU DODATEK B. SYMBOLY POUZIT
ˇ ´ / INSTALACN ˇ ´I PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
61
C Uˇ zivatelsk´ a / instalaˇ cn´ı pˇ r´ıruˇ cka Aplikace je naps´ana v C++ ve v´ yvojov´em prostˇred´ı Microsoft Visual .NET Studio 2003 a vyuˇz´ıv´a QT toolkit verze 4.2.2, kter´ y v sobˇe zahrnuje i podporu pro OpenGL. Aplikace byla testov´ana pouze pod operaˇcn´ım syst´emem Windows XP, ale mˇela by fungovat i pod Windows NT a Windows 2000. Poˇzadavky na hardware z´avis´ı na spouˇstˇen´em souboru. Ocean.exe a OceanC.exe je moˇzn´e spustit na jak´emkoliv procesoru. OceanP4.exe a OceanP4C.exe je optimalizov´an na procesor s architekturou Pentium 4 a novˇejˇs´ı s vyuˇzit´ım instrukc´ı SSE2. Jako Grafick´a karta postaˇcuje k bˇehu jak´akoliv karta s podporou OpenGL. Pokyny pro instalaci jsou uvedeny v kap. C.1. Aplikace se ovl´ad´a pomoc´ı kl´avesnice a podrobnˇejˇs´ı informace o v´ yznamu vyuˇz´ıvan´ ych kl´aves jsou uvedeny v kap. C.2. Parametry simulace, vˇcetnˇe souboru s v´ yˇskovou mapou ter´enu, se pˇred´avaj´ı aplikaci pˇres pˇr´ıkazovou ˇr´adku. Popis jednotliv´ ych parametr˚ u je uveden v kap. C.3.
C.1
Instalace
Aplikaci nen´ı nutn´e instalovat. Vˇsechny potˇrebn´e soubory lze nal´ezt v adres´aˇri exe.
C.2
Popis ovl´ ad´ an´ı aplikace
Aplikace se ovl´ad´a pouze pomoc´ı kl´avesnice. V´ yznam jednotliv´ ych kl´aves je n´asleduj´ıc´ı: A - spouˇstˇen´ı a zastavov´an´ı animace vodn´ı hladiny C - zobrazen´ı kontur (vrstevnic) K - pˇrep´ın´an´ı kamery mezi nadhledem (pohled na celou sc´enu) a pohybem ve sc´enˇe (pr˚ ulet nebo ch˚ uze) L - zap´ın´an´ı a vyp´ın´an´ı osvˇetlen´ı sc´eny M - pˇrep´ın´an´ı mezi Fournier-Reeves modelem a Gonzato-Le Sa¨ec modelem (pˇrekl´apˇen´ı vln) O - pˇrep´ın´an´ı mezi ortho (pˇri pˇrepnut´ı p˚ udorys) a perspektivn´ım pohledem Q - zobrazen´ı hloubky vody v m´ıstˇe kamery R - zobrazen´ı paprsk˚ u DWT algoritmu S - zobrazen´ı vodn´ı hladiny T - zobrazen´ı kd-stromu (jen pokud je pouˇzit) W - pˇrep´ın´an´ı mezi dr´atov´ ym a vyplˇ novan´ ym modelem vodn´ı hladiny Z - zap´ın´a a vyp´ın´a vyhlazov´an´ı okraj˚ u vln pˇri pobˇreˇz´ı 2 - rotace kamery kolem osy x (pohled smˇerem dol˚ u) 4 - rotace kamery kolem osy y (pohled doleva) 5 - pokud je kamera v m´odu nadhled, pak zmˇen´ı smˇer rotace kamery tak, aby smˇeˇrovala do stˇredu sc´eny 6 - rotace kolem osy y (pohled doprava)
ˇ ´ / INSTALACN ˇ ´I PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
62
8 - rotace kolem osy x (pohled nahoru) F1 - maximalizace okna aplikace Space - pˇrep´ın´an´ı kamery mezi ch˚ uz´ı po povrchu a pr˚ uletem krajinou ← : nadhled - rotace sc´eny kolem osy y (proti smˇeru hodinov´ ych ruˇciˇcek) pr˚ ulet/ch˚ uze - nic → : nadhled - rotace kolem osy y (po smˇeru hodinov´ ych ruˇciˇcek) pr˚ ulet/ch˚ uze - nic ↑ : nadhled - rotace kolem osy x (proti smˇeru hodinov´ ych ruˇciˇcek) pr˚ ulet/ch˚ uze - pohyb ve smˇeru pohledu kamery (dopˇredu) ↓ : nadhled - rotace kolem osy x (po smˇeru hodinov´ ych ruˇciˇcek) pr˚ ulet-ch˚ uze - pohyb proti smˇeru pohledu kamery (dozadu) PageUp : nadhled - vzdalov´an´ı kamery od povrchu ch˚ uze/pr˚ ulet - zv´ yˇsen´ı rychlosti pohybu PageDown : nadhled - pˇribliˇzov´an´ı kamery k povrchu ch˚ uze/pr˚ ulet - sn´ıˇzen´ı rychlosti pohybu
C.3
Pˇ r´ıkazov´ aˇ r´ adka
Vˇsechny parametry simulace vodn´ı hladiny se pˇred´avaj´ı do prostˇred´ı aplikace prostˇrednictv´ım pˇr´ıkazov´e ˇr´adky. Pouˇzit´ı jednotliv´ ych parametr˚ u je n´asleduj´ıc´ı: Ter´ en : -f filename cesta k souboru s v´ yˇskovou mapou ter´enu (nekomprimovan´ y 8-bit shade TGA) - v´ychoz´ı hodnota = ”” -m ˇ c´ıslo n´asob´ıc´ı faktor pro zmˇenu hodnot v´ yˇsky ter´enu - v´ychoz´ı hodnota = 0.2 -H ˇ c´ıslo v´ yˇska klidn´e vodn´ı hladiny (m) - v´ychoz´ı hodnota = 20 -s ˇ c´ıslo krok pro vykreslov´an´ı ter´enu (m) - v´ychoz´ı hodnota = 10 Vrstevnice : -a ˇ c´ıslo minim´aln´ı v´ yˇska vrstevnice (m) - v´ychoz´ı hodnota = 2 -b ˇ c´ıslo maxim´aln´ı v´ yˇska vrstevnice (m) - v´ychoz´ı hodnota = 25 -r ˇ c´ıslo rozteˇc vrstevnic (m) - v´ychoz´ı hodnota = 0.5
ˇ ´ / INSTALACN ˇ ´I PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
63
-t ˇ c´ıslo velikost polomˇeru obklopuj´ıc´ı kruˇznice pˇri v´ ypoˇctu vrstevnice pomoc´ı troj´ uheln´ıku (m) - v´ychoz´ı hodnota = 1 -c ˇ c´ıslo typ zp˚ usobu urˇcen´ı vrstevnice - v´ychoz´ı hodnota = 2 0 = naivn´ı (v´ ybˇer konkr´etn´ı vrstevnice z pˇredpoˇc´ıtan´ ych proch´azen´ım vˇsech vrstevnic) 1 = kd-tree (v´ ybˇer konkr´etn´ı vrstevnice z pˇredpoˇc´ıtan´ ych pomoc´ı kd-tree ) 2 = troj´ uheln´ık (v´ ypoˇcet vrstevnice z obklopuj´ıc´ıho troj´ uheln´ıku) Vlny : -A ˇ c´ıslo amplituda vln (m) - v´ychoz´ı hodnota = 8 -L ˇ c´ıslo vlnov´a d´elka (m) - v´ychoz´ı hodnota = 116 -v ˇ c´ıslo rychlost ˇs´ıˇren´ı vlny (m/s) - v´ychoz´ı hodnota = 14 -V ˇ c´ıslo rychlost vˇetru (m/s), pokud je zad´ana pak jsou na jej´ım z´akladˇe vypoˇcteny odpov´ıdaj´ıc´ı parametry vlny (amplituda, vlnov´a d´elka, rychlost ˇs´ıˇren´ı) - v´ychoz´ı hodnota = nezad´ ano -S ˇ c´ıslo velikost protaˇzen´ı vrcholu vlny - v´ychoz´ı hodnota = 5 -g ˇ c´ıslo koeficient vlivu hloubky na protaˇzen´ı vrcholu vlny - v´ychoz´ı hodnota = 0.005 -G ˇ c´ıslo koeficient vlivu hloubky na pˇrekl´apˇen´ı vlny - v´ychoz´ı hodnota = 0.001 DWT : -l ˇ c´ıslo poˇc´ateˇcn´ı vzd´alenost mezi paprsky (m) - v´ychoz´ı hodnota = 5 -d velikost jednoho u ´seku paprsku (na poˇc´atku) (m) - v´ychoz´ı hodnota = 10 -D velikost jednoho u ´seku paprsku (na konci) (m) - v´ychoz´ı hodnota = 0.1 -M minim´aln´ı amplituda pro vznik nov´ ych paprsk˚ u (m) - v´ychoz´ı hodnota = 0.1 -z smˇer fouk´an´ı vˇetru - v´ychoz´ı hodnota = E N,n = z jihu na sever S,s = ze severu na jih E,e = ze z´apadu na v´ ychod W,w = z v´ ychodu na z´apad -R typ v´ ypoˇctu lomu - v´ychoz´ı hodnota = 0 0 = paprsek rovnobˇeˇzn´ y s vrstevnic´ı se nel´ame 1 = paprsek rovnobˇeˇzn´ y s vrstevnic´ı se l´ame Ostatn´ı : -h zobraz´ı n´apovˇedu
64
ˇ ´ / INSTALACN ˇ ´I PR ˇ ´IRUCKA ˇ DODATEK C. UZIVATELSK A
ˇ ˇ EHO ´ DODATEK D. OBSAH PRILO ZEN CD
D Obsah pˇ riloˇ zen´ eho CD • index.html - v´ ychoz´ı str´anka projektu • install.txt - postup instalace aplikace • readme.txt - popis obsahu adres´aˇr˚ u a spouˇstˇen´ı aplikace • [bat] - d´avkov´e soubory pro spuˇsten´ı aplikace s pouˇzit´ım testovac´ıch sc´en • [data] – [sceny] - testovac´ı sc´eny – [texty] - elektronick´e dokumenty, z kter´ ych jsem ˇcerpal informace • [exe] - vlastn´ı aplikace s potˇrebn´ ymi knihovnami • [html] - dokumentace v html – [doxygen] - dokumentace aplikace vytvoˇren´a pomoc´ı doxygenu – [abstract] - kr´atk´ y abstrakt – [RabstrCZ] - rozˇs´ıˇren´ y abstrakt v ˇceˇstinˇe – [RabstrAJ] - rozˇs´ıˇren´ y abstrakt v angliˇctinˇe • [src] - zdrojov´e soubory aplikace • [text] - text diplomov´e pr´ace v PDF
65
66
ˇ ˇ EHO ´ DODATEK D. OBSAH PRILO ZEN CD
´ DODATEK E. OBRAZKY
E Obr´ azky E.1
Testovac´ı sc´ eny
Obr´azek E.1: Ter´en testovac´ı sc´eny test1
Obr´azek E.2: Ter´en testovac´ı sc´eny test2
Obr´azek E.3: Ter´en testovac´ı sc´eny test3
Obr´azek E.4: Ter´en testovac´ı sc´eny test5
67
68
´ DODATEK E. OBRAZKY
Obr´azek E.5: Vlnov´e paprsky na pl´aˇzi vytvoˇren´e pomoc´ı DWT
´ DODATEK E. OBRAZKY
69
Obr´azek E.6: Pohled na pl´aˇz z ptaˇc´ı perspektivy
Obr´azek E.7: Vlny na pl´aˇzi
70
´ DODATEK E. OBRAZKY
Obr´azek E.8: Vlnov´e paprsky kolem ostrova vytvoˇren´e pomoc´ı DWT
´ DODATEK E. OBRAZKY
71
Obr´azek E.9: Pohled na ostrov z ptaˇc´ı perspektivy
Obr´azek E.10: Vlny kolem ostrova
72
´ DODATEK E. OBRAZKY
Obr´azek E.11: Vlnov´e paprsky na nerovn´e pl´aˇzi vytvoˇren´e pomoc´ı DWT
´ DODATEK E. OBRAZKY
73
Obr´azek E.12: Pohled na nerovnou pl´aˇz z ptaˇc´ı perspektivy
Obr´azek E.13: Vlny na nerovn´e pl´aˇzi
74
´ DODATEK E. OBRAZKY
Obr´azek E.14: Vlnov´e paprsky v z´atoce vytvoˇren´e pomoc´ı DWT
´ DODATEK E. OBRAZKY
75
Obr´azek E.15: Pohled z´atoku z ptaˇc´ı perspektivy
Obr´azek E.16: Vlny v z´atoce