A 2007.01.16-os vizsga (emlékezetből)

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|SzgGrafVizsga20070116}} __TOC__ ==1. Feladat== <b> Catmull-Rom Spline: egy golyó pályáját kellett felírni, kulcskeret animáció. Adott…”)
(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

Catmull-Rom Spline: egy golyó pályáját kellett felírni, kulcskeret animáció. Adott 3 pont: [math] \underline{f}_0 = \underline{f}(t_0=0)= \left[ \begin{array} {rrr} 0 & 1 & 0 \end{array} \right] [/math] [math] \underline{f}_1 = \underline{f}(t_1=1)= \left[ \begin{array} {rrr} 1 & 2 & 0 \end{array} \right] [/math] [math] \underline{f}_2 = \underline{f}(t_2=2)= \left[ \begin{array} {rrr} 2 & 0 & 0 \end{array} \right] [/math]

valamint kezdeti sebesség: (1, 1, 0), végsebesség: (1, -1, 0)
(Catmull-Rom Spline elve: 2p, pálya paraméteres egyenlete elméletben: 5p, gyakorlatban: 4p, minden nem odaillő spline és subdivision -1p)

Megoldás 1. Feladat

Catmull-Rom elve: Azért, hogy ne kelljen egy nagyméretű lineáris egyenletrendszert megoldani, a görbék illeszkedésénél nem követelünk meg, csak C1 folytonosságot, tehát azt, hogy a deriváltak egyezzenek. Ezek a deriváltak pont a sebességet adják meg. A kezdeti és végsebességet önkényesen választhatjuk meg (a példában adott, tehát nem kell vele foglalkozni), a többit pedig a két szomszédos szakasz átlagsebességének.

Vo.: Sünis könyv 328-329. Szerintem a pálya egyenlete az az [math] \underline{f}(t) = \underline{a}_i(t-t_i)^3+\underline{b}_i(t-t_i)^2+\underline{c}_i(t-t_i)+\underline{d}_i [/math] , és akkor még le kell írni azt is, hogy az [math] \underline{b}_i = 3\frac{\underline{f}_{i+1}-\underline{f}_{i}}{(t_{i+1}-t_i)^2}-\frac{\underline{v}_{i+1}+2\underline{v}_{i}}{t_{i+1}-t_i} [/math]
[math] \underline{c}_i = \underline{v}_{i} [/math]
[math] \underline{d}_i = \underline{f}_{i}[/math]
együtthatókat hogy számoljuk. A Catmull-Rom spline különlegessége ehhez képest, hogy a
[math] \underline{c}_i = \underline{v}_{i} = 1/2(\frac{\underline{f}_{i}-\underline{f}_{i-1}}{t_{i}-t_{i-1}}+\frac{\underline{f}_{i+1}-\underline{f}_{i}}{t_{i+1}-t_i}) [/math]

t1< t <t2 esetén v2 = végsebesség: (1, -1, 0)

a1=  0  2.5 0
b1=  0	-4 0
c1=  1 -0.5 0
d1=  1  2	0 

[math] \underline{f}(t)= \underline{a}_1(t-t_1)^3+\underline{b}_1(t-t_1)^2+\underline{c}_1(t-t_1)+\underline{d}_1 [/math]


Ugyanígy számolható t0< t < t1 estén is. Ekkor a v0 értéke lesz a kezdeti sebesség: (1, 1, 0)

-- Đani - 2007.05.28. -- adamo - 2007.05.28. -- Glandeur - 2007.05.29.


2. Feladat

Előző feladatban megadott pálya alapján gömb felrajzolása OpenGL függvényekkel... Adott az előző feladatban kiszámolt spline: Vector r(double t) függvényként. A gömb színe fehér, sugara 2 és 40x40 háromszöggel tesszelláljuk.
Adott az alábbi kód (emlékezetből, hiányos lehet!):

GLUQuadric* labda;

void Labda()
{
}

void main()
{
  glutInitDisplayMode(GLUT_RGB|GLUT_DEPTH|GLUT_DOUBLE);

  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluPerspective(54, 0, 1, 1000);

  glMatrixMode(GL_MODELVIEW);
  glLoadIdentity();

  labda = new GLUQuadric();

  glutIdleFunc(Labda);
  glutDrawFunc(Labda);
  glutMainLoop();
}


A következő függvényeket érdemes használni (nem kell mind) gluSphere(), glutSwapbuffers(), glColor3f(), glClearColor(), glutGet(GLUT_ELAPSED_TIME), glVertex3f(), glPopMatrix(), glPushMatrix(), glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT), glTranslatef(), glRotatef(), glLoadIdentity(), glMatrixMode(), stb.

Labda() implementálása: 11p
A megadott OpenGL parancsok értelmezése -10p
Minden nem a megoldáshoz kapcsolódó függvényhívás -1p

Megoldás 2. Feladat


// a lekérdezett idővel lehetne játszani (osztani, szorozni, normalizálni), 
// hogy görbe r(t) függvénye helyes paramétert kapjon, de nekem így is
// megadta 11 pontot

void Labda()
{
  glClearColor(0.0, 0.0, 0.0);
  glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

  int t = glutGet(GLUT_ELAPSED_TIME);
  Vector m = r(t);

  glMatrixMode(GL_MODELVIEW); // ez igazándiból felesleges (hiszen már main()-ben kiválasztottuk)
  glLoadIdentity();
  glTranslatef(m.x, m.y, m.z);

  glColor3f(1.0, 1.0, 1.0); // a gömb fehér

  gluSphere(labda, 2, 40, 40); // szignatúra: void gluSphere(GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks)

  glutSwapBuffers(); // dupla bufferelést használunk glutInitDisplayMode(GLUT_DOUBLE) miatt!
}

-- Imi - 2007.01.18.

3. Feladat

a) DFT kép volt megadva (Képfeldolgozás könyv 6.8b ábra), ez alapján mit mondhatunk el az eredeti képről? (2p)

Ezen a helyen volt linkelve a 6.8b.PNG nevű kép a régi wiki ezen oldaláról. (Kérlek hozd át ezt a képet ide, különben idővel el fog tűnni a régi wikivel együtt)


b) kétféle fényességi transzformáció rajza (Képfeldolgozás könyv 5.17a és 5.23 ábra), melyik mit jelent? (2p)

Ezen a helyen volt linkelve a 5.17a.PNG nevű kép a régi wiki ezen oldaláról. (Kérlek hozd át ezt a képet ide, különben idővel el fog tűnni a régi wikivel együtt)


Ezen a helyen volt linkelve a 5.23.PNG nevű kép a régi wiki ezen oldaláról. (Kérlek hozd át ezt a képet ide, különben idővel el fog tűnni a régi wikivel együtt)

4. Feladat

Meg volt adva egy fénykép. Milyen műveletet hajtottunk végre rajta? (művelet neve: 2p, tulajdonságai, ami alapján felismerhető: 2p)

Floyd-Steinberg hibaterjesztéses dithering volt a megoldás. Abból lehet rájönni, hogy a nagy kiterjedésű homogén színű területeken jellegzetes hullámfrontszerű minták jelennek meg.

  • A megadott kép ehhez hasonló:
Ezen a helyen volt linkelve a taurus1_FS2.PNG nevű kép a régi wiki ezen oldaláról. (Kérlek hozd át ezt a képet ide, különben idővel el fog tűnni a régi wikivel együtt)


-- Csapszi - 2007.01.17.
-- Sales - 2007.01.17.

-- nam - 2007.01.18.