2007. 05. 30. (keresztféléves vizsga), A csoport

A VIK Wikiből
A lap korábbi változatát látod, amilyen (vitalap) 2012. október 21., 20:16-kor történt szerkesztése után volt. (Új oldal, tartalma: „{{GlobalTemplate|Infoalap|SzgGrafVizsga20070530A}} __TOC__ ==1. feladat == # Miért és mikor jobb a Monte Carlo integrálás, mint a trapéz módszer? (1p) # Menny…”)
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)
Ugrás a navigációhoz Ugrás a kereséshez

Ez az oldal a korábbi SCH wiki-ről lett áthozva. Az eredeti változata itt érhető el.

Ha úgy érzed, hogy bármilyen formázási vagy tartalmi probléma van vele, akkor kérlek javíts rajta egy rövid szerkesztéssel.

Ha nem tudod, hogyan indulj el, olvasd el a migrálási útmutatót


1. feladat

  1. Miért és mikor jobb a Monte Carlo integrálás, mint a trapéz módszer? (1p)
  2. Mennyi a 10 kontrollpontból álló, harmadfokú (negyedrendű) NURBS görbe Hausdorff dimenziója? (1p)
  3. Mit csinál a geometria árnyaló (geometry shader) standard OpenGL alkalmazásban (1p), mi a bemenete és a kimenete (1p) ?
  4. Miért dolgozik az OpenGL homogén koordinátákkal és miért nem Descartes koordinátákkal? (1p)
  5. Mi az SSE és a 3DNow! és hogyan kapcsolódik a számítógépes grafikához? (1p)
  6. Mi az albedó? (1p)
  7. Melyik árnyékszámító algoritmust kapcsolja be a ==glEnable(GL_SHADOW)==? (1p)
  8. Írja fel az OpenGL vágási lépésében használt egyenleteket, azaz a feltétel rendszert, amit egy pontnak ki kell elégítenie, hogy az OpenGL megtartandónak ítélje! (1p) Milyen koordinátarendszerben érvényesek ezek az egyenletek? (1p)

Megoldás

  1. 1-nél magasabb dimenzióknál amikor a hibák csökkentése miatt növeljük a mérési pontok számát, akkor nem exponenciálisan nő a számolási feladat.
  2. 1, a síkot nem tölti ki ezért 2-nél kevesebb, valamint nem önhasonló ezért a H-dimenziója egész, ezen túl nem pont vagy diszkrét pontok véges halmaza, így nem nulla.
  3. http://en.wikipedia.org/wiki/Shader#Types_of_shader vagy Geometria árnyaló (ENG)
  4. Azért, hogy a projektív vetítés során esetlegesen megjelenő ideális pontokat és átforduló szakaszokat kezelni tudjuk
  5. Utasításkészlet-kiegészítés processzorok számára. Ezek segítségével gyorsíthatóak a grafikus számolások. Konkrétan: 4 float-on párhuzamosan végzik ugyanazt a műveletet, ezért kiváltképp alkalmasak RGBA és homogén koordinátás számításokra.
  6. "A tetszőleges irányú visszaverődés valószínűségét albedónak nevezzük". Egyenlet definició: ld. Sünis könyv 252. oldal!
  7. Az OpenGL-ben nincs beépített árnyékszámító algoritmus :D
  8. -h <=x<= h, -h<=y<=h, -h<=z<= h, és h>0. Ezek az egyenletek a homogén koordinátás alakra vonatkoznak.

2. feladat

Adja meg azt az IFS-t, amely a (0,0) (1,1) sarokpontú négyzetet definiálja! (5p)

Megoldás

[math] T_{IFS}=\left[ \begin{array}{rrrr} \\ \left[ \begin{array}{rrr} 0.5 & 0 & 0 \\ 0 & 0.5 & 0 \\ 0 & 0 & 1 \\ \end{array} \right] & \left[ \begin{array}{rrr} 0.5 & 0 & 0 \\ 0 & 0.5 & 0 \\ 0.5 & 0 & 1 \\ \end{array} \right] & \left[ \begin{array}{rrr} 0.5 & 0 & 0 \\ 0 & 0.5 & 0 \\ 0 & 0.5 & 1 \\ \end{array} \right] & \left[ \begin{array}{rrr} 0.5 & 0 & 0 \\ 0 & 0.5 & 0 \\ 0.5 & 0.5 & 1 \\ \end{array} \right] \\ \\ \end{array} \right][/math]

-- TothP - 2007.06.12.

Magyarázat: 2004.11.02. ZH, C. csoport, 1. feladat

-- Peti - 2007.06.25.

3. feladat

Milyen ModelView és Projection mátrixokkal dolgozik, és melyik pixelt szinezi át a következő program? (10p)

glViewPort (0, 0, 100, 100);
glDisable (GL_DEPTHTEST);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ();
glScale (1, 0.1, 0.1);
glScale (0.1, 1, 0.1);
glMatrixMode (GL_MODELVIEW);
glLoadIdentity ();
glTranslatef (5, 6, 4);
glRotatef (180, 0, 0, 1);
glScalef (2, 3, 4);
glBegin(GL_POINTS);
glVertex3f (1, 1, 1);
glEnd ();

Megoldás

Két skálázást hajtunk végre az (x,y,z) tengelyek mentén, ezek szimplán összezorozhatók: [math] T_{projection}=\left[ \begin{array}{rrrr} 0.1 & 0 & 0 & 0 \\ 0 & 0.1 & 0 & 0 \\ 0 & 0 & 0.01 & 0 \\ 0 & 0 & 0 & 1 \\ \end{array} \right][/math]

Először egy (2,3,4) skálázást hajtunk végre, majd egy 180° forgatást a (0,0,1) vektor, azaz a Z tengely körül, végül egy (5,6,4) vektorú eltolást végzünk.

[math] T_{skalazas}=\left[ \begin{array}{rrrr} 2 & 0 & 0 & 0 \\ 0 & 3 & 0 & 0 \\ 0 & 0 & 4 & 0 \\ 0 & 0 & 0 & 1 \\ \end{array} \right][/math]

[math] T_{forgatas}=\left[ \begin{array}{rrrr} \cos\theta & \sin\theta & 0 & 0 \\ -\sin\theta & \cos\theta & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{array} \right] = \left[ \begin{array}{rrrr} -1 & 0 & 0 & 0 \\ 0 & -1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \\ \end{array} \right][/math]

[math] T_{eltolas}=\left[ \begin{array}{rrrr} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 5 & 6 & 4 & 1 \\ \end{array} \right][/math]

Innen pedig: [math] T_{modelview}=T_{skalazas}.T_{forgatas}.T_{eltolas} = \left[ \begin{array}{rrrr} -2 & 0 & 0 & 0 \\ 0 & -3 & 0 & 0 \\ 0 & 0 & 4 & 0 \\ 5 & 6 & 4 & 1 \\ \end{array} \right][/math]

Az (1,1,1,1) pontra alkalmazva a mátrixot ezt kapjuk eredményül: (3, 3, 8, 1). Alkalmazva a Projekciós mátrixot az eredmény: (0.3, 0.3, 0.08, 1). A vágást elvégezve, a pont az ablakon belül marad.

A ViewPort 100x100-as, így a képernyőn a (65, 65)-ös pixelt szinezzük ki. (Bár szín nem volt közvetlenül megadva, de biztosan már hamarabb definiálták valahol a programban, nehogymár az legyen a válasz, hogy nem szinez semmit...)

4. feladat

Bizonyítsa be, hogy ha egy invertálható transzformációs mátrix 4. oszlopa [0,0,0,1] akkor a transzformáció affin! (a transzformálandó pont homogén koordinátás alakját sorvektornak tekintjük és a mátrixszal jobbról szorozzuk) (10p)

Megoldás

Egy transzformáció akkor affin, ha aránytartó, azaz pl. egy szakasz felezőpontját felezőpontba viszi át. Legyen x egy nem ideális pont a térben, 1-es homogén koordinátával. Ekkor a transzformáció: [math] \begin{array}{|ccc|c|} \hline & x & & 1 \\ \hline \end{array} \cdot \begin{array}{|ccc|c|} \hline & & & 0 \\ & A & & 0 \\ & & & 0 \\ \hline & b & & 1 \\ \hline \end{array} = \begin{array}{|c|c|} \hline xA+b & 1 \\ \hline \end{array} [/math]

Az b-vel való eltolás nem változtat az arányokon, csak annyit kell bizonyítani, hogy a transzformáció lineáris kombináció tartó, azaz

[math] (\lambda x + (1-\lambda) y) A = \lambda (x A) + (1-\lambda) (y A) [/math]

ami triviális.

-- Peti - 2007.05.31.

-- Glandeur - 2007.05.30.