Analiza
Analiza fraktalnog generatora
Kod fraktalnog generatora koristi se samo jedna varijabla za kontrolu kakav će
se rezultat ovim algoritmom dobiti, a to je grubost (engl. roughness). Promjenom te
varijable određuje se najveće odstupanje od početne visine. Grubost se monotono smanjuje
pri svakoj rekurzivnoj propagaciji.
Mijenjanjem grubosti mogu se dobiti različiti tipovi terena koji se mogu vidjeti
na slici 25. Očito je da za najveći r, teren je najgrublji, odnosno visinske razlike su najveće.
Zanimljivije je uočiti da nije samo bitna početna vrijednost grubosti terena.
Jako je bitno na koji način opada ta vrijednost. Naime, nije svejedno je li to linearno, dijeli
li se u svakom koraku, traži li se korjen u svakom koraku ili neka druga operacija. Stoga je
implementirana i mogućost promjene tih parametara, a rezultati se mogu vidjeti na slici 26.
Linearno opadanje grubosti je ponešto sporo, no izgleda prilično prirodno.
Opadanje dijeljenjem s 2, također u svakom slučaju izgleda vrlo prirodno. Korištenjem
korjena kao funkcije opadanja grubosti terena jako se brzo guše visoke frekvencije u
terenu, tako da nam ostaje utjecaj samo prvih nekoliko koraka algoritma.
Ovo su korištene operacije kao zakon opadanja za pojedini tip
case LIN:
roughness-=40;
case DIV:
roughness>>=1;
case SQRT:
roughness=sqrt(roughness);
, gdje je roughness vrijednost grubosti terena za tu razinu
Jednostavnom analizom se dolazi do spoznaje da za linearno opadanje
grubosti, za dubinu od 7 grubost iznosi 0. Kod opadanja dijeljenjem za to je potrebna
dubina od 8, a za opadanje pomoću korjena, zbog zaokruživanja brojeva, na 1 se pada već
nakon četvrte razine. To znači da se sve niže razine od ovdje navedenih mogu smatrati
zanemarenima za određeni slučaj.Zaključak je da odabiranje zakona opadanja grubosti terena daje još jednu dimenziju
fraktalnom generatoru terena.
Analiza ROAM algoritma
Kod ROAM algoritma najzanimljivije je za promatrati ovisnost broja okvira po
sekundi (engl. frames per second, FPS) o veličini visinske mape.
Slika 27 i slika 28 se moraju gledati zajedno, inače je moguće doći do
pogrešnih zaključaka. Dakle, broj okvira po sekundi usko je vezan s brojem trokuta po
sekundi. Broj trokuta koji se koristi je postavljen na 80 000. Za vrijeme rada programa, taj
se broj smije prijeći, ali će se povratnom vezom pokušati vratiti na vrijednost od oko 80
000.
Veličina terena ne utječe na broj sličica u sekundi, osim ako je veličina terena
previše malena za zadani broj trokuta, kao u slučaju visinske mape 256x256. Takav slučaj
je besmislen, jer je to ekvivalentno iscrtavanju bez ikakvog algoritma za upravljanjem
detaljima.
Pomoću ova dva grafa dokazano je da je ROAM algoritam pogodan za prikazivanje velikih
terena po pitanju brzine, jer veličina visinske mape ne utječe na rad algoritma.
Slijedeća korisna informacija je ovisnost broja okvira po sekundi o broju
Vidimo da broj okvira po sekundi brzo konvergira prema nuli, što je i
očekivano, jer svaki dodatni trokut predstavlja dodatno opterećenje i glavnom procesoru
koji mora analizirati pogrešku za trokut i odlučiti treba li ga crtati i za grafičku karticu koja
taj trokut mora iscrtati.
Algoritam je pogodan za dodavanje sustava za određivanje vidljivog volumena.
Nakon implementacije tog sustava je ustanovljeno da on stavlja preveliki pritisak na glavni
procesor i da performanse padaju. Iz toga razloga je on isključen predprocesorskom
naredbom. Informacija koju možemo izvući iz ovoga je da je glavni procesor usko grlo
ovog algoritma, usprkos korištenju cjelobrojnih varijabli da bi pojednostavili operacije.
Ovaj rezultat se u zadnje vrijeme često javlja, a uzrok tomu je nesrazmjeran razvoj
grafičkih procesora i klasičnih procesora. Današnji grafički procesori su veoma brzi i
optimiziran, u stanju isporučiti velik broj obrađenih poligona u sekundi. Ovaj je algoritam
je iz doba dok to nije bilo tako. Tada se na glavnom procesoru radilo sve što je bilo
moguće da bismo rasteretili grafičku karticu, dok je danas to često suvišno.
|