Ostvariti sjenčanje poligona i mehanizam za rješavanje problema presjecanja dvaju poligona.
U vježbi koristimo Z-spremnik i algoritam DDA. Z-spremnikom možemo bez složenih proračuna ostvariti mogućnost međusobnog presjecanja poligonâ. Algoritam DDA nam koristi za određivanje skupa lijevih i desnih vrijednosti pri raspodjeli nekog raspona vrijednosti; u ovom slučaju raspodjeljujemo x-koordinate, z-koordinate i intenzitet svjetla po pojedinim ispitnim horizontalnim linijama. (Pod z-koordinatama podrazumijevamo udaljenost od očišta.) Njime je za svaku ispitnu liniju odabrana samo po jedna vrijednost iz danog raspona.
Algoritmom DDA formiramo lijeve i desne skupove za x-koordinate, z-koordinate i intenzitet svjetla. Uz evidentiranje z-koordinata u Z-spremniku, iscrtavamo zadane poligone, tj. sjenčamo ih.
Algoritam DDA se može prikazati u pseudokodu:
Neka je početna točka (xs, ys) a završna točka (xe, ye). Ako je ys = ye, tada: Ako je xs < xe, tada: Postavi L[ys] = xs Inače: Postavi D[ys] = xs Inače: Postavi xi = xs Postavi xf = - abs (ye - ys) Postavi mi = abs ((xe - xs) / (ye - ys)) Postavi mf = 2 * abs ((xe - xs) % (ye - ys)) Počni od y = ys i ponavljaj sve dok je y != ye + sgn (ye - ys): Ako je ye < ys, tada: Postavi L[y] = xi Inače: Postavi D[y] = xi Povećaj xi za mi * sgn (xe - xs) Povećaj xf za mf Ako je xf >= 0, tada: Povećaj xi za sgn (xe - xs) Umanji xf za 2 * abs (ye - ys) Povećaj y za sgn (ye - ys) Dno petlje. Gotovo.
Program očekuje da mu se navede ulazna datoteka kao parametar:
Lab6.exe ulaz.txt
Ulazna datoteka je u sljedećem formatu: u prvoj liniji nalazi se naveden broj vrhova prvog poligona, zatim slijede za svaku točku poligona koordinate x, y i z, te intenzitet boje, i zatim se svi ti podaci navode jednako i za drugi poligon.
Primjer ulazne datoteke:
10 219 92 0 159 281 139 0 128 357 137 0 87 333 209 0 101 357 281 0 87 281 281 0 129 221 324 0 160 199 253 0 172 137 208 0 205 199 166 0 172 3 508 182 -10 200 362 337 25 50 251 167 -12 250
daje sljedeći prikaz:
Ante Radman, Laboratorijske vježbe iz Računalne grafike, šk. godina 2003/2004.