Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Transzformációk kucg.korea.ac.kr
2
Tartalom Affin transzformációk Transzformációk homogén koordinátákkal
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
transzformációs függvény
Transzformációk Vegyünk egy pontot (vagy vektort) képezzük le egy másik pontba (vagy vektorba) P Q u v T R 4D oszlop má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) 44 mátrix vektor pont 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
(a) tárgy az eredeti pozícióban
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
(a) fix pont körüli forgatás
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 a tá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 Tükrözés – negatív skálázási együttható
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 – 44 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ó
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
tárgy nyírása az x tengely irányában
Még egy affin transzformáció tárgy nyírása az x tengely irányában ? kucg.korea.ac.kr
30
tárgy nyírása az x tengely irányában
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 x tengely irányában nyírás mátrixa
kucg.korea.ac.kr
32
Nyírás (2/2) Nyírás az x tengely irányában kucg.korea.ac.kr
33
? Nyírás (2/2) Nyírás az x tengely irányában Nyírás mátrixának inverze
kucg.korea.ac.kr
34
Nyírás (2/2) Nyírás az x tengely irányában Nyírás mátrixának inverze
kucg.korea.ac.kr
35
Transzfromációk konkatenációja
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 M p q CBA kucg.korea.ac.kr
36
Pont körüli forgatás (1/3)
Fixpont: pf jelölje Rz() 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élda transzformá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élda transzformá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 a z 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)
Forgatási sorrend Határozzuk meg x-t és y -t A szögek iránya és ezek cosinusai 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 az y=0 síkra Nézzük meg az egyenes vetületét (a forgatás előtt) az x=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 z tengelyre Forgatás az y tengely körül figyelem!!! – órajárással megegyező szög y tengely 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] > ) theta[axis] -= 360.0; glutPostRedisplay(); } void mykey(char key, int mousex, int mousey) { if( key == ‘q’ || key == ‘Q’ ) exit(); } kucg.korea.ac.kr
51
Kocka forgatás (2/2) glPushMatrix( ), glPopMatrix( )
void spinCube(void) { theta[axis] += 2.0; if( theta[axis] > ) theta[axis] -= 360.0; glutPostRedisplay(); } void mykey(char key, int mousex, int mousey) { if( key == ‘q’ || key == ‘Q’ ) exit(); } glPushMatrix( ), glPopMatrix( ) hajtuk végre egy transzformációt és aztán térjünk vissza a test eredeti állapotába feladat) példatranszformáció glPushMatrix(); glTranslatef(.....); glRotatef(.....); glScalef(.....); /* draw object here */ glPopMatrix(); kucg.korea.ac.kr
52
Virtual Trackball (1/3) Használjuk az egér helyzetét, hogy leellenőrizzük a forgatást a 2 tengely körül Igazolásként forgassuk a tárgyat folyamatosan trackball frame kucg.korea.ac.kr
53
Virtual Trackball (2/3) Forgatás virtual trackball-lal
Vetítsük le a trackball pozícióját a síkra kucg.korea.ac.kr
54
Virtual Trackball (3/3) Forgatás virtual trackball-lal (folyt.)
határozzuk meg a sík írányát forgásszög Kvaterniók kucg.korea.ac.kr
55
Komplex számok (1/3) Valós rész + képzetes rész: Összeadás és kivonás
Számmal való szorzás Szorzás y x z Képzetes tengely Valós tengely kucg.korea.ac.kr
56
Komplex számok (2/3) Képzetes egység: Konjugált Osztás Abszolút érték
kucg.korea.ac.kr
57
Komplex számok (3/3) Polár koordinátákkal való reprezentáció
Euler-formula Szorzás és osztás n-edik gyök r θ z=(x, y) Képzetes tengely Valós kucg.korea.ac.kr
58
Kvaterniók (1/2) Egy valós rész + 3 képzetes rész Tulajdonságai:
Összeadás és skaláris szorzás kucg.korea.ac.kr
59
Kvaterniók (2/2) Átírás rendezett számpárba Összeadás: Szorzás Nagyság
skalár ‘s’ + vektor “v = (a, b, c)” Összeadás: Szorzás Nagyság Inverz kucg.korea.ac.kr
60
Kvaterniók és 3D forgatás
3D pont (α, β, γ) egy egység kvaternió konjugáltja Rq egy (ux, uy, uz) körüli 2θ°-os forgatás Forgassuk (α, β, γ) pontot 2θ°-kal a (ux, uy, uz) irányvektorú tengely körül kucg.korea.ac.kr
61
Forgatás kvaternióval (1/2)
Tetszőleges tengely körüli forgatás válasszunk egy egységkvaterniót (u: egységvektor) alakítsunk át egy tetszőleges P pontot kvaternióvá (p = (x, y, z)) végezzük el a kvaternió műveletet (q-1=(s, –v)) állítsuk elő az új kvaterniót kucg.korea.ac.kr
62
Forgatás kvaternióval (2/2)
A kvaterniószorzás segítségével megkapjuk a forgatás mátrixát Az eltolást is belevéve kucg.korea.ac.kr
63
Példa z tengely körüli forgatás vegyük az egységkvaterniót :
Helyettesítsük be a=b=0-t, c=sin(θ/2)-t a mátrixba: kucg.korea.ac.kr
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.