Sisältö. Luento 1: Transformaatiot (2D) 1. Koordinaattimuunnokset. Muunnokset (jatkuu) 2. Perustransformaatiot. Perustransformaatiot (jatkuu)



Samankaltaiset tiedostot
Luento 2: Transformaatiot (2D)

Luento 3: Transformaatiot (2D)

Luento 4: 3D Transformaatiot

Avaruuden muunnokset Jukka Liukkonen 24. joulukuuta 2009

Luento 3: 3D katselu. Sisältö

Luento 7: 3D katselu. Sisältö

Grafiikka 205. Tässä luvussa käsitellään geometriaa ja graafisia kohteita. Mukana on pääosin alkeisoperaatioita.

5. Grafiikkaliukuhihna: (1) geometriset operaatiot

3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. Olkoot A 2 := AA =

3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset. 3.2 Matriisien laskutoimitukset

9.2 Lineaarikuvaus Olkoon A kuvaus (funktio) vektoriavaruudesta V vektoriavaruuteen U: jos nyt

Osoita, että kaikki paraabelit ovat yhdenmuotoisia etsimällä skaalauskuvaus, joka vie paraabelin y = ax 2 paraabelille y = bx 2. VASTAUS: , b = 2 2

Suora 1/5 Sisältö ESITIEDOT: vektori, koordinaatistot, piste

1 Matriisit ja lineaariset yhtälöryhmät

Suoran yhtälöt. Suoran ratkaistu ja yleinen muoto: Suoran yhtälö ratkaistussa, eli eksplisiittisessä muodossa, on

1. Matemaattiset perusteet

763306A JOHDATUS SUHTEELLISUUSTEORIAAN 2 Ratkaisut 1 Kevät y' P. α φ

Matikkapaja keskiviikkoisin klo Lineaarialgebra (muut ko) p. 1/81

Matriisialgebra harjoitukset, syksy 2016

Tekijä Pitkä matematiikka

4.1 Kaksi pistettä määrää suoran

Koordinaatistot 1/6 Sisältö ESITIEDOT: reaaliluvut

102 Käyrä. Piste ( 3,0 ) on käyrällä, jos ja vain jos sen koordinaatit. Siis piste ( 1, 2) Siis piste ( 3,0 ) ei ole käyrällä.

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

3.1 Lineaarikuvaukset. MS-A0004/A0006 Matriisilaskenta. 3.1 Lineaarikuvaukset. 3.1 Lineaarikuvaukset

3 Suorat ja tasot. 3.1 Suora. Tässä luvussa käsitellään avaruuksien R 2 ja R 3 suoria ja tasoja vektoreiden näkökulmasta.

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 4 / vko 47

PRELIMINÄÄRIKOE PITKÄ MATEMATIIKKA

Luento 4: Kiertomatriisi

9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa

Lineaarialgebra MATH.1040 / trigonometriaa

Jos γ on tylppä, niin. c 2 = h 2 + (b + s) 2 = a 2 s 2 + (b + s) 2 = a 2 + b 2 + 2bs

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 1 / vko 44

3.1 Lineaarikuvaukset. MS-A0007 Matriisilaskenta. 3.1 Lineaarikuvaukset. 3.1 Lineaarikuvaukset

Muodonmuutostila hum

Piste ja jana koordinaatistossa

BM20A0700, Matematiikka KoTiB2

Neliömatriisi A on ortogonaalinen (eli ortogonaalimatriisi), jos sen alkiot ovat reaalisia ja

Preliminäärikoe Pitkä Matematiikka

Ville Turunen: Mat Matematiikan peruskurssi P1 1. välikokeen alueen teoriatiivistelmä 2007

Avaruuden kolme sellaista pistettä, jotka eivät sijaitse samalla suoralla, määräävät

Matikkapaja keskiviikkoisin klo Lineaarialgebra (muut ko) p. 1/210

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5.

T Vuorovaikutteinen tietokonegrafiikka Tentti

Oppimateriaali oppilaalle ja opettajalle : GeoGebra oppilaan työkaluna ylioppilaskirjoituksissa 2016 versio 0.8

3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä

Johdatus matematiikkaan

Yleistä vektoreista GeoGebralla

y z = (x, y) Kuva 1: Euklidinen taso R 2

1 Ominaisarvot ja ominaisvektorit

Ellipsit, hyperbelit ja paraabelit vinossa

2) Kaksi lentokonetta lähestyy toisiaan samalla korkeudella kuvan osoittamalla tavalla. Millä korkeudella ja kuinka kaukana toisistaan ne ovat?

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

1 Kompleksiluvut 1. y z = (x, y) Kuva 1: Euklidinen taso R 2

Johdatus tekoälyn taustalla olevaan matematiikkaan

Insinöörimatematiikka D

Anna jokaisen kohdan vastaus kolmen merkitsevän numeron tarkkuudella muodossa

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.

Toisen asteen käyrät 1/7 Sisältö ESITIEDOT: käyrä, kartio ja lieriö

Matriisit ja vektorit Matriisin käsite Matriisialgebra. Olkoon A = , B = Laske A + B, , 1 3 3

Tampereen yliopisto Tietokonegrafiikka 2013 Tietojenkäsittelytiede Harjoitus

Pyramidi 4 Analyyttinen geometria tehtävien ratkaisut sivu 352 Päivitetty Pyramidi 4 Luku Ensimmäinen julkaistu versio

0, niin vektorit eivät ole kohtisuorassa toisiaan vastaan.

Lineaarialgebra (muut ko)

, c) x = 0 tai x = 2. = x 3. 9 = 2 3, = eli kun x = 5 tai x = 1. Näistä

Ensimmäisen asteen polynomifunktio

Juuri 4 Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty Kertaus. b) B = (3, 0, 5) K2. 8 ( 1)

3.4 Käänteiskuvauslause ja implisiittifunktiolause

Talousmatematiikan perusteet: Luento 9

2.3 Voiman jakaminen komponentteihin

Vapaus. Määritelmä. jos c 1 v 1 + c 2 v c k v k = 0 joillakin c 1,..., c k R, niin c 1 = 0, c 2 = 0,..., c k = 0.

Symmetrioiden tutkiminen GeoGebran avulla

5 Ominaisarvot ja ominaisvektorit

Insinöörimatematiikka D

TRIGONOMETRISTEN FUNKTIOIDEN KUVAAJAT

Matriisien tulo. Matriisit ja lineaarinen yhtälöryhmä

Sijoitusmenetelmä Yhtälöpari

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37

Matriisi-vektori-kertolasku, lineaariset yhtälöryhmät

Seuraava luento ti on salissa XXII. Lineaarialgebra (muut ko) p. 1/117

6.1 Lineaarinen optimointi

6.6. Tasoitus ja terävöinti

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

dx = L2 (x + 1) 2 dx x ln x + 1 = L 2 1 L + 1 L ( = 1 ((L + 1)ln(L + 1) L) L k + 1 xk+1 = 1 k + 2 xk+2 = 1 10k+1 k + 2 = 7.

Vanhoja koetehtäviä. Analyyttinen geometria 2016

Lineaarinen yhtälöryhmä

Lineaarialgebra ja matriisilaskenta I

Luento 2: 2D Katselu. Sisältö

Konformigeometriaa. 5. maaliskuuta 2006

z Im (z +1) 2 = 0. Mitkä muut kompleksitason pisteet toteuttavat tämän yhtälön? ( 1) 0 z ( 1) z ( 1) arg = arg(z 0) arg(z ( 1)), z ( 1) z ( 1)

Kompleksiluvut., 15. kesäkuuta /57

3D animaatio: liikekäyrät ja interpolointi. Tommi Tykkälä

Matriisilaskenta, LH4, 2004, ratkaisut 1. Hae seuraavien R 4 :n aliavaruuksien dimensiot, jotka sisältävät vain

Lineaarialgebran laskumoniste Osa1 : vektorit

POIKKIPINNAN GEOMETRISET SUUREET

Tekijä Pitkä matematiikka b) Kuvasta nähdään, että b = i 4 j. c) Käytetään a- ja b-kohtien tuloksia ja muokataan lauseketta.

3x + y + 2z = 5 e) 2x + 3y 2z = 3 x 2y + 4z = 1. x + y 2z + u + 3v = 1 b) 2x y + 2z + 2u + 6v = 2 3x + 2y 4z 3u 9v = 3. { 2x y = k 4x + 2y = h

Transkriptio:

Sisältö ietokonegrafiikka / perusteet Ako/-.3/3 4 ov / 2 ov Perustransformaatiot ransformaatioiden hdistäminen Muunnosmatriisit Laskennallisia näkökohtia Luento : ransformaatiot (2D) Marko Mllmaa 6/4 2D transformaatiot / 2D transformaatiot / 2. Koordinaattimuunnokset Geometriset objektit ietorakenteet koostuvat leensä pisteistä: tpedef struct pointpe { float x; float ; float z; } Point; tpedef struct linepe { Point p; Point p2; } Line; Usein olisi mukavaa, jos voitaisiin määritellä objektin pisteet omassa koordinaatistossaan (C), josta objekti sitten siirrettäisiin sopivan kokoisena sopivaan paikkaan ja asentoon kättökoordinaatistossa (C'). Muunnokset (jatkuu) ämä voidaan toteuttaa suorittamalla kuvion pisteille transformaatioita eli koordinaattimuunnoksia. Kokonainen geometrinen objekti muunnetaan leensä muuntamalla jokainen piste erikseen. ärkeää on silloin pstä esittämään objektit ja muunnokset siten, että vain olennaisten määrittel- tai ohjauspisteiden käsittel riittää, ja muunnettu kuvio voidaan piirtää näiden avulla. Esim. muunnettu monikulmio voidaan piirtää muunnetujen nurkkapisteiden kautta. 2D transformaatiot / 3 2D transformaatiot / 4 2. Perustransformaatiot ) Siirto (translaatio) vektorin t verran: x + tx eli vektorimuodossa: + t tx p p + t + t ' Perustransformaatiot (jatkuu) 2) Kierto (rotaatio) kulman verran vastapäivään origon mpäri: x cos ϕ sin ϕ eli matriisimuodossa: xsin ϕ + cos ϕ cosϕ p Rp sin ϕ ' sin ϕ cosϕ Huom. Kaikki pisteet siirtvät saman verran; Kuvion muoto, koko ja asento säilvät. x siirrett (C') 2D transformaatiot / 5 ' kierrett (C') Huom. Origo ps paikallaan, kaikki muut pisteet siirtvät; Kuvion muoto ja koko säilvät. 2D transformaatiot / 6 ϕ +9 '

Esim. Kierto (jatkuu) ϕ 9 : sin ϕ, cosϕ : x ϕ 8 : sin ϕ, cosϕ : Perustransformaatiot (jatkuu) 3) Mittakaavan muutos (skaalaus) eri suuntiin: S x x S Sx p Sp S ' Esim. ' Sx.5 kierrett (C') ϕ +9 ' skaalattu (C') S.75 ' 2D transformaatiot / 7 2D transformaatiot / 8 Erikoistapauksia: Skaalaus (jatkuu) S x S mittasuhteet säilvät (uniform scale) S x -, S vaakapeilaus -akselin suhteen S x, S - pstpeilaus x-akselin suhteen S x -, S - kierto 8 (pistesmmetria origon suhteen) Huom. Origo ps aina paikallaan, leensä kaikki muut pisteet siirtvät, erikoistapauksia lukuunottamatta asento säil, mutta kuvion muoto litist tai ven. 2D transformaatiot / 9 Perustransformaatiot (jatkuu) 4) viistoutus (shearing): koordinaattiakseleita kallistetaan x + H x H x p Hp + H x H ' Hx.5 x.5 H H.25 ' '' x-viistottu (C') x-viistottu (C'') Huom! Samalla -arvolla olevat pisteet siirtvät vakiomatkan x- suunnassa, vaikka mös muuttuisi. Jos H, niin x-akselin pisteet psvät paikallaan (vastaavasti - akseli, jos H x ). Origo ps paikallaan; kuvion muoto ja koko muuttuvat. '' 2D transformaatiot / Hx.5 Koordinaatiston kannan muuntuminen Kuvion muuntuminen voidaan mmärtää koordinaatiston kannan vaihtumisena: sovelletaan alkuperäisen kuvion x-koordinaatteja vinokantaisessa koordinaatistossa. Lineaarimuunnoksille (edellä esitett) tämä toteutuu matriisikertolaskuna. e2 alkuperäinen kanta e M '' e2' muunnettu kanta e' '' 3. Muunnosten hdistel Perusmuunnokset ovat lineaarisia (ts. suorat viivat säilvät suorina), jolloin monikulmiosta riittää muuntaa vain nurkkapisteet. Sama ei päde kaikille esitstavoille (esim. mprälle keskipisteen ja säteen muunnos). Muunnoksia voidaan hdistellä tekemällä ne ksi kerrallaan peräkkäin, esim. skaalaus (S), kierto (R) ja siirto () kuten edellä. Huom! Järjests vaikuttaa: SR ja SR antavat eri tuloksen. 2D transformaatiot / 2D transformaatiot / 2 2

' SR x ''.5 x ' Sx.5 ' Sx.5 S S.75.75 '' ''' SR S S.75 ' '' R ϕ +9 '' Muunnosten hdistel (jatkuu) Ongelma: Usein halutaan tehdä hierarkkisia geometrisia malleja, joissa mallin osat muunnetaan omista koordinaatistoistaan laajemman kokonaisuuden koordinaatistoon. Osat voivat samoin muodostua pienemmistä osista jne. Kullakin tasolla voidaan joutua tekemään jopa 3 eri muunnosta (siirto, kierto, skaalaus). Onko N-tasoisen mallin kullekin osalle siis tehtävä 3 x N muunnosta, jotta päästäisiin lopulliseen piirtokoordinaatistoon? Vastaus: Onneksi ei! ransformaatiot voidaan hdistää (katenoida) hdeksi. ''' R ϕ +9 x Entä RS? ''' ''' 2D transformaatiot / 3 2D transformaatiot / 4 Muunnosten hdistel (jatkuu) Esim. skaalaus (2., 3.), kierto 9 ja siirto (+, +5): S: x' 2 x ' 3 R: x'' -' -3 '' x' 2x : x''' x'' + -3 + ''' '' + 5 2x + 5 Mutta: On ikävää tehdä algebrallista käsittelä jokaiselle muunnokselle erikseen. 4. Muunnokset matriisien avulla Pitäisi lötää formalismi, joka sallisi kaikkien esitettjen transformaatioiden homogeenisen käsitteln. Lineaarialgebra tuntuisi tarjoavan oivan välineen kaikkien lineaaristen muunnosten hoitamiseen matriisikertolaskun avulla: m p Mp m Miksi translaatio ei onnistu? 2 m2 m 22 2D transformaatiot / 5 2D transformaatiot / 6 Muunnosmatriisit (jatkuu) Idea: Viistoutusmuunnos (shearing) toteutti saman x-suuntaisen translaation kaikille samalla -arvolla oleville pisteille. Vakiosiirtmät molempiin suuntiin (x) saataisiin 3-ulotteisessa koordinaatistossa tasolla z-koordinaatin suhteen tehtävällä viistoutusmuunnoksella: Z Z' x.5 z taso z z-akselin viistoutus (x' x +.5 z) saa tasolla (z) psville kuvioille aikaan vakiosiirtmän Muunnosmatriisit (jatkuu) Homogeeniset koordinaatit Laajennetaan n-ulotteisen avaruuden piste n+-ulotteiseksi lisäämällä tekijä w, jolla n-ulotteiset koordinaatit kerrotaan: [ x ] [ wx w w] [ x ], jos w Huom: htä n-ulotteisen avaruuden pistettä esittää nt äärettömän monta n+-ulotteista pistettä eri w:n arvoilla. Ne sijaitsevat origon ja pisteen [ x ] kautta kulkevalla suoralla. Huom2: Pisteet muunnetaan homogeenisista koordinaateista takaisin tavalliseen esitsmuotoon projisoimalla ne tasolle w, eli jakolaskulla: [ wx w w] [ x/w /w] [ x ], jos w 2D transformaatiot / 7 2D transformaatiot / 8 3

Muunnosmatriisit (jatkuu) Huom3: ämä mahdollistaa mös äärettömän kaukana olevien pisteiden esittämisen äärellisten koordinaattiarvojen avulla: [ x ] [ x / / ] [ ] Äärettömdessä sijaitsevan pisteen suunta on kuitenkin hvin määritelt, sillä suuntakulman tangentti on laskettavissa. (ällä on kättöä eritisesti 3-ulotteisissa kuvissa.) Huom4: Homogeenisilla koordinaateilla esitetn pisteen voi mmärtää mös vektorina, jonka suunnan määräävät x ja (vektorin ja koordinaattiakselien välisten kulmien kosinit) ja pituuden w(käänteisarvona): [ x w] [ cosα sinα / d] Näin esitett vektori ei muutu, jos kaikki komponentit kerrotaan samalla vakiolla. Sama vektori voidaan siis esittää lläolevassa muodossa kun x 2 + 2, tai vektorisiirtmää vastaavana pisteenä kun w. 2D transformaatiot / 9 Muunnosmatriisit (jatkuu) Kaikki perustransformaatiot voidaan nt ilmaista lineaarimuunnoksina homogeenisille koordinaateille: : w Sx S : w x w S w Huom! Näissä muunnoksissa aina pätee, että w' w Siis jos w, niin voidaan kättää suoraan tavallisia koordinaatteja; muunnetun pisteen koordinaatit saadaan ilman jakolaskua. Esim. 2D transformaatiot / 2 cosϕ sinϕ R : sinϕ cosϕ w w H : H w H x w x + x + w 5. Matriisien hdistäminen (katenointi) Matriisikertolasku on assosiatiivinen, ts. kertolaskulauseke voidaan laskea htä hvin vasemmalta oikealle tai päinvastoin: A(BC) (AB)C. Esim. Kuvion kiertäminen mielivaltaisen pisteen F [ F x F ] mpäri koostuu kolmesta vaiheesta: : Siirretään piste F origoksi translaatiolla [ -F x -F ]. R : Kierretään kuviota kulman verran origon mpäri. : Siirretään origo takaisin translaatiolla [ +F x +F ]. Matriisihdists (jatkuu) Esim2. Kuvion suurentaminen kaksinkertaiseksi (viivasuhteen säilttäen) ja siirtäminen kmmenen ksikköä oikealle: 2 S 2 Jos suurennus tehdään ensin: p' (S)p Kokonaismuunnos saadaan matriisikertolaskuna: p Rp Mp, missä M R Päinvastaisessa järjestksessä: -> eri tulokset p' (S)p 2D transformaatiot / 2 2D transformaatiot / 22 Matriisihdists (jatkuu) Huom. Pisteet voidaan esittää joko pst- tai vaakavektoreina. Matriisikertolaskun suunta on näissä erilainen, esim.: A C x p ; p Mp ; M B D A p [ x ]; p p M ; M C x leisesti matriiseille pätee: (A B) B A B D Matriisihdists (jatkuu) Erikoistapauksia: ranslaatiot summautuvat hteen ( x, ) ( x2, 2 ) ( x + x2, + 2 ) Skaalaukset kertautuvat keskenään S (S x, S ) S (S x2, S 2 ) S (S x S x2, S S 2 ) Rotaatioiden kulmat summautuvat (mutta matriisit eivät) R (ϕ ) R (ϕ 2 ) R (ϕ + ϕ 2 ) Skaalaus- ja kiertomatriisit mielivaltaisen pisteen suhteen ovat muuten samoja kuin vastaavat origon suhteen, mutta matriisiin lisätään kaikista tekijöistä riippuva translaatio 2D transformaatiot / 23 2D transformaatiot / 24 4

6. Laskennallisia näkökohtia Käänteismuunnokset Käänteismuunnos palauttaa muunnetun kuvion alkuperäiseksi, ts. M M p p ; M M I ranslaation käänteiskuvaus saadaan vastaavilla negatiivisilla siirtmäarvoilla ( - x, - ) Rotaation käänteismatriisi saadaan saman kulman negatiivisella arvolla. Koska cos(-ϕ) cos(ϕ) ja sin(- ϕ) -sin(ϕ), niin käänteismatriisi on alkuperäisen transpoosi: R (- ϕ) R (ϕ) Käänteinen skaalaus saadaan kättämällä skaalaustekijöiden käänteisarvoja (/S x, /S ) Laskennallisia... (jatkuu) leisen muunnosmatriisin käänteiskuvaus saadaan vain laskemalla käänteismatriisi numeerisesti. Perusmuunnoksista koostuva matriisi voidaan kuitenkin purkaa edellä esitettihin ksinkertaisiin tapauksiin, sillä leisesti pätee: (A B) B A Siis esim. (R S) ( S R ) Huom! käänteismatriisi on olemassa vain, jos determinantti M <>. ämä tarkoittaa, ettei missään vaiheessa ole skaalattu tekijällä, mikä kutistaisi 2-ulotteisen kuvion suoraksi tai pisteeksi. 2D transformaatiot / 25 2D transformaatiot / 26 Laskentanäkökohdat (jatkuu) Numeerisen laskennan tehokkuus Esitett transformaatiot ovat aina muotoa p' M p, missä p on 3-elementtinen vektori ja M on 3x3-matriisi. Kukin p':n elementti on siis 3 p i Mikpk Mip + Mi2p2 + Mi3p k arvitaanko koko matriisikertolaskun suorittamiseksi siis aina 9 kertolaskua ja 6 hteenlaskua? 3 Laskentanäkökohdat (jatkuu) Onneksi ei: Vektorin w-komponenttia ei tarvitse laskea, koska aina w. Samoin osa matriisista on aina nollia tai kkösiä, joilla ei kannata suorittaa kertolaskuja. ädellinen vektorikertolaskun muoto a b c d e f voidaankin redusoida muotoon a b d e c a f d b c + e f eli x' ax + b + c Siis vain: 4 kertolaskua ja ' dx + e + f 4 hteenlaskua! 2D transformaatiot / 27 2D transformaatiot / 28 Laskentanäkökohdat (jatkuu) Vastaavasti 3x3-matriisien välinen kertolasku leisesti vaatisi 27 kertolaskua 8 hteenlaskua mutta transformaatiomatriisien kertolaskulle M m x m2 saadaan lausekkeet: joka voidaan sieventää A aa2 + db2 B ba2 + eb2 C ca2 + fb2 + c2 eli hteensä 2 kertolaskua ja 8 hteenlaskua! D ad2 + de2 E bd2 + ee2 F cd2 + fe2 + f2 7. Muunnoskomennot ohjelmistossa hdistetn muunnoksen M (S R ) suorittava matriisi voidaan määritellä hdellä kertaa komennolla create_transf_matrix (xf, f, sx, s, xr, r, a, tx, t, matrix) Huom. järjests: ensin on skaalaus pisteen (xf, f) suhteen tekijöillä (sx, s) sitten on kierto pisteen (xr, r) mpäri kulman a verran viimeisenä on siirto vektorin (tx, t) verran Muunnoksia voidaan määritellä vaiheittain siten, että aiemmin teht matriisi kerrotaan uudella, M' (S R) M, kättäen komentoa accumulate_transf_matrix (matrix_in, xf, f, sx, s, xr, r, a, tx, t, matrix_out) Parametrit ovat vastaavia kuin edellisessä komennossa, mutta näin määritellllä mariisilla (S R ) kerrotaan matrix_in, ja tulo talletetaan matriisiin matrix_out. 2D transformaatiot / 29 2D transformaatiot / 3 5

Muunnoskomennot (jatkuu) Graafisessa järjestelmässä matriiseja voidaan kättää kahdella tavalla muuntaa olemassa olevia graafisia olioita (olio-keskeinen tapa) transform_object (object, matrix) asettaa voimaan muunnos, joka sitten tehdään kaikille möhemmin määriteltäville objekteille (modaalinen, proseduuri-keskeinen tapa) set_transformation (matrix) Muunnokset leensä suoritetaan graafisten primitiivien määritellille pisteille (esim. monikulmion nurkat), ja varsinainen piirtäminen tapahtuu sitten muunnettujen pisteiden perusteella. 8. Graafisten objektien muuntaminen Pisteiden avulla ilmaistut kuviot (Polmarker, Polline, Fill-area) muunnetaan kertomalla kunkin ohjauspisteen koordinaatit muunnos-matriisilla. ekstiprimitiivillä on vain ksi ohjauspiste (tekstin aloituskohta), joka voidaan käsitellä muunnosmatriisilla. Muut geometriset muunnokset on korvattava tekstiattribuuttien vastaavilla muutoksilla (skaalaus vaikuttaa kirjasinkokoon, kierto kirjainten pstvektoriin). Laiteohjaimen tasolla muunnosmahdollisuudet riippuvat tekstin toteutustavasta: laitetasolla toteutettu tekstin piirto on harvoin mahdollista muuten kuin vaakasuoraan ja ennalta määrättinä kokovaihtoehtoina. Rasterimaskeina esitettihin kirjaimiin pätee sama kuin rasteriobjekteihin leensäkin (ks. alla). vektoreina tai kärinä toteutetut kirjaimet voidaan käsitellä täsin samalla tavoin kuin viivapiirrokset (ts. jokainen ohjauspiste muunnetaan erikseen). 2D transformaatiot / 3 2D transformaatiot / 32 Objektien muunnokset (jatkuu) Rasteriobjektien kohdalla muunnosten toteutus voi olla vaikeaa ja epätarkkaa (esim. mielivaltainen kierto ja skaalaus). äsmällisesti onnistuvat vain translaatio ja skaalaus kokonaisluvuilla sekä kierto 9 kerrannaisilla. Muissa tapauksissa on approksimaationa sntvä rasteri antialiasoitava (suodatettava). Rasterikuvioiden käsittelstä Rasterikuviot ovat leensä koordinaattiakselien suuntaisia suorakaiteen muotoisia alueita, jotka esitetään tietokoneessa htenäisinä muistialueina. Perusoperaationa on suorakulmaisen osa-alueen kopiointi muistialueesta toiseen eli Bit Block ransfer (bit-blt). ämä on niin tehokasta, että usein pritään muutkin operaatiot suorittamaan sen avulla pelkkinä siirtoina. Esim. : Mielivaltaisen muotoinen rasterikuvio esitetään mpäröivän suorakaiteen kokoisena rasterina sekä siihen liittvänä vastaavan kokoisena maskina, joka ilmaisee hdellä bitillä kuuluuko kukin pikselin kuvioon Kuviota siirrettäessä kopioidaan kohteena olevaan muistialueeseean (esim. nätön kuvapuskuri) vain ne pikselit, joiden kohdalla maskissa on kkönen 2D transformaatiot / 33 2D transformaatiot / 34 Rasteri... (jatkuu) Esim.2 : Rasterikuvion pörittäminen 9 kulman verran voidaan toteuttaa siten, että neliöalueen neljännesten paikkoja vaihdetaan kiertävässä järjestksessä. oistamalla tätä rekursiivisesti osaneliöiden sisällä saadaan lopulta koko kuvion pikselit oikeille paikoilleen. 2D transformaatiot / 35 6