ietokonegrafiikan perusteet -.43 3 op Luento 4: 3D ransformaatiot Lauri aioja /5 3D transformaatiot / isältö Lineaarialgebran kertausta Geometriset objektit 3D-maailmassa Perustransformaatiot 3D:ssä 3D transformaatiot / 2
Lineaarialgebran kertausta euraaassa skalaareja reaalilukuja) merkitään kkertaisilla pienillä kirjaimilla s), ektoreita pienillä ahennetuilla ) ja matriiseja suurilla ahennetuilla kirjaimilla M). Vektorit n-ulotteinen ektori on jono skalaarilukuja [ 2 3... n ]. 3-ulotteisen ektorin komponentteja merkitään mös [ ]. hteenlasku tai ähenns) tapahtuu komponenteittain: + u [ +u 2 +u 2 3 +u 3... n +u n ], samoin skalaarilla kertominen: s u [ s*u s*u 2 s*u 3... s*u n ], 3D transformaatiot / 3 Lineaarialgebran kertaus jatkuu pistetulo l. sisätulo on skalaariluku, joka saadaan komponenteittain laskettujen tulojen summana: u *u + 2 *u 2 + 3 *u 3 +... + n *u n ektorin pituus euklidinen normi) on neliöjuuri pistetulosta itsensä kanssa: 2 2 2 + 2 + 3 + + 2... n kahden ektorin pistetulon geometrinen tulkinta: u u β, missä β u:n ja :n älinen kulma. ektorin normeeraus: ektorin kukin komponentti jaetaan ektorin pituudella, jolloin tuloksena on ksikköektori: / ),. 3D transformaatiot / 4 2
Lineaarialgebran kertaus jatkuu Matriisit m n -ulotteinen matriisi on taulukko, jonka rieinä on m kpl n- ulotteisia ektoreita: 2 M 3 K m matrii komponentteihin iitataan indekseillä M M 2 3 M m m2 m3 jos m n, on ksessä neliömatriisi. ij 2 22 32 M M 3 23 33 K n K 2n K 3n O M K mn 3D transformaatiot / 5 Lineaarialgebran kertaus jatkuu matrii transpoosi saadaan aihtamalla riit ja sarakkeet keskenään: M M ji matriisi oidaan mös tulkita pstektoreista koostuana jonona: M [ u u u ] u 2 3 m k -matrii A ja k n -matrii B matriisitulo on m n - matriisi, jonka kukin komponentti ij) saadaan sisätulona m AB) ij a i b j ), missä a i A:n i:s aakaektori rii) ja b j B:n j:s pstektori sarake). 3D transformaatiot / 6 3
Lineaarialgebran kertaus jatkuu uom. erik.tapauksena on ektorin kertominen matriisilla, oikealta, jos m tai asemmalta jos n. a:n ja b:n ulottuuuksien tulee olla samat k). ämän uoksi tulo toi päin BA) on määritelt ain neliömatriiseille m k n).ällöinkin leensä AB BA. nollamatriisissa O) M ij, kaikille i,j. ksikkömatriisissa I) M ij ij, eli M ij jos i j, muuten M ij. ksikkömatriisilla kertominen säilttää ektorin ennallaan. n n -neliömatrii determinantti saadaan rekursiiisesti kertomalla jonkin riin r) kukin komponentti rj) alideterminantillaan ja laskemalla tulot hteen. Alideterminantti on sen n- n- - matrii determinantti, joka saadaan poistamalla matriisista ko. komponentin sisältäät rii ja sarake r ja j), ja arustamalla tämä etumerkillä + kun r+j on parillinen, muuten etumerkillä -. Riin rj) sijasta oidaan laskenta mös perustaa sarakkeeseen jr). Näin ollen detm) detm ). 3D transformaatiot / 7 Lineaarialgebran kertaus jatkuu skalaarin ) determinantti on luku itse. 22- ja 33-matriiseille saadaan llä esitetstä lausekkeet M det22m) m *m 22 - m 2 *m 2. M det33m) m * m 22 *m 33 - m 23 *m 32 ) - m 2 * m 2 *m 33 - m 23 *m 3 ) + m 3 * m 2 *m 32 - m 22 *m 3 ). n-:n n-ulotteisen ektorin ristitulo on ektori, jonka komponentteina oat matrii [ 2... n- ] ensimmäisen sarakkeen ) komponentteja astaaat alideterminantit. iis se oidaan mmärtää ektoriaroisena determinanttina r X 2 X... X n- det [ 2... n- ], missä koostuu koordinaatiston kantaektoreista. Kahden 3-ulotteisen ektorin ristitulo on tämän mukaan: u X [ u 2 * 3 - u 3 * 2 -u * 3 - u 3 * ) u * 2 - u 2 * ] 3D transformaatiot / 8 4
Lineaarialgebran kertaus jatkuu 3-ulotteisen ristitulon geometrinen tulkinta: X u n u ß, missä ß u:n ja :n älinen kulma ja n on u:n ja :n sisältään tason normaaliektori. uom. kahden kohtisuoran ektorin pistetulo on aina nolla: X u) u X u). leisesti n-ulotteinen ristituloektori on kohtisuorassa kaikkia tekijäektoreitaan astaan: r r 2... r n-. neliö)matrii M käänteismatriisi M - määritellään htälöllä M - M MM - I. neliö)matriisi on gulaarinen, jos käänteismatriisia ei ole, ts. jos htälölle ei löd ratkaisua. ällöin det M). 3D transformaatiot / 9 Lineaarialgebran kertaus jatkuu htälörhmä, joka sisältää n kpl lineaarisia n:n muuttujan htälöitä m i * + m i2 * 2 +... + m in * n c i, oidaan ilmaista matriisimuodossa ja ratkaista kertomalla puolittain samalta suunnalta) käänteismatriisilla: M X c M - M X M - c. Kätännössä käänteismatriisi lasketaan leensä iteroimalla. useamman matrii tulona ilmaistun matrii käsittelssä oat hödllisiä kaaat: AB) B A ja AB) - B - A - jälkimmäinen edellttäen, että matriisit eiät ole gulaarisia). 3D transformaatiot / 5
Geometriset objektit 3-ulotteia Kolmiulotteisia N-ulotteisia) objekteja oidaan käsitellä suurelta o samalla taalla kuin 2-ulotteisiakin. ietorakenteissa koordinaattien lukumäärä kasatetaan kolmeen N:ään): tpepoint3 record,, : real end; tai:point3 arra [..3] of real; PointN arra [..N] of real; Line3 record p,p2 : Point3 end; Polgon3 record N : integer; corners : arra [..MAX] of Point3 end; 3D transformaatiot / Geometriset objektit 3-ulotteia Jos kätetään homogeenista koordinaattiesitstä, lisätään ielä hteinen kerroinkoordinaatti, jolloin kokonaismäärä kasaa neljään N+:een): tpe point3 record,,, : real end; tai: point3 arra [..4] of real; pointn arra [..N+] of real; Muunnosmatriisien koko astaaasti on 4 4 N+ N+): tpe Matri3 arra [..4,..4] of real; 3D transformaatiot / 2 6
7 3D transformaatiot / 3 3D transformaatiot iirto translaatio) ektorin erran: + + + eli ektorimuodossa p p + : tai matriisikertolaskuna homogeenisille koordinaateille: + 3D transformaatiot / 4 3D transformaatiot jatkuu) Kierto 2-ulotteisessa -tasossa tapahtuu -akselin mpäri: α - α α + α eli matriisimuodossa uom. akselilla oleat pisteet eiät muutu inariantti aliaaruus). Kiertosuunta on oikeakätisen säännön mukainen astapäiään, jos kiertoakseli osoittaa katsojaan päin): p R p
8 3D transformaatiot / 5 Kierrot jatkuu) Kierrot muiden akselien mpäri saadaan aihtamalla koordinaattien paikkoja. iis -akselin mpäri: α + α - α + α eli matriisimuodossa p R p 3D transformaatiot / 6 Kierto jatkuu) ja astaaasti -akselin mpäri: uom matriisit johdettaissa toisistaan sklisellä permutaatiolla. P R P
3D transformaatiot jatkuu) Mittakaaan muutos skaalaus) eri suuntiin: eli matriisimuodossa p p Erikoistapauksia: s htenäinen uniform) skaalaus, jossa mittasuhteet säilät, toteutuu skalaarikertolaskuna tekijällä s: [ ] s p [ s s s ] 3D transformaatiot / 7 kaalaus jatkuu) -, + peilaus -tason suhteen astaaasti - ja -tasojen suhteen). -, + kierto 8 -akselin mpäri astaaasti - ja -akseleiden suhteen). Mitä tapahtuu, jos -? 3D transformaatiot / 8 9
3D transformaatiot jatkuu) Viistoutus shearing): Esimerkiksi inon hdensuuntaisprojektion toteuttaa sopian - osuuden lisääminen -aroihin: + + eli matriisimuodossa p p 3D transformaatiot / 9 Viistoutukset jatkuu) uom. otilasperspektiiissä 2, jolloin kokonaissiirtmä -pisteelle on -aron mittainen; kaaljeeriperspektiiissä siirtmä on puolet tästä eli 2 / 2. Yleisessä tapauksessa lisätään kuhunkin koordinaattiin painotettu osuus toisista. 3D transformaatiot / 2
3D transformaatiot / 2 3D transformaatiot jatkuu) kaalaus kiintopisteen suhteen Perusskaalaus tapahtuu origon suhteen. Mielialtaisen kiintopisteen suhteen skaalaus saadaan siirtämällä en origoon translaatiolla - - - ), suorittamalla sitten skaalaus origon suhteen matriisilla, ja siirtämällä kuio sitten takai pisteeseen käänteistranslaatiolla ). eli hteensä p p Mp. M