UNIVERSITETET I OSLO De maemaisk-naurvienskapelige fakule Eksamen i INF3320 Meoder i grafisk daabehandling og diskre geomeri Eksamensdag: 2. desember 2009 Tid for eksamen: 14.30 17.30 Oppgavesee er på 5 sider. Vedlegg: Tillae hjelpemidler: Ingen Ingen Hver oppgave eller like mye Konroller a oppgavesee er komple før du begynner å besvare spørsmålene. Oppgave 1 Daa-grafikk Forklar følgende begreper i daagrafikk-sammenheng: 1. View frusum. 2. Frame-buffer. 3. Aliasing. 4. Fragmen. 5. α-blending. 6. Rayracing. 1. View frusum: De område av romme som kan sees med en gi kameramodell, avgrense av e near og e far klippeplan. 2. Frame-buffer: En samling av buffere som brukes i rendering i OpenGL, f.eks fargebuffer, z-buffer, sencile-buffer og accumulaion-buffer. 3. Aliasing: Arefaker som oppsår når en sampler med for lav frekvens. Dee forekommer ofe i daagrafikk, f.eks dersom en skal egne en rekan med en gi farge. Trekanen kan sees som e signal med uendelig høy frekvens og de er ikke mulig å sample dee med ilsrekkelig frekvens. Diagonale linjer får forsyrrende rapperinn effeker. (Forsees på side 2.)
Eksamen i INF3320, 2. desember 2009 Side 2 4. Fragmen: E produk av raserisering, ilsvarende en bi av geomeri som svarer il e pixel. Assosier med e fragmen er ulike yper daa, som f.eks farge, som brukes f.eks il å fargesee pixele. 5. α-blending: Kombinasjon mellom f.eks e fragmen med forgrunnsfarge og en bakgrunnsfarge i fargebufferen, ved bruk av α-verdi: (1 α)f + αb. 6. Rayracing: En global rendering eknikk der en for hver pixel følger en enk lys-sråle fra kamera og gjennom pixelsenere. Når srålen reffer en flae beregnes e fargebidrag, refleksjoner mm. Srålen kan sendes videre e anall ganger. Oppgave 2 Homogene koordinaer og ransformasjoner 1. Hva er affine ransformasjoner? Hvordan kan de represeneres ved hjelp av mariser og homogene koordinaer? Gi eksempel på ransformasjonsmariser for henholdsvis ranslasjon, skalering og roasjon en vinkel θ rund en koordina-akse i R 3. 2. Forklar hvordan en ved hjelp av mariser som i forrige oppgave kan bygge opp en ransformasjon som roerer e objek i R 3 en vinkel θ rund en linje definer ved e punk p og en vekor v. Skisser OpenGL kode for ransformasjonen. 3. Hvordan kan en uføre ransformasjonen i forrige oppgave ved hjelp av kvaernioner? 1. En affin ransformasjon f ilfredssiller f(αx+βy) = αf(x)+βf(y) for alle α+β = 1 for alle x, y. I R 3 besår en affin ransformasjon av en ranslasjon og en lineær ransformasjon, [ ] A f(x) = Ax +. Disse kan represeneres ved en 4 4-marise på formen M = 0 1 som for hver vekor x = (x, y, z) opererer på dens homogene koordinavekor (x, y, z, 1). Eksempler (ranslasjon, skalering og roasjon rund z-aksen): 1 0 0 x s x 0 0 0 cos(θ) sin(θ) 0 0 0 1 0 y 0 0 1 z, 0 s y 0 0 0 0 s z 0, sin(θ) cos(θ) 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 2. En må førs ranslaere p il origo, dereer uføre roasjonen rund valg vekor, før en ranslaerer ilbake il ugangspunke p: T (p)r v (θ)t ( p). Roasjonsmarisen R v (θ) kan bygges ved akse-roasjoner som over, ved å roere v ned på en koordinaakse, roere en vinkel θ rund denne, og så roere ilbake. OpenGL kode: gltranslae3f( p x, p y, p z ); glroae3f(θ, v x, v y, v z ); gltranslae3f(p x, p y, p z ); (Forsees på side 3.)
Eksamen i INF3320, 2. desember 2009 Side 3 3. En kan bye u roasjonsmarisen med en kvaernione-operasjon: R v (θ)x = rxr der r er kvaernionen gi ved r = [ sin(θ/2)v, cos(θ/2) ] T Oppgave 3 Subdivision La T være en riangulering av enheskulen i R 3, dvs. verexene il T ligger på kulen og rianguleringen er lukke. La V (T ), E(T ) og F (T ) være henholdsvis analle verexer, edger og polygoner (faces) i T. La T 1 være resulae av e seg med Camull-Clark subdivision anvend på T. 1. Illusrer opologien il T 1 med referanse il en rekan i T. Urykk V (T 1 ), E(T 1 ) og F (T 1 ) ved hjelp av V (T ), E(T ) og F (T ). 2. Hvilke genus og Euler-karakerisikk har henholdsvis T og T 1? Urykk Eulerkarakerisikken il T 1 ved hjelp av V (T 1 ), E(T 1 ) og F (T 1 ). 3. Er T 1 innehold i enheskulen? Er Camull-Clark grenseflaen med hensyn på T innehold i enheskulen? Begrunn svarene. 1. V (T 1 ) = V (T ) + E(T ) + F (T ), E(T 1 ) = 2E(T ) + 3F (T ) og F (T 1 ) = 3F (T ). 2. 0 og 2 for begge. χ(t 1 ) = V (T 1 ) E(T 1 ) + F (T 1 ). 3. Ja, begge er innehold pga. konveks innhylningsegenskapen - nye konrollpunker er konvekse kombinasjoner av de gamle, som alle ligger innehold i kulen. Oppgave 4 Bilineær inerpolasjon Ana du har gi verdier f i,j i de fire hjørnene (i, j) for i, j = 0, 1 som illusrer i figuren under, og la f(x, y) være den bilineære inerpolanen il f i,j. (Forsees på side 4.)
Eksamen i INF3320, 2. desember 2009 Side 4 (0, 1) (1, 1) (0, 0) (1, 0) 1. Forklar hva bi-lineær inerpolasjon er og gi e eksempel på hva de brukes il i daagrafikk. 2. Skriv ned e urykk for f(x, y). 3. Urykk f(0, 0), f(1/2, 0) og f(1/2, 1/2) ved å bruke verdiene f i,j. Forklar hvorfor ingen av disse kan være sørre enn max f i,j. 1. Bi-lineær inerpolasjon er en meode for å inerpolere daa som er gi i hjørnene på en firkan, slik a inerpolanen er lineær når en holder en koordina fas. De brukes f.eks il å inerpolere eksurer og il geomeri definer ved fire hjørner (quads). 2. f(x, y) = (1 x)(1 y)f 00 + (1 x)yf 01 + x(1 y)f 10 + xyf 11. 3. f(0, 0) = f 00, f(1/2, 0) = (f 00 + f 10 )/2 og f(1/2, 1/2) = (f 00 + f 01 + f 1,0 + f 1,1 )/4. Ingen av disse kan være sørre enn max f i,j fordi f(x, y) er en konveks kombinasjon av disse verdiene. Alernaiv forklaring: BI er repeer lineær inerpolasjon, og Oppgave 5 Bézier kurver 1. Skriv ned de generelle urykke for en Bézier kurve og forklar ufra dee hva konrollpolygone er. 2. Forklar de Caseljau algorimen for evaluering av Bézier kurver, illusrer med figur. 3. Forklar hvorfor e punk på en Bézier kurve ikke kan ligge uenfor den konvekse innhylningen il konroll-polygone. 1. f() = d i=0 P ib i (), der B i () = ( d i) (1 ) d i i. Konroll-polygone er polygone gi ved konrollpunkene (P i ) i sekvens. (Forsees på side 5.)
Eksamen i INF3320, 2. desember 2009 Side 5 2. de Caseljau algorimen er baser på repeer lineær inerpolasjon på konroll-polygone. 0 0 0 P P P P 0 0 1 2 3 1 1 1 1 P P 1 P 1 0 1 2 1 1 2 2 P P 0 1 1 3 P 0 3. f() er e veke gjennomsni av konrollpunkene, dvs. gi som en sum av konrollpunker, med veker som er posiive og summerer il 1.