A 2007.01.16-os vizsga (emlékezetből)
Ez az oldal a korábbi SCH wikiről lett áthozva.
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:
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
, és akkor még le kell írni azt is, hogy az
együtthatókat hogy számoljuk. A Catmull-Rom spline különlegessége ehhez képest, hogy a
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
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)
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)
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ó:
-- Csapszi - 2007.01.17.
-- Sales - 2007.01.17.
-- nam - 2007.01.18.