Máté: Sámítógépe gafika alapjai Geometiai tanfomáiók P() P ( ) ( ) P P Beeeté - anfomáiók A Sámítógépe Gafikában hanálato 2- é 3- imenió tanfomáiók: eltolá nagítá kiiníté (káláá) fogatá Pont 2D eltoláa Saka 2D eltoláa Hoak é a ögek áltoatlanok P() P ( ) ( ) (olop-)ektookkal: P P P P Elegenő a új égpontokat ámolni B A B A A A B B P 2D nagítá/kiiníté A ögek áltoatlanok Sokták a kettőt egütt SKÁLÁZÁSKÉN említeni Oigóból töténő nagítá P (olop-)ektookkal: P P S P P S S S 2D fogatá A hoak é a ögek áltoatlanok Oigó köüli fogatá P P o - in in o o R in P R P in o 9_tafo
Máté: Sámítógépe gafika alapjai 9_tafo 2 Homogén kooináták jelölée homogén kooinátákkal: ( w) Egenlőég: (w) ( w ) ha an olan α : hog α α w α w pl: (2 3 6) (4 6 2) Eg pontho égtelen ok (w) tatoik. Ha w akko (w) égtelen táoli pont () nem megengeett! Kapolat 2D é 3D köt (t t t w) egene a 3D tében P etülete a w íkon A égtelen táoli pontok ninenek a íkon w w P(w) 2D eltolá - matematikailag P ( )P ahol Imételt eltoláok (kompoíió): P P P ( ) ( 2 2 ) P ( ) P P ( 2 2 )P ( 2 2 )(( )P) 2 2 2 2 2 2 2D káláá - matematikailag P S( )P Imételt kálááok (kompoíió): P P P S( ) S( 2 2 ) P S( ) P P S( 2 2 )P S( 2 2 )(S( )P) S 2 2 2 2 2 2D fogatá - matematikailag P R() P (R() otogonáli) Imételt fogatáok: P R( ) P P R( 2 )P R( 2 )(R( )P) R( 2 )P Bionítá: Hái Felaat o in in o A hoak é a ögek áltohatnak Páhuamo egeneek képe páhuamo Affin tanfomáió: eltoláok kálááok fogatáok é níáok tetőlege ámú é oenű egmá utáni alkalmaááal kapott tanfomáió a SH b SH a a SH SH 2D níá affin tanfomáiók
Máté: Sámítógépe gafika alapjai 2D tanfomáiók kompoíiója. péla Fogatá -al eg tetőlege P() pont köül. a) eltolá P-ből O-ba (--) b) fogatá a oigó köül R() ) eltolá O-ból P-be () o in in o o in ( o ) in in o ( o ) in 2D tanfomáiók kompoíiója 2. péla Nagítá eg tetőlege P() pontból: () S( ) (--) ( ) ( ) 2D tanfomáiók kompoíiója 3. péla / Világ kooináta Képenő kooináta ene ene ( ma ma ) (u ma ma ) ( ) Lépéek: tanfomáió M WV S (u ) 2 2D tanfomáiók kompoíiója 3. péla /2 u u uma u ma ma ma ma ma ( u ) S ( ) M w ma ma u u uma u ma ma ma u ma ma ma ma u 2D tanfomáiók kompoíiója 3. péla /3 M w tehát u ma ma u P M P w ( ) ma ma ( ) u u ma ma ma ma u u u ( ) ma u ma ma ma Általáno kompoíió máti Könnű látni hog kálááok fogatáok níáok é eltoláok kompoíiója káláá/fogatá utáni eltoláként ételmehető: : káláá/fogatá t: eltolá M t t 2 2 22 2 t t A M alakú mátiokat kompoíió mátioknak neeük 2 22 9_tafo 3
Máté: Sámítógépe gafika alapjai 9_tafo 4 Goítáok M P ámítáako:. 9 oá é 6 öeaá helett elegenő 2 t 2 22 t kiámítáa ami ak 4 oá é 4 öeaá 2. Ha kii öggel fogatunk akko o íg o - in - in in o in ami ak 2 oá é két öeaá ( in kiámítáa) t t M 22 2 2 3D kooináta-eneek balkee bal-oáú jobbkee jobb-oáú 3D tanfomáiók - homogén kooináták () megaáa homogén kooinátákkal: () (w) ( w ) ha an olan α hog α α α é w α w Ha w : ( ) a okáo jelölé Ha w: () égtelen táoli pont Kapolat: () - egene a 4-imenió tében aek a w -e aló etülete a homogén kooináta w w w 3D eltolá met 3D káláá (nagítá/kiiníté) met S S S / / / 3D fogatáok A -tengel köül A -tengel köül A Y-tengel köül R o in in o R o in in o R o in in o
Máté: Sámítógépe gafika alapjai SH SH ( h h ) met 3D níá (Z mentén) ( h h ) h h h h 3D kompoíió-máti Skáláá/fogatá utáni eltoláként ételmehető: 2 3 t 2 22 23 t2 R M 3 32 33 t3 p p p Ilen móon 2 P MP R p2 hatékonabban p 3 p ámítható! 3 3D - íkok tanfomáiói A ík egenlete: A B C D Legen P a ík tetőlege pontja! A B Ha P akko N a ík nomália C D 3D - íkok tanfomáiói Legen P tetőlege pont a íkban! Ekko N P. Melik a a Q máti amele (Q N) (M P)? Ha M - léteik akko ((M - ) N) (M P) N ((M - ) ) MP N P Q(M - ) hien N P Ha a ík pontjait M-el tanfomáljuk akko hog tanfomálóik a ík nomália? N (M - ) N (NEM BIZOS hog léteik nomáli! Pl: etíté) 3D kooináta-eneek áltáa / P (j) : a P pont a j kooináta-eneben M i j : tanfomáió amel a j kooináta-enebeli pontokat a i kooináta-enebe ii át Ekko P (i) M i j P (j) Ha P (j) M j k P (k) akko P (i) M i j P (j) M i j (M j k P (k) ) M i k P (k) ahol M i k M i j M j k 3D kooináta-eneek áltáa /2 oábbá M i j M - j i pl: a) Ha M i j (tt) akko M j i (-t-t). b) Ha R: jobb-kee kooináta-ene L: bal-kee kooináta-ene akko MR L ML R 9_tafo 5
Máté: Sámítógépe gafika alapjai 3D - tanfomáiók alakja (Különböő kooináta-eneekben) P (j) : pont a j kooináta-eneben Q (j) : tanfomáió a j kooináta-eneben Melik a a Q (i) amele Q (i) P (i) M i j Q (j) P (j)? Miel P (i) M i j P (j) eét Q (i) M i j P (j) M i j Q (j) P (j) Q (i) M i j M i j Q (j) Q (i) M i j Q (j) M - i j Máti műeletek (OpenGL) OpenGL-ben olopfoltonoan táoljuk a mátiokat A egég máti: a a5 a9 a3 GLfloat M[] { a2 a6 a a4.... a 3 a7 a a5........ a4 a8 a2 a6....} Új aktuáli máti betöltée: oi glloamati{f}( M[6] ); glmatimoe(gl_modelview); // típu glloamati(m); // betölté Máti műeletek (OpenGL) A aktuáli máti legen a egégmáti: oi glloaientit(oi); A aktuáli máti oáa: oi glmultmati{f}( M[6] ); Pl.: GLfloat M[] {................} glmatimoe(gl_modelview); glmultmati(m); A oat le a új aktuáli máti Kooináta tanfomáiók (OpenGL) Néeti (Viewing) a néő (kamea) helének a megaáa Moell (Moeling) a objektumok (moell) mogatáa Moell-néet (MoelView) a néeti é a moell tanfomáiók egütt Vetítéi (Pojetion) a néet ágáa é látótébe méeteée Ablak a eemén ablaka aló leképeée Néeti kooináták (OpenGL) A megfigelő néőpontja keetben ( ) A megfigelő a tengel negatí iánába né. Vituálian ögített kooináta ene - - Ahog a megfigelő látja a moellt - - - Íg látnánk olalól a megfigelőt a poíiójának a tengel iánába töténő elmoítáa után Néeti kooináták (OpenGL) A néeti kooináta ene elfogatáa 45 -kal a ótamutató jáááal megegeő iánban 9_tafo 6
Máté: Sámítógépe gafika alapjai Néeti (Viewing) tanfomáió (OpenGL) E hajtóik ége előö et kell legelőö efiniálni Néőpont meghatáoáa Keeti néőpont ( ) glulookat paanal móoítható Néeti (Viewing) tanfomáió (OpenGL) oi glulookat( GLouble ee GLouble ee GLouble ee GLouble ente GLouble ente GLouble ente GLouble up GLouble up GLouble up) (ee ee ee) a em poíiója (ente ente ente) efeeniapont ahoá a em né (up up up) felfelé mutató ekto (up-ektovup) Pl.: glulookat(..2.......); Néeti (Viewing) tanfomáió (OpenGL) Moell (Moeling) tanfomáió (OpenGL) A glulookat eljáá kiámítja a megaott néeti tanfomáió ineét maj a aktuáli mátiot megooa a kapott ine tanfomáió mátial A altuáli máti mó a GL_MODELVIEW legen! eltolá (tanláió) fogatá (otáió) A moell ag eg éének a tanfomálááa hanáljuk káláá A úpont (ete) kooinátákat tanfomálja Moell-néeti ualitá (OpenGL) A néeti é a moell tanfomáiók uáliak eét elegenő ak a moell kooináta enet tanfomálni néeti kooináta ene mogatá moell kooináta ene mogatá Moell tanfomáiók (OpenGL) glmatimoe(gl_modelview); oi glrotate{f}( a ); a: fogatá fokban; ( ): fogái tengel pl. 45 foko fogatá a -tengel köül: glrotate(45...) oi glanlate{f}( ); ( ): a eltolá ektoa pl.: -tengel mentén 5 egéggel aló eltolá glanlate(5 ) oi glsale{f}( ); ( ) káláá météke a tengelek mentén pl.: glsale(.5.5.5).5-öö unifom nagítá 9_tafo 7
Máté: Sámítógépe gafika alapjai Vetítéi (pojetion) tanfomáió (OpenGL) glmatimoe(gl_projecion); Kétféle etítéi lehetőég Otogafiku etíté (OpenGL) oi glotho(ouble left ouble ight ouble bottom ouble top ouble nea ouble fa); otogafiku é pepektiiku Megajuk a látóteet i Végehajtá: új pojekiómáti pojekiómáti peifikált máti Othogonáli (otogafiku) etíté ágái teének megaáa 2D eet: oi gluotho2d( ouble left ouble ight ouble bottom ouble top); Pepektí etíté (OpenGL) oi glfutum (ouble left ouble ight ouble bottom ouble top ouble nea ouble fa); left ight: a bal é jobb olali ágóík kooinátája bottom top: a aló é felő ágóík kooinátája nea fa: a köeli é táoli ágóík kooinátája. Pepektí etíté (OpenGL) Simmetiku látóté megaáa: oi glupepetie (ouble fo ouble apet ouble nea ouble fa); fo: a látóté öge iánban apet: w/h nea fa: a ágóíkok táolága a megfigelőtől Néőpont: a oigó: ( ) Ablak (OpenGL) 2D- leképé a ablak eg téglalap alakú (iewpot) éébe: oi glviewpot(glint GLint GLiei with GLiei height); : a iewpot bal aló aka a ablakban with height: a iewpot méete pielben (5 ) Vágái té - Viewpot 5* Ablak 3*2 Ablak (OpenGL) Alapételmeé: ( winwith winheight) ahol winwith é winheight a ablak méetei (5 ) Vágái té - Ablak Viewpot 3*2 9_tafo 8
Máté: Sámítógépe gafika alapjai Pepektí etíté (OpenGL) Pl.: Móoítuk iewpot-ot é a ágái teet pepektí etíténél oi ChangeSie(GLiei w GLiei h){ GLfloat fapet; if (h ) h ; // ne ounk -al // a ablakon beállítjuk a iewpot-ot glviewpot( w h); fapet (GLfloat)w/(GLfloat)h; // etítéi máti glmatimoe(gl_projecion); glloaientit(); // ágái té megaá pepektí etíté glupepetie(6.f fapet. 4.); glmatimoe(gl_modelview); glloaientit(); } anfomáió mátiok (OpenGL) e Moeliew e máti e w we Eeeti Sem kooináták kooináták / w Pepektí / w otá / w w Vágái Nomaliát kooináták kooináták Pojekió máti Viewpot tanf. máti anfomáió mátiok (OpenGL) Máti emek (OpenGL) / w / w / w Nomaliát (inhomogén) kooináták Viewpot tanf. máti Máti móok: GL_EXURE GL_MODELVIEW GL_COLOR GL_PROJECION Minen máti mó ámáa an eg máti eem A aktuáli máti a eem tetején léő máti. A műeletek: oi glpuhmati( oi ); oi glpopmati( oi ); Máti emek (OpenGL) glget(gl_max_modelview_sack_deph) (Miooft: maimáli mélég 32) glget(gl_max_projecion_sack_deph) (Miooft: maimáli mélég 2) GL_SACK_OVERFLOW GL_SACK_UNDERFLOW Felaat (OpenGL) Rajoljuk meg eg obókoka pepektiiku képét! Alapállapot: egégmáti GL_MODELVIEW 9_tafo 9