1 / 63

Transzformációk

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.

callie
Download Presentation

Transzformációk

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Transzformációk kucg.korea.ac.kr

  2. 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

  3. 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

  4. 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 44 mátrix vektor kucg.korea.ac.kr

  5. 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

  6. 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

  7. Forgatás (1/2) • Egyszerű példa 2D forgatásra kucg.korea.ac.kr

  8. Forgatás (1/2) • Egyszerű példa 2D forgatásra kucg.korea.ac.kr

  9. Forgatás (1/2) • Egyszerű példa 2D forgatásra kucg.korea.ac.kr

  10. 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

  11. 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

  12. 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

  13. 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

  14. Transzformációk homogén koordinátákkal • Megvalósítás homogén koordinátákkal • Affin transzformációk – 44 mátrix kucg.korea.ac.kr

  15. Eltolás • P ponthoz rendeljük a d távolságban lévő P’-t ? eltolás mátrixa kucg.korea.ac.kr

  16. Eltolás • P ponthoz rendeljük a d távolságban lévő P’-t kucg.korea.ac.kr

  17. 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

  18. 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

  19. 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

  20. Skálázás • A skálázás mátrixa, ha a fixpontja az origó kucg.korea.ac.kr

  21. 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

  22. 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

  23. Forgatás (1/2) • Forgatás az origó körül ? forgatás mátrixa kucg.korea.ac.kr

  24. Forgatás (1/2) • Forgatás az origó körül ? kucg.korea.ac.kr

  25. Forgatás (1/2) • Forgatás az origó körül ? kucg.korea.ac.kr

  26. Forgatás (1/2) • Forgatás az origó körül kucg.korea.ac.kr

  27. Forgatás (2/2) • A forgatás mátrixának inverze ? kucg.korea.ac.kr

  28. Forgatás (2/2) • A forgatás mátrixának inverze :ortogonális mátrix kucg.korea.ac.kr

  29. 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

  30. 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

  31. Nyírás (2/2) • Nyírás az xtengely irányában ? nyírás mátrixa kucg.korea.ac.kr

  32. Nyírás (2/2) • Nyírás az xtengely irányában kucg.korea.ac.kr

  33. Nyírás (2/2) • Nyírás az xtengely irányában • Nyírás mátrixának inverze ? kucg.korea.ac.kr

  34. Nyírás (2/2) • Nyírás az xtengely irányában • Nyírás mátrixának inverze kucg.korea.ac.kr

  35. 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

  36. 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

  37. Pont körüli forgatás (2/3) transzformációk sorozata kucg.korea.ac.kr

  38. Pont körüli forgatás (3/3) kucg.korea.ac.kr

  39. Á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

  40. Általános forgatás (2/2) kucg.korea.ac.kr

  41. ? 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

  42. Példatranszformációra(2/2) kucg.korea.ac.kr

  43. 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

  44. 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

  45. Tetszőleges tengely körüli forgatás (3/6) • Határozzuk megx-t ésy -t • A szögek iránya és ezek cosinusai Forgatási sorrend szögek iránya kucg.korea.ac.kr

  46. Tetszőleges tengely körüli forgatás (4/6) • Határozzuk megx-t ésy -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

  47. Tetszőleges tengely körüli forgatás (5/6) • Határozzuk megx-t ésy -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

  48. 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

  49. 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

  50. 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

More Related