640 likes | 866 Views
Transzformációk. Tartalom. Affin transzformációk forgatás, eltolás és skálázás Transzformációk homogén koordinátákkal Transzformációk konkatenációja forgatás fix pont körül általános forgatás példa transzformációra tetszőleges tengely körüli forgatás V irtual trackball. u. v. R. P.
E N D
Transzformációk kucg.korea.ac.kr
Tartalom • Affin transzformációk • forgatás, eltolás és skálázás • Transzformációk homogén koordinátákkal • Transzformációk konkatenációja • forgatás fix pont körül • általános forgatás • példa transzformációra • tetszőleges tengely körüli forgatás • Virtual trackball kucg.korea.ac.kr
u v R P T Q Transzformációk • Vegyünk egy pontot (vagy vektort) képezzük le egy másik pontba (vagy vektorba) 4D oszlopmátrix homogén koordináták transzformációs függvény kucg.korea.ac.kr
Affin transzformáció (1/2) • Linearitás – lineáris függvény • Lineáris transzformáció • rendeljünk egy ponthoz (vagy vektorhoz) egy másik pontot (vagy vektort) pont 44 mátrix vektor kucg.korea.ac.kr
Affin transzformáció (2/2) • Lineáris transzformáció (folyt) • egyenestartó – egyenest egyenesbe képez az egyenesnek csak a végpontjait transzformáljuk • CG-ban a transzformációk többsége affin • forgatás, eltolás, skálázás, nyírás homogén koordináta affin transzformáció kucg.korea.ac.kr
Eltolás • Egy ponthoz adott távolságra és irányban lévő pontot rendelünk hozzá • elmozdulás vector d (a) tárgy az eredeti pozícióban (b) eltolt tárgy kucg.korea.ac.kr
Forgatás (1/2) • Egyszerű példa 2D forgatásra kucg.korea.ac.kr
Forgatás (1/2) • Egyszerű példa 2D forgatásra kucg.korea.ac.kr
Forgatás (1/2) • Egyszerű példa 2D forgatásra kucg.korea.ac.kr
Forgatás (2/2) • Szükséges • fixpont – a forgatás során a pont helyzete változatlan • forgatás szöge – pozitív forgatás (jobb-sodrású rendszerben az óramutató irányával ellentétes) • forgástengely 3D-ben – a forgatás során az egyenes képe önmaga (a) fix pont körüli forgatás (b) 3D forgatás kucg.korea.ac.kr
Merev test transzformációk • Forgatás és eltolás • Forgatás és eltolás kombinációja nem képes megváltoztatni atárgy alakját csak a tárgy helyét és irányát affin transzformációk, de nem merev test transzformációk kucg.korea.ac.kr
Skálázás (1/2) • Egy tárgy nagyságát növeljük vagy csökkentjük • egyenletes – skálázás minden irányból azonos mértékkel • Affin,nem merev test transzformációk • affin transzformációk: eltolás, forgatás, skálázás, nyírás nemegyenletes egyenletes kucg.korea.ac.kr
Skálázás (2/2) • Szükséges • fixpont • a skálázás iránya • skálázási együttható • nagyítás (α>1) vagy kicsinyítés (0≤α<1) • Tükrözés – negatív skálázási együttható skálázás eredménye tükrözés kucg.korea.ac.kr
Transzformációk homogén koordinátákkal • Megvalósítás homogén koordinátákkal • Affin transzformációk – 44 mátrix kucg.korea.ac.kr
Eltolás • P ponthoz rendeljük a d távolságban lévő P’-t ? eltolás mátrixa kucg.korea.ac.kr
Eltolás • P ponthoz rendeljük a d távolságban lévő P’-t kucg.korea.ac.kr
Eltolás • P ponthoz rendeljük a d távolságban lévő P’-t • Az eltolás mátrixának inverze ? kucg.korea.ac.kr
Eltolás • P ponthoz rendeljük a d távolságban lévő P’-t • Az eltolás mátrixának inverze kucg.korea.ac.kr
Skálázás • A skálázás mátrixa, ha a fixpontja az origó ? skálázás mátrixa kucg.korea.ac.kr
Skálázás • A skálázás mátrixa, ha a fixpontja az origó kucg.korea.ac.kr
Skálázás • A skálázás mátrixa, ha a fixpontja az origó • A skálázás mátrixának inverze ? kucg.korea.ac.kr
Skálázás • A skálázás mátrixa, ha a fixpontja az origó • A skálázás mátrixának inverze kucg.korea.ac.kr
Forgatás (1/2) • Forgatás az origó körül ? forgatás mátrixa kucg.korea.ac.kr
Forgatás (1/2) • Forgatás az origó körül ? kucg.korea.ac.kr
Forgatás (1/2) • Forgatás az origó körül ? kucg.korea.ac.kr
Forgatás (1/2) • Forgatás az origó körül kucg.korea.ac.kr
Forgatás (2/2) • A forgatás mátrixának inverze ? kucg.korea.ac.kr
Forgatás (2/2) • A forgatás mátrixának inverze :ortogonális mátrix kucg.korea.ac.kr
Nyírás (1/2) • Még egy affin transzformáció tárgy nyírása az x tengely irányában ? kucg.korea.ac.kr
Nyírás (1/2) • Még egy affin transzformáció tárgy nyírása az x tengely irányában kucg.korea.ac.kr
Nyírás (2/2) • Nyírás az xtengely irányában ? nyírás mátrixa kucg.korea.ac.kr
Nyírás (2/2) • Nyírás az xtengely irányában kucg.korea.ac.kr
Nyírás (2/2) • Nyírás az xtengely irányában • Nyírás mátrixának inverze ? kucg.korea.ac.kr
Nyírás (2/2) • Nyírás az xtengely irányában • Nyírás mátrixának inverze kucg.korea.ac.kr
CBA p M q Transzfromációk konkatenációja • Konkatenáció • affin transzformációk összeszorzása • alap transzformációk sorozata tetszőleges transzformációközvetlen definiálása • három, egymást követő transzformáció: p A B C q kucg.korea.ac.kr
Pont körüli forgatás (1/3) • Fixpont: pf • jelöljeRz() a forgatást Kocka forgatása a középpontja körül kucg.korea.ac.kr
Pont körüli forgatás (2/3) transzformációk sorozata kucg.korea.ac.kr
Pont körüli forgatás (3/3) kucg.korea.ac.kr
Általános forgatás (1/2) • 3 egymás követő forgatás a tengelyek körül Kocka forgatása a z tengely mentén Kocka forgatása a y tengely mentén ? Kocka forgatása a x tengely mentén kucg.korea.ac.kr
Általános forgatás (2/2) kucg.korea.ac.kr
? Példatranszformációra (1/2) • Adott egy tárgy prototípusa • Keresünk egy transzformációt • használjunk egy affin transzformációt, hogy megváltoztassuk a tárgy méretét, helyét és irányát példa transzformációra kucg.korea.ac.kr
Példatranszformációra(2/2) kucg.korea.ac.kr
Tetszőleges tengely körüli forgatás (1/6) • Szükséges • fixpont: p0 • elforgatás szöge: θ • forgástengely : vektor p2-p1 kocka forgatása tetszőleges tengely mentén kucg.korea.ac.kr
Tetszőleges tengely körüli forgatás (2/6) • Az első transzformáció a T(-p0) és az utolsóa T(p0) eltolás • Probléma a forgatásnál • Tetszőleges forgatás meg- feleltethető 3, az egyes tengelyek körüli forgatásnak • Hajtsunk végre két forgatást, hogy a forgatás tengelye a z tengelynek feleljen meg • Forgassunk az tengely körül θszöggel a fix pontot az origóba mozgattuk kucg.korea.ac.kr
Tetszőleges tengely körüli forgatás (3/6) • Határozzuk megx-t ésy -t • A szögek iránya és ezek cosinusai Forgatási sorrend szögek iránya kucg.korea.ac.kr
Tetszőleges tengely körüli forgatás (4/6) • Határozzuk megx-t ésy -t(folyt.) • Vetítsük le az egyenest azy=0 síkra • Nézzük meg az egyenes vetületét (a forgatás előtt) azx=0 síkon x tengely körüli forgatás számolása kucg.korea.ac.kr
Tetszőleges tengely körüli forgatás (5/6) • Határozzuk megx-t ésy -t(folyt.) • Vetítsük az egyenest a ztengelyre • Forgatás azytengely körül • figyelem!!! – órajárással megegyező szög ytengely körüli forgatás számolása kucg.korea.ac.kr
Tetszőleges tengely körüli forgatás (6/6) • Végül konkatenáljuk a három mátrixot • Feladat) Forgass egy tárgyat egy, az origón átmenő egyenes körül 45°-kal kucg.korea.ac.kr
Kocka forgatás (1/2) glutDisplayFunc(display); glutIdleFunc(spinCube); glutMouseFunc(mouse); void display(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glRotatef(theta[0], 1.0, 0.0, 0.0); glRotatef(theta[1], 0.0, 1.0, 0.0); glRotatef(theta[2], 0.0, 0.0, 1.0); colorcube(); glutSwapBuffers(); } void mouse(int btn, int state, int x, int y) { if(btn==GLUT_LEFT_BUTTON && state==GLUT_DOWN) axis=0; if(btn==GLUT_MIDDLE_BUTTON && state==GLUT_DOWN) axis=1; if(btn==GLUT_RIGHT_BUTTON && state==GLUT_DOWN) axis=2; } kucg.korea.ac.kr
Kocka forgatás (2/2) void spinCube(void) { theta[axis] += 2.0; if( theta[axis] > 360.0 ) theta[axis] -= 360.0; glutPostRedisplay(); } void mykey(char key, int mousex, int mousey) { if( key == ‘q’ || key == ‘Q’ ) exit(); } kucg.korea.ac.kr