Luento 3: Transformaatiot (2D)

Samankaltaiset tiedostot
Luento 2: Transformaatiot (2D)

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

Luento 4: 3D Transformaatiot

Luento 3: 3D katselu. Sisältö

Luento 7: 3D katselu. Sisältö

Avaruuden muunnokset Jukka Liukkonen 24. joulukuuta 2009

1. Matemaattiset perusteet

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

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

5. Grafiikkaliukuhihna: (1) geometriset operaatiot

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

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

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

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 4 / vko 47

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

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

Tekijä Pitkä matematiikka

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

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

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

Matriisialgebra harjoitukset, syksy 2016

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

Piste ja jana koordinaatistossa

BM20A0700, Matematiikka KoTiB2

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

T Vuorovaikutteinen tietokonegrafiikka Tentti

1 Matriisit ja lineaariset yhtälöryhmät

Luento 2: 2D Katselu. Sisältö

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

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

3.4 Käänteiskuvauslause ja implisiittifunktiolause

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)

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

Koordinaatistot 1/6 Sisältö ESITIEDOT: reaaliluvut

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

Yleistä vektoreista GeoGebralla

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

4.1 Kaksi pistettä määrää suoran

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

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 1 / vko 44

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

Ellipsit, hyperbelit ja paraabelit vinossa

Insinöörimatematiikka D

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

Insinöörimatematiikka D

Muodonmuutostila hum

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

Luento 2: Tulostusprimitiivit

Symmetrioiden tutkiminen GeoGebran avulla

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.

Tekijä Pitkä matematiikka On osoitettava, että jana DE sivun AB kanssa yhdensuuntainen ja sen pituus on 4 5

TRIGONOMETRISTEN FUNKTIOIDEN KUVAAJAT

Preliminäärikoe Pitkä Matematiikka

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

1 Ominaisarvot ja ominaisvektorit

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.

Luento 2: Viivan toteutus

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

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

A = a b B = c d. d e f. g h i determinantti on det(c) = a(ei fh) b(di fg) + c(dh eg). Matriisin determinanttia voi merkitä myös pystyviivojen avulla:

Lineaarialgebra ja matriisilaskenta I

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.

Talousmatematiikan perusteet: Luento 9

Kompleksiluvut., 15. kesäkuuta /57

Johdatus tekoälyn taustalla olevaan matematiikkaan

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

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

5 Ominaisarvot ja ominaisvektorit

Sijoitusmenetelmä Yhtälöpari

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

FUNKTION KUVAAJAN PIIRTÄMINEN

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

2.3 Voiman jakaminen komponentteihin

LAATTATEORIAA. Yleistä. Kuva 1.

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

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

Konformigeometriaa. 5. maaliskuuta 2006

Kurssin loppuosassa tutustutaan matriiseihin ja niiden käyttöön yhtälöryhmien ratkaisemisessa.

Teoreettisia perusteita II

Matriisilaskenta Laskuharjoitus 1 - Ratkaisut / vko 37

normaali- ja leikkaus jännitysten laskemiseen pisteessä Määritetään ne tasot, joista suurimmat normaali- ja leikkausjännitykset löytyvät

Mat. tukikurssi 27.3.

Luento 6: Tulostusprimitiivien toteutus

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.

Ensimmäisen asteen polynomifunktio

Vektorialgebra 1/5 Sisältö ESITIEDOT: vektori

Johdatus matematiikkaan

Täydennetään ja kerrataan Fitzpatrickin lukujen 18 ja 19 esitystä.

Lineaarialgebra (muut ko)

Usean muuttujan funktiot

6.1 Lineaarinen optimointi

Determinantti 1 / 30

Talousmatematiikan perusteet: Luento 8. Vektoreista ja matriiseista Vektorien peruslaskutoimitukset Lineaarinen riippumattomuus Vektorien sisätulo

Ratkaisuehdotukset LH 7 / vko 47

Vanhoja koetehtäviä. Analyyttinen geometria 2016

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

Tekijä Pitkä matematiikka Suoran pisteitä ovat esimerkiksi ( 5, 2), ( 2,1), (1, 0), (4, 1) ja ( 11, 4).

Transkriptio:

ietokonegrafiikan perusteet -.43 3 op Luento 3: ransformaatiot (2D) Lauri Savioja /5 2D transformaatiot / Sisältö Perustransformaatiot ransformaatioiden hdistäminen Muunnosmatriisit Laskennallisia näkökohtia 2D transformaatiot / 2

. Koordinaattimuunnokset Geometriset objektit ietorakenteet koostuvat leensä pisteistä: tpe Point record, : real end; Line record p,p2 : Point end; Polgon record N : integer; corners : arra [..MAX] of Point end; 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'). 2D transformaatiot / 3 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 / 4 2

2. Perustransformaatiot ) Siirto (translaatio) vektorin t verran: eli vektorimuodossa: Y Y' + t + t t p p + t + t alkuperäinen (C) X siirrett (C') X' Huom. Kaikki pisteet siirtvät saman verran; Kuvion muoto, koko ja asento säilvät. 2D transformaatiot / 5 Perustransformaatiot (jatkuu) 2) Kierto (rotaatio) kulman verran vastapäivään origon mpäri: eli matriisimuodossa: Y cos sin sin + cos cos' p Rp sin ' Y' ( sin ' cos' alkuperäinen (C) X kierrett (C') Huom. Origo ps paikallaan, kaikki muut pisteet siirtvät; Kuvion muoto ja koko säilvät. 2D transformaatiot / 6 +9 X' 3

Kierto (jatkuu) Esim. ' ( 9 : sin (, cos( : ' ( 8 : sin (, cos( ' : ' Y Y' alkuperäinen (C) X kierrett (C') +9 X' 2D transformaatiot / 7 Perustransformaatiot (jatkuu) 3) Mittakaavan muutos (skaalaus) eri suuntiin: Esim. S S Y p Sp Y' S S S.5 alkuperäinen (C) X skaalattu (C') S.75 X' 2D transformaatiot / 8 4

Erikoistapauksia: Skaalaus (jatkuu) S S mittasuhteet säilvät (uniform scale) S -, S vaakapeilaus -akselin suhteen S, S - pstpeilaus -akselin suhteen S -, 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 + H + H Y Y' p Hp H H.5.5 Y'' H.5 H alkuperäinen (C) X -viistottu (C') H Huom Samalla -arvolla olevat pisteet siirtvät vakiomatkan - suunnassa, vaikka mös muuttuisi. Jos H, niin -akselin pisteet psvät paikallaan (vastaavasti - akseli, jos H ). Origo ps paikallaan; kuvion muoto ja koko muuttuvat. X' 2D transformaatiot / -viistottu (C'') H.25 X'' 5

Koordinaatiston kannan muuntuminen Kuvion muuntuminen voidaan mmärtää koordinaatiston kannan vaihtumisena: sovelletaan alkuperäisen kuvion -koordinaatteja vinokantaisessa koordinaatistossa. Lineaarimuunnoksille (edellä esitett) tämä toteutuu matriisikertolaskuna. Y alkuperäinen kanta Y'' muunnettu kanta e2 e X M e2' e' X'' 2D transformaatiot / 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 / 2 6

Y SR SR X Y' alkuperäinen (C) Y' S S.5 S.75 X' X' Y'' Y'' S.5 S.5.75 S.75 R +9 X'' X'' Y''' Y''' R +9 Entä RS? X''' X''' 2D transformaatiot / 3 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 N muunnosta, jotta päästäisiin lopulliseen piirtokoordinaatistoon? Vastaus: Onneksi ei ransformaatiot voidaan hdistää (katenoida) hdeksi. 2D transformaatiot / 4 7

Muunnosten hdistel (jatkuu) Esim. skaalaus (2., 3.), kierto 9 ja siirto (+, +5): S: ' 2 ' 3 R: '' -' -3 '' ' 2 : ''' '' + -3 + ''' '' + 5 2 + 5 Mutta: On ikävää tehdä algebrallista käsittelä jokaiselle muunnokselle erikseen. 2D transformaatiot / 5 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 2 m m 2 22 Miksi translaatio ei onnistu? 2D transformaatiot / 6 8

Muunnosmatriisit (jatkuu) Idea: Viistoutusmuunnos (shearing) toteutti saman -suuntaisen translaation kaikille samalla -arvolla oleville pisteille. Vakiosiirtmät molempiin suuntiin () saataisiin 3-ulotteisessa koordinaatistossa tasolla z-koordinaatin suhteen tehtävällä viistoutusmuunnoksella: Z Z' taso z.5 z Y z-akselin viistoutus (' +.5 z) saa tasolla (z) psville kuvioille aikaan vakiosiirtmän X 2D transformaatiot / 7 Muunnosmatriisit (jatkuu) Homogeeniset koordinaatit Laajennetaan n-ulotteisen avaruuden piste n+-ulotteiseksi lisäämällä tekijä w, jolla n-ulotteiset koordinaatit kerrotaan: [ ] [ w w w] [ ], jos w Huom: Yhtä n-ulotteisen avaruuden pistettä esittää nt äärettömän monta n+-ulotteista pistettä eri w:n arvoilla. Ne sijaitsevat origon ja pisteen [ ] kautta kulkevalla suoralla. Huom2: Pisteet muunnetaan homogeenisista koordinaateista takaisin tavalliseen esitsmuotoon projisoimalla ne tasolle w, eli jakolaskulla: [ w w w] [ /w /w] [ ], jos w 2D transformaatiot / 8 9

2D transformaatiot / 9 Muunnosmatriisit (jatkuu) Huom3: ämä mahdollistaa mös äärettömän kaukana olevien pisteiden esittämisen äärellisten koordinaattiarvojen avulla: Ää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 ja (vektorin ja koordinaattiakselien välisten kulmien kosinit) ja pituuden w(käänteisarvona): Näin esitett vektori ei muutu, jos kaikki komponentit kerrotaan samalla vakiolla. Sama vektori voidaan siis esittää lläolevassa muodossa kun 2 + 2, tai vektorisiirtmää vastaavana pisteenä kun w. [ ] [ ] [ ] / / [ ] [ ] d w / sin cos 2D transformaatiot / 2 Muunnosmatriisit (jatkuu) Kaikki perustransformaatiot voidaan nt ilmaista lineaarimuunnoksina homogeenisille koordinaateille: 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. w w : ' w w cos sin sin cos : ( ( ( ( R w S S w S : w H H w H : + + 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 F ] mpäri koostuu kolmesta vaiheesta: : Siirretään piste F origoksi translaatiolla [ -F -F ]. R : Kierretään kuviota kulman verran origon mpäri. : Siirretään origo takaisin translaatiolla [ +F +F ]. Kokonaismuunnos saadaan matriisikertolaskuna: p Rp Mp, missä M R 2D transformaatiot / 2 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 Päinvastaisessa järjestksessä: p' (S)p 2D transformaatiot / 22

Matriisihdists (jatkuu) Huom. Pisteet voidaan esittää joko pst- tai vaakavektoreina. Matriisikertolaskun suunta on näissä erilainen, esim.: A C p ; p Mp ; M B D p [ ]; p p M ; M A C Yleisesti matriiseille pätee: (A B) B A B D 2D transformaatiot / 23 Matriisihdists (jatkuu) Erikoistapauksia: ranslaatiot summautuvat hteen (, ) ( 2, 2 ) ( + 2, + 2 ) Skaalaukset kertautuvat keskenään S (S, S ) S (S 2, S 2 ) S (S S 2, 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 / 24 2

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 ( -, - ) 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, /S ) 2D transformaatiot / 25 Laskennallisia... (jatkuu) Yleisen 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 / 26 3

4 2D transformaatiot / 27 Laskentanäkökohdat (jatkuu) Numeerisen laskennan tehokkuus Esitett transformaatiot ovat aina muotoa p' M p, missä p on 3-elementtinen vektori ja M on 33-matriisi. Kukin p':n elementti on siis arvitaanko koko matriisikertolaskun suorittamiseksi siis aina 9 kertolaskua ja 6 hteenlaskua? 3 i3 2 i2 3 k i k ik i p M p M p M p M p + + 2D transformaatiot / 28 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 voidaankin redusoida muotoon eli ' a + b + c Siis vain: 4 kertolaskua ja ' d + e + f 4 hteenlaskua f e d c b a + f c e d b a f e d c b a

Laskentanäkökohdat (jatkuu) Vastaavasti 33-matriisien välinen kertolasku leisesti vaatisi 27 kertolaskua 8 hteenlaskua mutta transformaatiomatriisien kertolaskulle M m m2 saadaan lausekkeet: joka voidaan sieventää A aa2 + db2 B ba2 + eb2 C ca2 + fb2 + c2 D ad2 + de2 E bd2 + ee2 F cd2 + fe2 + f2 eli hteensä 2 kertolaskua ja 8 hteenlaskua 2D transformaatiot / 29 7. Muunnoskomennot ohjelmistossa Yhdistetn muunnoksen M (S R ) suorittava matriisi voidaan määritellä hdellä kertaa komennolla create_transf_matri (f, f, s, s, r, r, a, t, t, matri) Huom. järjests: ensin on skaalaus pisteen (f, f) suhteen tekijöillä (s, s) sitten on kierto pisteen (r, r) mpäri kulman a verran viimeisenä on siirto vektorin (t, t) verran Muunnoksia voidaan määritellä vaiheittain siten, että aiemmin teht matriisi kerrotaan uudella, M' (S R ) M, kättäen komentoa accumulate_transf_matri (matri_in, f, f, s, s, r, r, a, t, t, matri_out) Parametrit ovat vastaavia kuin edellisessä komennossa, mutta näin määritellllä mariisilla (S R ) kerrotaan matri_in, ja tulo talletetaan matriisiin matri_out. 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, matri) asettaa voimaan muunnos, joka sitten tehdään kaikille möhemmin määriteltäville objekteille (modaalinen, proseduuri-keskeinen tapa) set_transformation (matri) Muunnokset leensä suoritetaan graafisten primitiivien määritellille pisteille (esim. monikulmion nurkat), ja varsinainen piirtäminen tapahtuu sitten muunnettujen pisteiden perusteella. 2D transformaatiot / 3 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 / 32 6

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). 2D transformaatiot / 33 Rasterikuvioiden käsittelstä Rasterikuviot ovat leensä koordinaattiakselien suuntaisia suorakaiteen muoroisia 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 / 34 7

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 8