Grafika zh 2006-11-09 A csoport
A virtuális világunkban az r(u,v) = (u,v,8uv), (0<= u,v <=1) paraméteres egyenlettel megadott felület található. A szem az origóban van, és a z irányba néz (az ablak középpontja a z tengelyen van): A kamera függőleges iránya az y tengely. A függőleges látószög 90 fokos, az ablak oldalaránya 1, az első vágósík távolsága 0.1, hátsó vágósík nincs. A keletkező képet 200x200as felbontásban kell megjeleníteni.
1. kérdés
Melyik pont látszik a (150,150) pixelben? (2p)
Rajzold fel egy z-y koordinátarendszerben! A (100,100)px van a z tengelyen. 90 fokos látószög miatt a (100px,200px) ponthoz egy lépést (0.1, de lényegtelen) tettél z irányba, és egyet y irányba. A (100px,150px)-hez csak fele lépést kell tenni y irányban.
Tehát az az egyenes, ami a szemből egy 150px magasságű pontba megy, az 1/2 merdekségű y irányban. Ugyanez a helyzet a szélességgel is.
Tehát a vetítő sugár s(t)=(t/2,t/2,t).
A metszéspont, a koordináták megfeleltetésével:
- u = t/2
- v = t/2
- 8uv = t
- 8t2/4 = t
- t = 0 --> nem jó, mert a vágósík előtt van
- 2t = 1 --> t = 1/2
Tehát a metszéspont (1/4, 1/4, 1/2)
-- SzaMa - 2006.11.09.
Igazából meg kell nézni, hogy ez az u=1/4, v=1/4 pont tényleg érvényes paraméterértékeket jelent-e, vagyis (0<= u,v <=1) teljesül-e. És igen. A másik, hogy ellenőrizni kell, hogy a vágósík nem vágja-e le a pontot. Nem teszi, mivel z = 1/2 > 0.1. -- Baba - 2006.11.10.-- gedeon__^ - 2006.12.06.
2. kérdés
Mi a felület normálvektora ebben a pontban? (2p)
Itt valaki mondta, hogy a parciális deriváltak keresztszorzata azt kész. Az elvileg (-4,-4,1). Ez azt jelenti, hogy én elcsesztem :) -- SzaMa - 2006.11.09.
Az illetőnek igaza van, Szama viszont elszámolta. u szerint (1, 0, 8v), v szerint (0, 1, 8u) a parciális derivált, a keresztes szorzatuk (-8v, -8u, 1), az u=v=1/4 behelyettesítéssel (-2, -2, 1) adódik. Ha normáljuk, akkor a (-2/3, -2/3, 1/3) egységvektort kapjuk.
-- Baba - 2006.11.10.
3. kérdés
Milyen színű ez a pixel, ha a teret egy irányfényforrás világítja meg, amely a (-1,1,1) irányból, az RGB csatornákon (20,10,10) W/m/m/st intenzitással sugároz, és a felület "mindkét oldalának" diffúz visszaverési tényezője [ 0.1, 0.2, 0.3]? (2p)
Ki kell számolni a beeső sugár és a normálvektor szögét. Legyen a fényforrás iránya L a normálvektor N. Ekkor cosΘ'=L*N/{|L||*||N}.
cosΘ' = 4-4+1 / sqrt(3)*sqrt(33)
A pixel színézhez már csak minden szinkomponensre össze kell szorozni az intenzitást a visszaverési tényezővel és cosΘ'-vel.
-- SzaMa - 2006.11.09.
Más a normálvektor, mint amivel számolsz, de az elv ok.
-- Baba - 2006.11.10.
Vagyis helyesen akkor:
cosΘ' = ((-1)*(-2/3) + 1*(-2/3)+1*1/3 ) / sqrt(3) = 0.192
L = Lin*kd*cosΘ'
Lr = 20*0.1*0.192 = 0.384, Lg = 10*0.2*0.192 = 0.384, Lb = 10*0.3*0.192 = 0.576.
RGB = [0.384, 0.384, 0.576]
-- NeoXon - 2006.11.10.
4. kérdés
Közelítse a felületet NxM háromszögből {ez valszeg el volt írva a feladatlapon} álló négyszöghálóval, és adja meg az i,j négyszög négy csúcsának koordinátáit! (2p)
A felület egyenletében két változó volt, amik [0,1] intervallumon mozogtak, hát mintavételezzük ezeket egyenletesen! Az egyes pontoknál legyen ui=i/N és vj=j/M.
i=0..N-1; j=0..M-1
Ekkor az i,j négyszög csúcsai:
- (i/N, j/M, 8*i*j/(N*M))
- ((i+1)/N, j/M, 8*(i+1)*j/(N*M))
- (i/N, (j+1)/M, 8*i*(j+1)/(N*M))
- ((i+1)/N, (j+1)/M, 8*(i+1)*(j+1)/(N*M))
-- SzaMa - 2006.11.09.
thx to J.