Luihin perustuva 3D-animointi tietokonepeleissä

Koko: px
Aloita esitys sivulta:

Download "Luihin perustuva 3D-animointi tietokonepeleissä"

Transkriptio

1 Luihin perustuva 3D-animointi tietokonepeleissä Tiina-Kaisa Oikarinen Helsinki Seminaarikirjoitelma HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

2 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos Institution Department Matemaattis-luonnontieteellinen Tekijä Författare Author Tiina-Kaisa Oikarinen Työn nimi Arbetets titel Title Tietojenkäsittelytieteen laitos Luihin perustuva 3D-animointi tietokonepeleissä Oppiaine Läroämne Subject Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages Seminaarikirjoitelma sivua Tiivistelmä Referat Abstract Tämä seminaarikirjoitus käsittelee hahmojen kolmiulotteista animointia tietokonepeleissä. Kirjoitelmassa tarkastellaan, miten animaatioita voidaan tallentaa, animoida ja piirtää ruudulle. Esitelty tekniikka perustuu luihin, jotka muodostavat luurankoja. Luurangon asentoa on mahdollista muuttaa kohdistamalla sen luihin erilaisia muunnoksia. Luuranko kiinnitetään olemassa olevan mallin objektiverkkoon, ja sen avulla malli saadaan liikutettua eri asentoihin. Tietokonepelillä on käytössään rajallisesti resursseja, joten animaatioiden tulee viedä mahdollisimman vähän tilaa ja suoritustehoja. ACM Computing Classication System (CCS): I.3.7 [Three-Dimensional Graphics and Realism] Avainsanat Nyckelord Keywords Tietokonepelit, 3D-animointi, luut Säilytyspaikka Förvaringsställe Where deposited Muita tietoja övriga uppgifter Additional information

3 ii Sisältö 1 Johdanto 1 2 Animaatioihin liittyviä käsitteitä Luurankohierarkia Transformaatio Suunnan esittäminen 3D-avaruudessa Mallit ja instanssit Animaatioiden tallentaminen x3-matriisin purku ja vakioiden käyttö Avainkuvat ja lineaarinen interpolointi Animointi Animaatioiden peräkkäistoisto Animaatioiden toistaminen Animaatioiden sulauttaminen Deformaatio Luiden siirto maailma-avaruuteen Mallin perusasennon poisto Verteksien ja niiden normaalien muuntaminen Yhteenveto 12 Lähteet 13

4 1 1 Johdanto Perinteinen piirretyistä elokuvista tuttu animaatio koostuu erillisistä kuvista, joita näytetään tarpeeksi nopeasti peräkkäin ja näin saadaan aikaan liikettä. Samalla periaatteella toimivat myös elokuvat, jotka koostuvat oikeasti vain pysäytyskuvista, joita näytetään nopeasti peräkkäin. Kun siirrytään 3D-maailmaan ja tietokonepeleihin perusperiaate säilyy samana. Oman lisänsä ja haasteen toteutukseen tuo kolmas ulottuvuus ja pelien käytössä olevat rajatut resurssit. Meillä on aluksi 3D-malli hahmosta, jonka mallintaja on luonut. Jotta saataisiin aikaan animoitu hahmo, tulee luoda jonkinlainen kontrollirakenne, jota muuntamalla saadaan aikaan erilaisia mallin asentoja. Useimmiten käytetään luurankoa, joka koostuu luista. Malli tulee kiinnittää jotenkin tähän luurankoon, niin että luurangon luiden vaihtaessa paikkaa myös malli seuraa mukana. Nyt meillä on keino liikuttaa mallia eri asentoihin. Luihin perustuvissa animaatiojärjestelmissä animaatio saadaan aikaan muuntamalla luurangon luita paikasta toiseen. Eri luihin kohdistuvat muunnokset saavat yhdessä aikaan mallin uuden asennon. Kun asentoja on tarpeeksi monta, malli liikkuu kolmiulotteisessa maailmassa eteenpäin. Tietokonepeleissä animoidaan usein paljon asioita. Animoitavista kohteista tärkein on yleensä pelaajan hahmo, jonka jälkeen oleellisimpia ovat muut keskeiset henkilöhahmot. Hahmojen lisäksi pelit sisältävät huomattavan paljon muita animoituja kohteita. Mitä todentuntuisempi peli pyrkii olemaan, sitä enemmän se sisältää animaatioita, sillä oikeassa maailmassa erityisesti luonnossa, kaikki on liikkeessä. Ongelmaksi muodostuu muistin vähyys. Animaatiot vievät paljon tilaa ja niitä joudutaan optimoimaan, jotta ne mahtuisivat niillä käytössä olevaan muistiin. Tietokonepelien tapauksessa joudutaankin tekemään kompromissi animaatioiden näyttävyyden ja kulutettujen resurssien välillä. Luvussa 2 käydään läpi 3D-animointiin liittyviä peruskäsitteitä. Luvussa 3 selvitetään, miten animaatiot saadaan tallennettua mahdollisimman pieneen tilaan. Luvussa 4 käsitellään animaatioiden toistamista ja sulauttamista toisiinsa. Luvussa 5 selitetään, kuinka objektiverkko deformoidaan, jotta malli voitaisiin piirtää näytölle. Luku 6 on yhteenveto. Kaikki luvut perustuvat lähteeseen [Rab05], erityisesti lukuun 5.2 Character Animation (sivut ).

5 2 2 Animaatioihin liittyviä käsitteitä Tässä kappaleessa käydään lyhyesti läpi animointiin liittyviä keskeisiä käsitteitä, joiden ymmärtäminen on tarpeen, jos haluaa ohjelmoida animaatiojärjestelmän. 2.1 Luurankohierarkia Luuranko koostuu luista. Luurangon luut muodostavat yleensä puuhierarkian, jossa jokainen luu roikkuu vanhemmastaan. Jokaisella luulla voi olla monta lapsiluuta. Hierarkia vastaa pitkälti tosimaailman ihmisluurangon rakennetta. Jokaiseen luuhun liittyy transformaatio, joka määrittää, kuinka luun liike eroaa sen vanhemman liikkeestä. Jos luulla ei ole vanhempaa, transformaatio määrittää sen liikkeen suhteessa johonkin muuhun määriteltyyn tilaan avaruudessa. Puuhierarkian ylin luu on juuriluu (root bone), ja sillä ei ole vanhempaa. Useimmilla luurangoilla on vain yksi juuriluu, joka on yleensä lantiolla, olkapäissä tai selän puolivälissä. Animaatiot muuttavat luiden transformaatiota ajan kuluessa ja saavat aikaan liikkeen. Luiden transformaation tallentaminen suhteessa niiden vanhempaan on tehokasta. Suurin osan ihmisen liikkeestä on etenemiskinematiikkaa (forward kinematics), jossa liike siirtyy luurankohierarkiassa vanhemmilta lapsille. Toisin sanoen isoin osa liikkeestä tehdään ensin suurten luiden siirroilla ja liikkeen hienomotorisemmista osista huolehtivat pienemmät luut. Tämä on helppo toteuttaa, kun luun liike on määritelty suhteessa vanhemman liikkeeseen. Tälle vastakkainen liikerata on käänteiskinematiikka, missä viimeisen luun paikka on kiinnitetty ja hierarkiassa ylemmät luut muuttavat paikkaansa, jotta viimeinen luu pysyisi paikallaan. Esimerkiksi sormenpään pitäminen samassa kohdassa, vaikka muu keho liikkuisi eri kohtaan. Käänteiskinematiikkaa käytetään animaatioiden korjaamiseen, kun halutaan varmistaa, että kosketus maailman muihin esineisiin säilyy vaikka animaatioita sulautetaan ja vääristetään. Luiden organisaatio ja niiden liitostavat toisiinsa mallissa muodostavat kokonaisuuden, jota kutsutaan kehikoksi (rig). Kehikko ei määrittele animaatiota, sillä se ei muutu ajan myötä, mutta se vaikuttaa siihen, mitkä liikkeet ovat mahdollisia ja miten ne voidaan saada aikaan. Hahmolla voi olla useita eri kehikoita erilaisia liikekokonaisuuksia varten, esimerkiksi eri kehikko kävelyyn, akrobatiaan ja naamanilmeisiin. Animaatiojärjestelmän olisi hyvä sallia luurankojen ja kehikoiden vaihtaminen, sillä tällöin ei rajoiteta animaattorin mahdollisuuksia animoida hahmoja monipuolisesti.

6 3 2.2 Transformaatio Animoinnissa puhutaan usein luun suunnasta (orientation), siirrosta (translation), skaalauksesta (scale) ja vääristymästä (shear). Tämä kokoelma ominaisuuksia muodostaa luun transformaation. Transformaatio on useimmiten lineaarinen muunnos, eli viiva, joka on suora, on myös suora muunnoksen jälkeen. Transformaatio voidaan esittää 4x3-matriisina ja se kirjoitetaan usein leveyssuunnassa, eli siinä on 4 saraketta ja 3 riviä. Vasemmalla sijaitseva 3x3-osion kolme saraketta sisältävät kierron, skaalauksen ja vääristymän. Matriisin neljäs sarake sisältää siirron. Kuvassa 1 on esimerkkimatriisi, josta käy ilmi transformaation eri osien sijainti matriisissa. kierto skaalaus vaaristyma siirto R 11 R 12 R 13 T x R 21 R 22 R 23 T y R 31 R 32 R 33 T z Kuva 1: Transformaatio 4x3-matriisina Animaatioita manipuloitaessa matriisi jaetaan usein neljään osaan. Kukin sarake muodostaa yhden osan ja näin saadaan erotettua tieto luun kierrosta, skaalauksesta, vääristymästä ja siirrosta. Tämä tehdään, koska kullakin muunnoksella on oma merkityksensä, eikä kaikkia muunnoksia tarvita normaalisti kaikille luille. Esimerkiksi ihmistä muistuttavan luurangon luut ovat kiinni vanhempiluussa nivelellä, joka sallii niiden pyörimisen. Niiden siirto on siis kiinnitetty (vanhempiluun nivelen kohta avaruudessa), mutta niitä voidaan kiertää. Koska luut ovat kovaa ainesta, ne eivät voi skaalautua tai vääristyä. Luun sijainti voidaan siis tallentaa kehikkoon vakiona, skaalaus on aina yksi ja vääristymää ei ole. Ainoastaan luun suunta pitää tallentaa, sillä vain se muuttuu ajan myötä, kun hahmoa animoidaan. Animaatiojärjestelmän muistin käyttö ja suoritusnopeus kannattaa optimoida tilanteeseen, jossa luuta kierretään tai sekä kierretään että siirretään.

7 4 2.3 Suunnan esittäminen 3D-avaruudessa Suunta 3D-avaruudessa voidaan esittää ainakin kolmella eri tavalla: Eulerin kulmilla, 3x3-matriisilla tai nelikolla. Eulerin kulmat (Euler Angles) ovat kolme kulmaa, joiden avulla voidaan kuvata mikä tahansa orientaatio 3-ulotteisessa avaruudessa. Kukin kulma kuvaa kierron tietyn avaruuden akselin ympäri. Kierrot suoritetaan peräkkäin ja näin saadaan aikaan haluttu suunnan muutos. Eulerin kulmille pitää kiinnittää akselien järjestys, jotta tiedetään, minkä akselin ympäri kulmat kierretään. Myös kierron suunta pitää kiinnittää. Koska pysyvää konventiota ei ole, eri järjestelmät käyttävät eri järjestystä ja eivät ole siksi yhteensopivia. Suurempi ongelma on, että monet näennäisesti erilaiset kolmen kulman yhdistelmät kuvaavat saman kierron. Tämä aiheuttaa ongelmia, kun animoinnissa interpoloidaan avainasentojen välillä. 3x3-matriisit ovat yksinkertainen tapa kuvata kiertoja. Matriiseja voi käyttää suoraan laskutoimituksissa. Kaksi matriisia, jotka kuvaavat lähekkäisiä orientaatioita, sisältävät myös samankaltaisia numeroita. Tästä johtuen kahden matriisin välinen interpolointi tuottaa hyvän lopputuloksen. Matriisin puutteena on sen viemä muistitila, joka on kolminkertainen Eulerin kulmiin verrattuna. Toinen ongelma tulee siitä, että 3x3-matriisilla voi esittää myös kierron, skaalauksen ja vääristyksen yhdistelmiä, kuten nähtiin aiemmin. Interpoloitaessa kahden matriisin välillä ei saada aikaan puhdasta kiertoa vaan mukaan tulee skaalausta ja vääristymistä, joiden poistaminen on suhteellisen kallis operaatio. Paras tapa esittää kierto on nelikot (quaternions). Nelikot koostuvat neljästä komponentista (x,y,z,w). Näistä (x,y,z) määrittää kierron akselin ja vektorin (x,y,z) pituus määrittää sinin puolikkaasta kierrettävästä kulmasta. Arvo w määrittää cosinin puolikkaasta kierrettävästä kulmasta. Näin saadaan erotettua keskenään sellaiset kulmat, joiden puolitetun kulman sini on sama, mutta puolitetun kulman cosini eri. Käytännössä käytetään vain yksikköpituisia nelikoita. Jos kaksi nelikkoa sisältää lähekkäisiä numeroita, kuvaavat ne samankaltaisen suunnan. Tästä johtuen niiden interpolointi toimii hyvin. Nelikoita käytetäänkin melkein aina, kun halutaan esittää suuntaa animoitaessa, sillä ne vievät vähän tilaa ja niillä interpolointi on tehokasta. 2.4 Mallit ja instanssit Malli on kuvaus tietystä pelimaailman objektista ja se koostuu objektiverkosta, joka on kokoelma nurkkapisteitä, kolmioita ja tekstuureita. Olennaisin osa hahmoa ani-

8 5 maatiojärjestelmän näkökulmasta on mallin sisältämä luuranko. Yhtä mallia voidaan käyttää useita kertoja samassa kohtauksessa. Esimerkiksi lokkiparven linnut käyttävät kaikki samaa mallia. Kustakin lokista tallennetaan kuitenkin lokkikohtaista tietoa kuten sen sijainti ja suunta, animaatioiden tila ja sen luiden tämänhetkinen asento. Tämän lisäksi kuhunkin lokkiin liittyy pelimekaanista tietoa, kuten miten nälkä sillä on. Lokkikohtainen tieto tallennetaan sen instanssiin, joka sisältää viittauksen instanssin käyttämään malliin. Animoitaessa tiettya instanssia täytyy tallentaa tieto siitä, mikä animaatio on kyseessä, sen alkamisaika, sen nopeus ynnä muuta sellaista. Animaatio saatetaan haluta myös pysäyttää tai sen nopeutta muuttaa. Näitä tietoja ei voida tallentaa itse animaatioon, sillä se on kaikille lokeille yhteinen. Animaatioita ei myöskään haluta kopioida, sillä ne vievät paljon tilaa. Tarvitaan jonkinlainen animaatiokonrollirakenne, joka yhdistää kohtauksen instansseihin tietyn animaation ja tallentaa tietoja animaatiosta, kuten sen nopeuden ja alkamisajan, ja joka voidaan käskeä pysähtymään (stop tai pause) tai muuttamaan suoritusnopeuttaan. Tietorakenteena käytetään kahta linkitettyä listaa, toisessa listassa ovat instanssit ja toisessa animaatiot. 3 Animaatioiden tallentaminen Animaatioiden tallentamisen suurin haaste on saada ne mahtumaan mahdollisimman pieneen tilaan. Esimerkiksi animaatiojärjestelmälle annettu muistitila on Playstation 2:ssa noin 8 megatavun luokkaa. Esimerkkinä luvussa toimii animaatiojärjestelmä, jossa jokaisesta luusta tallennetaan aluksi 4x3-matriisi, kutakin animaation kuvaa kohden kertaalleen. Näin animaation suorittaminen on helppoa. Oletetaan, että pelin animaatioissa on 30 kuvaa per sekunti, 5 päähahmoa, joilla kullakin 100 animaatiota, 15 sivuhahmoa, joilla kullakin 20 animaatiota, ja jokainen animaatio kestää keskimäärin 4 sekuntia. Kaikissa hahmoissa on 50 luuta. Kaiken kaikkiaan animaatiot veisivät tilaa 220 megatavua. Tämä on mahdoton tilavaatimus, sillä se ei ole lähelläkään sitä muistimäärää mitä animaatioille on tarjolla nykyisissä pelikonsoleissa. Animaatiojärjestelmän ohjelmoijalla ei ole valtaa vähentää hahmoja, animaatioita tai luiden määrää. Siksi ainut keino onkin pyrkiä optimoimaan tallennettavien animaatioiden viemä tila mahdollisimman pieneksi.

9 x3-matriisin purku ja vakioiden käyttö Jokaisesta luusta tulisi tallentaa vain oleellinen tieto. Tavallinen 4x3-matriisi kuvaa neljä toisistaan erillistä muunnosta: siirron, orientaation, skaalauksen ja vääristymän. Kuten aiemmin huomattiin, useimmat luut voivat vain vaihtaa orientaatiota. Poikkeuksena ovat luut, jotka kuvaavat lihaksia, ne osaavat myös vääristyä. On myös joitain animaatioita, jotka eivät liikuta kaikkia luita, esimerkiksi istuallaan oleva hahmo liikuttaa yleensä vain yläruumiinsa luita. Paikallaan pysyvät luut voidaan tallentaa vakioina, eli niiden sijainti tallennetaan vain kerran, koska se on kaikissa animaation kuvissa sama. Optimoidaan animaation viemä tila jakamalla jokaisen luun 4x3-matriisi neljään osaan ja selvittämällä, mitkä osat pysyvät samana tai ovat vastaavat kuin vanhempiluulla. Vakiot tallennetaan kerran animaatiota kohti ja osat, joiden tieto on sama kuin vanhempiluulla, jätetään tallentamatta. Nyt siirto, skaalaus ja vääristymä saadaan tallennettua kukin kolmella arvolla ja orientaatio tallennetaan nelikkona, eli se vie neljä arvoa. Tämä säästää huomattavasti muistia. Kääntöpuolena prosessorille tulee enemmän laskettavaa, kun se etsii animaation, lukee sen sisältämän datan, täydentää animaation sisältämän datan vakioilla ja vanhempiluun osista saatavilla tiedoilla ja koostaa sitten näistä kaikista kutakin luuta kohden 4x3-matriisin. Nähty vaiva on kuitenkin kannattavaa, sillä yhden kuvan yhden luun tallentamiseen käytetty muistitila saadaan noin puolitettua, kun tarpeettomat muunnokset jäävät pois. Yhden luun viemä tila per kuva on nyt 24 bittiä, kun se aiemmin oli 48 bittiä. Pelin animaatiot vievät nyt 110 megatavua tilaa. 3.2 Avainkuvat ja lineaarinen interpolointi Seuraava tapa rajoittaa animaation viemää tilaa on vähentää käytettäviä kuvia per sekunti. Tällöin yksi animaatio vie vähemmän tilaa, sillä siinä on vähemmän tallennettavia kuvia ja siten vähemmän yhden luun eri asentoja. Otetaan käyttöön tekniikka, jotka kutsutaan avainkuviksi ja joka on lähtöisin käsinpiirretyistä animaatioista. Ideana on, että pääartisti piirtää vain tärkeimmät avainkuvat hahmon animaatioista. Yleensä kustakin hahmon liikkeestä piirretään staattiset asennot alusta, keskikohdasta ja lopusta. Vaikeammissa tai epätavallisissa liikkeissä käytetään useampia avainkuvia, jotta päästäisiin haluttuun lopputulokseen. Avainkuvien väliin tarvittavat vähemmän tärkeät kuvat piirtää useampi eri ihminen. Koska avainkuvat määräävät pitkälti liikkeen päälinjat, on välikuvien piirto suhteellisen helppoa.

10 7 Tietokonepeleissä sen sijaan, että tallentaisimme animaatiosta esimerkiksi 30 kuvaa, eli asentoa per sekunti, tallennamme vähemmän asentoja ja interpoloimme näiden ennalta luotujen avainasentojen väliset asennot. Animaattorit luovat nämä avainasennot valmiiksi, ja loput interpoloidaan pelin ollessa käynnissä. Koska orientaatio tallennettiin nelikkona, on sen interpolointi helppoa. Väliasennot saadaan nyt lineaarisella interpoloinnilla. Kahden peräkkäisen avainkuvan välissä oleva kuva, joka on ajassa 25 prosenttia ensimmäisestä avainkuvasta, saadaan seuraavasti. Ensimmäisen avainkuvan arvot kerrotaan luvulla 0,75 ja toisen avainkuvan arvot luvulla 0,25; sitten näistä saadut arvot lasketaan yhteen. Nyt meillä on tiedossa välikuvan arvot eli uusi asento, joka saatiin laskemalla. Siirto, skaalaus ja vääristys interpoloituvat suoraan hyvin. Orientaation interpoloinnissa tulee nelikot ensin normalisoida eli niiden pituudeksi pitää saada käytetyn yksikön pituus, useimmiten 1. Interpoloinnin jälkeen nelikot pitää uudelleennormalisoida, sillä muuten niihin jää skaalaja vääristymävirheitä. Tämä onnistuu jakamalla nelikon jokainen luku nelikon pituudella. Avainkuvien käytössä on myös omat haasteensa. Jos kyseessä on tarkka animaatio, sen yksityiskohtia menetetään. Ei ole myöskään yhtä sopivaa avainkuvien tiheyttä, vaan niiden määrä on animaatiokohtainen. Esimerkiksi helikopterin roottorin liike vaatii huomattavasti enemmän avainkuvia kuin nukkuvan ihmisen animointi, missä muutama avainkuva riittää, sillä pääasiallinen liike on ihmisen rintakehän kohoilu. Avainkuvien tiheyden määrittämisen lisäksi tulee olla tarkkana, kun valitsee itse avainkuvia. Jos nukkuvan ihmisen rintakehän animaatiosta valitaan sellaiset kuvat, joissa rintakehä on juuri laskeutumisen puolivälissä ja toisessa kohoamisen puolivälissä, ei saada aikaan mitään liikettä, sillä kuvat ovat käytännössä samat. Avainkuvia käyttämällä ei siis voida loputtomasti vähentää animaation käyttämää tilaa, sillä vastaan tulee raja, jonka jälkeen animaatio ei enää näytä siltä, mikä oli tarkoitus. Avainkuvien määrä per animaatio onkin animaatiokohtaista. Jotkut animaatiot tarvitsevat monia avainkuvia eivätkä siedä interpolointia, siinä missä toisissa pystytään hyödyntämään paljon interpolointia ja näin selvitään paljon vähemmällä määrällä avainkuvia. Keskiarvo tietokonepelien animaatioissa käytettäville avainkuville on noin 10 per sekunti. Muistia kuluu siis kolmannes siitä mitä ennen avainkuvien käyttöönottoa meni, kun jokaista animaatiota varten tallennettiin 30 kuvaa per sekunti (110 KB/3 = 36,7 KB). Animaatiot vievät nyt noin 37 megatavua tilaa. Lineaarinen interpolointi ei sovellu kaarevia liikeratoja sisältävien animaatioiden välikuvien luomiseen, sillä se olettaa, että muutos tapahtuu suoraa linjaa pitkin. Näin

11 8 ei kuitenkaan ole esimerkiksi pomppivan pallon kohdalla. Ongelma korjaantuu, kun interpoloidaan käyrää pitkin; suorat voidaan korvata esimerkiksi Bezierin käyrillä. Tämä saa useimmiten aikaan luonnollisemman lopputuloksen, sillä useimmat liikeradat muodostavat käyriä. Kustakin Bezierin käyrästä pitää tallentaa kaksi tai kolme kontrollipistettä siinä missä suoran yhteen osaan riitti yksi, sen päätepiste. Käyrästä tallennetaan myös pieni tietorakenne. Käyriä kannattaa kuitenkin käyttää, sillä niitä tarvitaan noin kymmenesosa verrattuna siihen, kuinka monta erillistä suoraa lineaarisessa interpoloinnissa tarvittaisiin saman liikkeen aikaansaamiseen. Käyriä käytettäessä osioita tarvitaan vähemmän, sillä kaarevaliikerata voidaan arvioida kaarevilla osilla paremmin kuin suorilla osilla. Suorien osioiden tulee olla melko lyhyitä, jotta ne yhdistettyinä toisiinsa näyttäisivät muodostavan kaaren. Käyrät osat kaartuvat jo valmiiksi ja ne saadaan liittymään toisiinsa sulavasti, jolloin vähempi määrä osioita riittää saamaan aikaan hyvännäköisen kaaren. Koska käyriä käyttämällä selvitään huomattavasti vähemmillä osioilla, animaation käyttämä muistitila vähenee nyt 37 megatavusta 10 megatavuun. 4 Animointi Animaatioita voidaan toistaa peräkkäin, toistaa tiettyinä ajanhetkinä ja luoda niistä sulauttamalla uusia animaatioita. Tässä kappaleessa käsitellään lyhyesti, miten animointi tapahtuu animaatiojärjestelmässä. 4.1 Animaatioiden peräkkäistoisto Monet animaatiot toistetaan useita kertoja peräkkäin (looping). Animaation toistokertojen vaihtumiskohdassa ei saa tulla äkillisiä muutoksia hahmon sijainnissa tai liikkeen nopeudessa. Animaattorit osaavat huolehtia tästä tehdessään animaatioita, mutta jatkuvuus tulee ottaa myös huomioon, kun ohjelmoidaan animaatiojärjestelmää. Käytettäesssä transformaatioita muuntamaan luurangon asentoa tulee varmistua siitä, ettei muunnos riko jatkuvuutta. Jatkuvuus tulee ottaa huomioon myös silloin, kun toistetaan peräkkäin useita eri animaatioita. Erillisten animaatioiden toistonopeuden tulisi olla sama, sillä se helpottaa liikkeen nopeuden säilyttämistä samana.

12 9 4.2 Animaatioiden toistaminen Kun halutaan toistaa (sample) animaatio, valitaan animaatiolle lokaaliaika (local time). Se alkaa tyypillisesti nollasta, kun animaation toisto alkaa, ja loppuu, kun alkuperäisellä nopeudella toistettu animaatio loppuu. Esimerkiksi viiden sekunnin pituisen animaation lokaaliaika alkaa nollasta (0.0) ja kuluu, kunnes saavuttaa 5 sekuntia (5.0). Yksikkönä käytetään yleensä sekuntia. Toinen pelien käyttämä aika on globaaliaika (global time), mikä kuvaa pelimaailman sisäistä kuluvaa aikaa. Animaation lokaaliaika voi kulkea eri tahtiin globaalin kanssa, jos sitä toistetaan nopeampaa tai hitaampaa kuin alkuperäisellä nopeudelle, joka on kiinnitetty animaation tekovaiheessa. Se voi myös kulkea taaksepäin, jos animaatio halutaan toistaa vastakkaisessa järjestyksessä. Yleensä pelin sisäiset luonnonvoimat kuten painovoima kulkevat globaaliajan kanssa samaa tahtia, eikä niiden nopeuteen voi vaikuttaa. Lisäksi on vielä olemassa tosimaailman aika (real-world time), jonka käyttäjä näkee. Globaaliaika ja tosimaailman aika kulkevat samaa vauhtia, kun peli on käynnissä, paitsi silloin kun pelaaja pysäyttää (pause) pelin tai katsoo jotain pelin tapahtumaa hidastuksena. Animaatiojärjestelmien ei tarvitse välittää tosimaailman ajasta, mutta on hyvä muistaa, ettei pelin globaaliaika ole sama asia todellisen ajan kanssa. Animaation nopeus on kuluneen globaalin ajan suhde kuluneeseen lokaaliaikaan. Jos nopeus on yksi, kulkevat ajat samaa tahtia ja animaatio toistuu alkuperäisellä nopeudella. Jos nopeus on 0,5 animaatio toistetaan puolella globaalin ajan nopeudesta, eli animaatiosta toistetaan puoli sekuntia globaalin ajan kulkiessa yhden sekunnin ja näin ollen näytöllä näkyvä animaatio hidastuu. Pelissä on vain yksi globaaliaika, joka vastaa pelissä tähän hetkeen mennessä kulunutta aikaa. Yleensä animaatioita toistetaan pelin globaaliajassa, joka normaalisti vastaa piirrettävänä olevaa ajanhetkeä. Joskus on kuitenkin tarpeen pystyä toistamaan animaatioita menneisyydessä tai tulevaisuudessa ilman, että pelin globaaliaika muuttuu minnekään. Animaatiojärjestelmän pitäisi siis pystyä käsittelemään useaa globaaliaikaa samanaikaisesti (scrubbing). Animaatioita toistetaan etukäteen, jotta pystyttäisiin ennustamaan animaation liikkeen suuntaa. Esimerkiksi minne hahmon askeleet johtavat, mihin sen aloittama hyppy suuntautuu tai mihin kohtaan hahmo kurkottaa ottamaan jotain esinettä. Oleellista on varmistaa, että animaation toistamiseen käytetään koodia, jossa tuetaan tehokasta pääsyä animaation yksittäiseen kuvaan, vaikka se olisi animaation keskellä. Animaatioiden tallentamiseen ei kannata käyttää sellaisia tekniikoita, joissa joudutaan pahimmillaan toistamaan animaatioa alusta saakka haluttuun kohtaan, jotta yksittäisen kuvan arvot selviäi-

13 sivät (esimerkiksi kaikkien kuvien tallentaminen delta-arvoina, joka kertoo, miten kuva on muuttunut edellisestä kuvasta) Animaatioiden sulauttaminen Hyvän animaatiojärjestelmän tulee osata toistaa useita animaatioita samanaikaisesti yhdessä hahmossa ja sulauttaa (blend) ne saumattomasti toisiinsa niin, että ne muodostavat yhden animaation. Yksinkertaisin tapa on käyttää lineaarista interpolointia (lerp) kahden animaation transformaatioiden yhdistämiseen. Transformaatio voi olla, joko 3x3-matriisi tai nelikko. Kahden siirron, skaalauksen ja vääristymän yhdistäminen on helppoa. Kahden rotaation yhdistäminen on työläämpää, sillä se vaatii transformaatioiden ja tuloksen normalisointia. Kaksi normalisoinneista voidaan kuitenkin korvata kevyemmällä algoritmilla, joka käyttää arvioituja arvoja sen sijaan, että laskisi neliöjuurten tarkkoja arvoja. Useampia animaatiota voidaan sulauttaa toisiinsa tekniikalla, jossa kullekin animaatiolle annetaan painoarvo (multiway blending). Sulautettavat animaatiot lasketaan yhteen, kukin kerrottuna omalla painoarvollaan, ja saatu tulos jaetaan kaikkien animaatioiden painoarvojen summalla. Usein halutaan animoida vain osa luurangon luista. Esimerkiksi vilkuttamisessa riittää animoida vain vilkuttava käsi. Luumaski (bone mask) on lista numeroita, jotka antavat kullekin luulle numeroarvon nollasta ykköseen. Numeroarvot kertovat, kuinka paljon animaatio vaikuttaa kyseiseen luuhun (0= ei vaikutusta, 1=täysi vaikutus). Parhaaseen lopputulokseen päästään, kun animaattori antaa luiden painoarvot suoraan. Yleensä niiden vaikutusta ei voi nähdä suoraan animointiohjelmassa, minkä vuoksi niitä joudutaan testamaan pyörittämällä animaatioita pelissä ja tutkimalla, milloin aikaansaadaan haluttu lopputulos. Luumaski yhdistetään animaatioon ja sitä käytetään, kun animaatioita sulautetaan keskenään. Luumaskin arvot kerrotaan animaation painoarvolla. Saatuja uusia luumaskin arvoja käytetään sulautuksessa. Animaation vaikutus siis on eri luissa eri suuri. Luumaskien avulla voidaan määrittää osia luurangoista, joihin vaikuttaa vain tietty animaatio ja sitten sulauttaa näiden animaatioiden liittymäkohtien luita keskenään niin, että aikaansaadaan sulava kokonainen animaatio.

14 11 5 Deformaatio Luurankoon kohdistuvat transformaatiot tietyllä ajanhetkellä muodostavat asennon (pose). Animointi on prosessi, missä luurangon asentoa muutetaan ajan kuluessa. Koska asento on lista erilaisia transformaatioista, sitä ei voi piirtää suoraan ruudulle. Deformaatio on prosessi, missä otetaan yksi animaation tuottama asento ja siirretään sen perusteella objektiverkon (mesh) nurkkapisteet asennon kuvaamaan kohtaan, jolloin malli on valmis piirrettäväksi ruudulle. Tyypillisesti animaatiojärjestelmä välittää vain animaatioiden toistamisesta ja sulauttamisesta. Renderöintijärjestelmä taas on kiinnostunut vain yksittäisistä asennoista ja käyttää niitä deformoinnissa. Animointi ja renderöinti ovat siis toisistaan erillisiä. Tämä on hyödyllistä, sillä renderöinti voidaan suorittaa eri nopeudella kuin muu peli. Useimmat pelimoottorit tekevät kaiken animointiin liittyvän laskennan prosessorissa ja antavat sitten asennot graikkalaitteistolle, joka suorittaa mallin deformaation ja renderöinnin ruudulle. 5.1 Luiden siirto maailma-avaruuteen Luuranko on alunperin lokaalissa asennossa (local pose), missä asennon kuvaavien luiden transformaatiot on tallennettu suhteessa niiden vanhempiin. Luuranko pitää muuttaa maailma-asentoon (world pose), missä transformaatiot kertovat luun paikan suhteessa maailma-avaruuteen. Tämä on yksinkertainen prosessi. Muuntaminen aloitetaan juuriluusta. Sen nykyinen transformaatio kerrotaan transformaatiolla, joka ilmoittaa animoitavan instanssin sijainnin ja suunnan pelimaailmassa. Nyt juuriluun transformaatio on muunnettu maailma-avaruuteen. Seuraavaksi muunnetaan kaikki juuriluun lapset kertomalla niiden transformaatiot äsken lasketulla juuriluun maailmatransformaatiolla. Näin jatketaan rekursiivisesti edeten puussa alaspäin, kunnes kaikkien luiden transformaatiot on muunnettu. Maailmatransformaatio tulee laskea ensin vanhempiluissa ja vasta sitten lapsissa. Tämän varmistaminen onnistuu tallentamalla luiden transformaatiot (alkuperäiset ja muunnetut) taulukkoon, jossa vanhempiluut tallennetaan aina ennen lapsiluita. Näin luut voidaan käsitellä lineaarisesti. Maailma-asentoa käytetään useimmissa fysiikkasimulaatioissa ja törmäystarkistuksissa.

15 Mallin perusasennon poisto Nyt kaikki luut ovat maailma-avaruudessa. Transformaatioita ei voida suoraan käyttää muuttamaan mallin objektiverkkoa, sillä se on perusasennossa. Objektiverkko pitääkin muuntaa ensin 'tyhjään asentoon'. Perusasento saadan nollattua ottamalla sen luiden transformaatioiden käänteistransformaatiot ja kertomalla maailmaasennossa olevan luurangon vastaavien luiden muunnokset niillä. Tästä syntyviä transformaatioita voidaan käyttää objektiverkon muuntamiseen. 5.3 Verteksien ja niiden normaalien muuntaminen Seuraavaksi siirretään objektiverkon verteksejä. Jokaiseen objektiverkon verteksiin vaikuttaa tietty määrä luita. Yleensä vaikuttavien luiden maksimimäärä rajataan animaatiojärjestelmissä, käytetyin raja on neljä luuta. Mekaanisissa objekteissa riittää yksi luu per verteksi, sillä kaikki osat ovat kovia. Ihmisen vertekseihin tarvitaan taas vähintään 3, sillä nivuset, olkapäät ja kasvot eivät muuten animoidu nätisti. Jokaiselle vaikuttavalla luulle määrätään myös arvo, joka kertoo, kuinka paljon luu vaikuttaa deformoitavaan verteksiin. Näitä arvoja käytetään verteksin sijainnin laskennassa. Lopuksi muunnetaan vielä vertekseihin liittyvät vektorit, joita käytetään varjostuksiin. Ilman vektoreiden muuntamista hahmon varjostus menisi todennäköisesti väärin. Objektiverkko on nyt muunnettu uuteen asentoon, ja se voidaan piirtää ruudulle. Sama prosessi toistetaan jokaista animaation kuvaa kohti. 6 Yhteenveto Tietokonepeleissä käytetään paljon animaatioita, sillä ne saavat pelin näyttämään paremmalta. Animaatioiden viemä tila pitää saada mahdollisimman pieneksi, jotta pelin animaatiot mahtuisivat niille varattuun muistitilaan. Tässä onnistutaan optimoimalla yhden luun kuvaamiseen kuluvaa muistitilaa, vähentämällä animaatiosta tallennettujen kuvien määrää ja interpoloimalla loput kuvat näiden avainkuvien avulla. Animaatioiden toistossa tarvitaan omia tekniikoita, joiden avulla saadaan toistettua monia eri animaatioita peräkkäin ja sulautettua useista eri animaatioista uusia animaatioita. Animaatioiden uusiokäyttö sulauttamalla on kannattavaa, koska animaatioiden tekeminen on hidasta ja niiden tallentaminen vie tilaa.

16 13 Hahmoon liittyy aina tietty luuranko ja animaatioita. Näiden animaatioiden vaikutus hahmon objektiverkkoon voidaan laskea ja ruudulle piirrettävä kuva onkin hahmon objektiverkko, jota on muokattu luurangon asennon perusteella. Koska kyse on animaatiosta kolmiulotteisessa maailmassa hahmo liikkuu oikeasti. Pelilogiikan ja hahmon animaation onkin hyvä olla yhteisymmärryksessä siitä, missä kohtaa pelimaailmaa hahmo on. Lähteet Rab05 Rabin, S., Introduction to Game Development. Charles River Media, 2005.

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

3D animaatio: liikekäyrät ja interpolointi. Tommi Tykkälä 3D animaatio: liikekäyrät ja interpolointi Tommi Tykkälä Läpivienti Keyframe-animaatio Lineaarisesta interpoloinnista TCB-splineihin Bezier-käyrät Rotaatioiden interpolointi Kameran animointi Skenegraafit

Lisätiedot

Harjoitus Bones ja Skin

Harjoitus Bones ja Skin LIITE 3 1(6) Harjoitus Bones ja Skin Harjoituksessa käsiteltävät asiat: Yksinkertaisen jalan luominen sylinteristä Luurangon luominen ja sen tekeminen toimivaksi raajaksi Luurangon yhdistäminen jalka-objektiin

Lisätiedot

Selainpelien pelimoottorit

Selainpelien pelimoottorit Selainpelien pelimoottorit Teemu Salminen Helsinki 28.10.2017 Seminaaritutkielma Helsingin yliopisto Tietojenkäsittelytiede ! 1 HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta

Lisätiedot

arvostelija OSDA ja UDDI palveluhakemistoina.

arvostelija OSDA ja UDDI palveluhakemistoina. Hyväksymispäivä Arvosana arvostelija OSDA ja UDDI palveluhakemistoina. HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta/Osasto Fakultet/Sektion Faculty/Section Laitos Institution

Lisätiedot

Koht dialogia? Organisaation toimintaympäristön teemojen hallinta dynaamisessa julkisuudessa tarkastelussa toiminta sosiaalisessa mediassa

Koht dialogia? Organisaation toimintaympäristön teemojen hallinta dynaamisessa julkisuudessa tarkastelussa toiminta sosiaalisessa mediassa Kohtdialogia? Organisaationtoimintaympäristönteemojenhallinta dynaamisessajulkisuudessatarkastelussatoiminta sosiaalisessamediassa SatuMariaPusa Helsinginyliopisto Valtiotieteellinentiedekunta Sosiaalitieteidenlaitos

Lisätiedot

Tik-111.5450 Tietokoneanimaatio

Tik-111.5450 Tietokoneanimaatio Tik-111.5450 Tietokoneanimaatio 3. Asennon (pyörähdysliikkeen) esittäminen ja interpolointi 3.10.05 - Tassu Animaatio 2005 - luento 3 1 Sisältö matriisiesitys, matriisin komponenttivektorien merkitys perusakselien

Lisätiedot

Luento 3: 3D katselu. Sisältö

Luento 3: 3D katselu. Sisältö Tietokonegrafiikan perusteet T-.43 3 op Luento 3: 3D katselu Lauri Savioja Janne Kontkanen /27 3D katselu / Sisältö Kertaus: koordinaattimuunnokset ja homogeeniset koordinaatit Näkymänmuodostus Kameran

Lisätiedot

Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages

Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos Institution Department Tekijä Författare Author Työn nimi Arbetets titel Title Oppiaine Läroämne Subject Työn laji Arbetets art Level Aika Datum Month

Lisätiedot

Luku 8. Aluekyselyt. 8.1 Summataulukko

Luku 8. Aluekyselyt. 8.1 Summataulukko Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa

Lisätiedot

T-111.450 Tietokoneanimaatio ja mallintaminen. Lauri Savioja Teknillinen korkeakoulu Tietoliikenneohjelmistojen ja multimedian laboratorio 02/02

T-111.450 Tietokoneanimaatio ja mallintaminen. Lauri Savioja Teknillinen korkeakoulu Tietoliikenneohjelmistojen ja multimedian laboratorio 02/02 T-111.450 Tietokoneanimaatio ja mallintaminen Lauri Savioja Teknillinen korkeakoulu Tietoliikenneohjelmistojen ja multimedian laboratorio 02/02 Animaatio / 1 2D Avainkuvatekniikka Sisältö Kerronnallisia

Lisätiedot

Videon tallentaminen Virtual Mapista

Videon tallentaminen Virtual Mapista Videon tallentaminen Virtual Mapista Kamera-ajon tekeminen Karkean kamera ajon teko onnistuu nopeammin Katseluohjelmassa (Navigointi > Näkymät > Tallenna polku). Liikeradan ja nopeuden tarkka hallinta

Lisätiedot

Demo 1: Simplex-menetelmä

Demo 1: Simplex-menetelmä MS-C2105 Optimoinnin perusteet Malliratkaisut 3 Ehtamo Demo 1: Simplex-menetelmä Muodosta lineaarisen tehtävän standardimuoto ja ratkaise tehtävä taulukkomuotoisella Simplex-algoritmilla. max 5x 1 + 4x

Lisätiedot

Luku 7: Animaatio. Eksplisiittiset menetelmät Implisiittiset menetelmät Suora ja käänteinen kinematiikka Motion capture Elokuvamaisuus

Luku 7: Animaatio. Eksplisiittiset menetelmät Implisiittiset menetelmät Suora ja käänteinen kinematiikka Motion capture Elokuvamaisuus Eksplisiittiset menetelmät Implisiittiset menetelmät Suora ja käänteinen kinematiikka Motion capture Elokuvamaisuus Animaatio Peleissä tärkeimmät animoitavat kohteet ovat pelihahmot, etenkin avatar Animointi

Lisätiedot

Aika/Datum Month and year Kesäkuu 2012

Aika/Datum Month and year Kesäkuu 2012 Tiedekunta/Osasto Fakultet/Sektion Faculty Laitos/Institution Department Filosofian, historian, kulttuurin ja taiteiden tutkimuksen laitos Humanistinen tiedekunta Tekijä/Författare Author Veera Lahtinen

Lisätiedot

LAUSEKKEET JA NIIDEN MUUNTAMINEN

LAUSEKKEET JA NIIDEN MUUNTAMINEN LAUSEKKEET JA NIIDEN MUUNTAMINEN 1 LUKULAUSEKKEITA Ratkaise seuraava tehtävä: Retkeilijät ajoivat kahden tunnin ajan polkupyörällä maantietä pitkin 16 km/h nopeudella, ja sitten vielä kävelivät metsäpolkua

Lisätiedot

Luku 6: Grafiikka. 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat

Luku 6: Grafiikka. 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat 2D-grafiikka 3D-liukuhihna Epäsuora valaistus Laskostuminen Mobiililaitteet Sisätilat Ulkotilat 2D-piirto 2-ulotteisen grafiikan piirto perustuu yleensä valmiiden kuvien kopioimiseen näyttömuistiin (blitting)

Lisätiedot

Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan

Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan Pro gradu -tutkielma 31.1.2012 Helsingin yliopisto Humanistinen tiedekunta Filosofian, historian,

Lisätiedot

Matematiikan tukikurssi

Matematiikan tukikurssi Matematiikan tukikurssi Kurssikerta 8 1 Suunnattu derivaatta Aluksi tarkastelemme vektoreita, koska ymmärrys vektoreista helpottaa alla olevien asioiden omaksumista. Kun liikutaan tasossa eli avaruudessa

Lisätiedot

Animaation tuotanto. Mika Timonen

Animaation tuotanto. Mika Timonen Animaation tuotanto Mika Timonen Sisällys Johdanto Animoijat - Odotukset ja vastuualueet Hahmoanimoinnin tuotantoketju Suunnittelu Pintakerroksen luonti Luurangon luonti Pintakerroksen yhdistäminen luurankoon

Lisätiedot

Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua.

Kohdissa 2 ja 3 jos lukujen valintaan on useita vaihtoehtoja, valitaan sellaiset luvut, jotka ovat mahdollisimman lähellä listan alkua. A Lista Aikaraja: 1 s Uolevi sai käsiinsä listan kokonaislukuja. Hän päätti laskea listan luvuista yhden luvun käyttäen seuraavaa algoritmia: 1. Jos listalla on vain yksi luku, pysäytä algoritmi. 2. Jos

Lisätiedot

Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA. Karoliina Ljungberg

Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA. Karoliina Ljungberg Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA Karoliina Ljungberg 16.04.2009 Ohjaajat: Ari Venäläinen, Jouni Räisänen

Lisätiedot

on hidastuvaa. Hidastuvuus eli negatiivinen kiihtyvyys saadaan laskevan suoran kulmakertoimesta, joka on siis

on hidastuvaa. Hidastuvuus eli negatiivinen kiihtyvyys saadaan laskevan suoran kulmakertoimesta, joka on siis Fys1, moniste 2 Vastauksia Tehtävä 1 N ewtonin ensimmäisen lain mukaan pallo jatkaa suoraviivaista liikettä kun kourun siihen kohdistama tukivoima (tässä tapauksessa ympyräradalla pitävä voima) lakkaa

Lisätiedot

Tietorakenteet, laskuharjoitus 7, ratkaisuja

Tietorakenteet, laskuharjoitus 7, ratkaisuja Tietorakenteet, laskuharjoitus, ratkaisuja. Seuraava kuvasarja näyttää B + -puun muutokset lisäysten jälkeen. Avaimet ja 5 mahtuvat lehtisolmuihin, joten niiden lisäys ei muuta puun rakennetta. Avain 9

Lisätiedot

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä

Luku 7. Verkkoalgoritmit. 7.1 Määritelmiä Luku 7 Verkkoalgoritmit Verkot soveltuvat monenlaisten ohjelmointiongelmien mallintamiseen. Tyypillinen esimerkki verkosta on tieverkosto, jonka rakenne muistuttaa luonnostaan verkkoa. Joskus taas verkko

Lisätiedot

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla ALKUHARJOITUS Kynän ja paperin avulla peilaaminen koordinaatistossa a) Peilaa pisteen (0,0) suhteen koordinaatistossa sijaitseva - neliö, jonka

Lisätiedot

Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta.

Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta. Ohjeissa pyydetään toisinaan katsomaan koodia esimerkkiprojekteista (esim. Liikkuva_Tausta1). Saat esimerkkiprojektit opettajalta. Vastauksia kysymyksiin Miten hahmon saa hyppäämään? Yksinkertaisen hypyn

Lisätiedot

Algoritmit 2. Luento 2 Ke Timo Männikkö

Algoritmit 2. Luento 2 Ke Timo Männikkö Algoritmit 2 Luento 2 Ke 15.3.2017 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2017 Luento

Lisätiedot

Vektorit. Kertausta 12.3.2013 Seppo Lustig (Lähde: avoinoppikirja.fi)

Vektorit. Kertausta 12.3.2013 Seppo Lustig (Lähde: avoinoppikirja.fi) Vektorit Kertausta 12.3.2013 Seppo Lustig (Lähde: avoinoppikirja.fi) Sisällys Vektorit Nimeäminen Vektorien kertolasku Vektorien yhteenlasku Suuntasopimus Esimerkki: laivan nopeus Vektorit Vektoreilla

Lisätiedot

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut

58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut 58131 Tietorakenteet ja algoritmit (kevät 2016) Ensimmäinen välikoe, malliratkaisut 1. Palautetaan vielä mieleen O-notaation määritelmä. Olkoon f ja g funktioita luonnollisilta luvuilta positiivisille

Lisätiedot

TIEA341 Funktio-ohjelmointi 1, kevät 2008

TIEA341 Funktio-ohjelmointi 1, kevät 2008 TIEA34 Funktio-ohjelmointi, kevät 2008 Luento 3 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 2. tammikuuta 2008 Ydin-Haskell: Syntaksi Lausekkeita (e) ovat: nimettömät funktiot: \x

Lisätiedot

SVINGIN KIINNITYSKOHDAT

SVINGIN KIINNITYSKOHDAT Antti Mäihäniemi opettaa kesäisin Master Golfissa ja talvisin Golfin Vermon House Prona. Hän on tutkinut golfsvingiä omatoimisesti yli kymmenen vuoden ajan. Hän on oppinut, että vain kyseenalaistamalla

Lisätiedot

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Graafit ja verkot Suuntamaton graafi: eli haaroja Joukko solmuja ja joukko järjestämättömiä solmupareja Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Haaran päätesolmut:

Lisätiedot

2.3 Voiman jakaminen komponentteihin

2.3 Voiman jakaminen komponentteihin Seuraavissa kappaleissa tarvitaan aina silloin tällöin taitoa jakaa voima komponentteihin sekä myös taitoa suorittaa sille vastakkainen operaatio eli voimien resultantin eli kokonaisvoiman laskeminen.

Lisätiedot

Liiketaitotestit ja tuloskortti

Liiketaitotestit ja tuloskortti Liiketaitotestit ja tuloskortti 1 taso Perus liiketaidot Syväkyykky 1 - integroitu liikkuvuus käsivarret vaakatasossa edessä - suorita kyykkyliike niin alas kuin sujuvasti liike on mahdollista - lantiotason

Lisätiedot

Katsaus korruption vaikutuksesta Venäjän alueelliseen talouskasvuun ja suoriin ulkomaisiin investointeihin

Katsaus korruption vaikutuksesta Venäjän alueelliseen talouskasvuun ja suoriin ulkomaisiin investointeihin INSTITUUTIOTTALOUSKASVUNEDELLYTYKSENÄ KatsauskorruptionvaikutuksestaVenäjänalueelliseentalouskasvuunjasuoriin ulkomaisiininvestointeihin2000 2010 AshekMohamedTarikHossain HelsinginYliopisto Valtiotieteellinentiedekunta

Lisätiedot

Flash ActionScript osa 4

Flash ActionScript osa 4 Flash ActionScript osa 4 Tekstikentät Flash:ssa tekstikenttä voi olla tyypiltään joko TLF Text tai Classic Text. TLF Text on uusi Flash CS5 tullut tyyppi. Sen animointi ja muotoilu ominaisuudet ovat monipuolisemmat

Lisätiedot

2016/06/21 13:27 1/10 Laskentatavat

2016/06/21 13:27 1/10 Laskentatavat 2016/06/21 13:27 1/10 Laskentatavat Laskentatavat Yleistä - vaakageometrian suunnittelusta Paalu Ensimmäinen paalu Ensimmäisen paalun tartuntapiste asetetaan automaattisesti 0.0:aan. Tämä voidaan muuttaa

Lisätiedot

Valmistelut: Aseta kartiot numerojärjestykseen pienimmästä suurimpaan (alkeisopiskelu) tai sekalaiseen järjestykseen (pidemmälle edenneet oppilaat).

Valmistelut: Aseta kartiot numerojärjestykseen pienimmästä suurimpaan (alkeisopiskelu) tai sekalaiseen järjestykseen (pidemmälle edenneet oppilaat). Laske kymmeneen Tavoite: Oppilaat osaavat laskea yhdestä kymmeneen ja kymmenestä yhteen. Osallistujamäärä: Vähintään 10 oppilasta kartioita, joissa on numerot yhdestä kymmeneen. (Käytä 0-numeroidun kartion

Lisätiedot

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä:

Solmu 3/2001 Solmu 3/2001. Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä: Frégier n lause Simo K. Kivelä Kevään 2001 ylioppilaskirjoitusten pitkän matematiikan kokeessa oli seuraava tehtävä: Suorakulmaisen kolmion kaikki kärjet sijaitsevat paraabelilla y = x 2 ; suoran kulman

Lisätiedot

Asko Ikävalko, k0201291 22.2.2004 TP02S-D. Ohjelmointi (C-kieli) Projektityö. Työn valvoja: Olli Hämäläinen

Asko Ikävalko, k0201291 22.2.2004 TP02S-D. Ohjelmointi (C-kieli) Projektityö. Työn valvoja: Olli Hämäläinen Asko Ikävalko, k0201291 22.2.2004 TP02S-D Ohjelmointi (C-kieli) Projektityö Työn valvoja: Olli Hämäläinen Asko Ikävalko LOPPURAPORTTI 1(11) Ratkaisun kuvaus Käytetyt tiedostot Tietuerakenteet Onnistuin

Lisätiedot

TEKIJÄNOIKEUSNEUVOSTO LAUSUNTO 2015:6. Tekijänoikeus kolmiulotteiseen tietokoneanimaatioon

TEKIJÄNOIKEUSNEUVOSTO LAUSUNTO 2015:6. Tekijänoikeus kolmiulotteiseen tietokoneanimaatioon TEKIJÄNOIKEUSNEUVOSTO LAUSUNTO 2015:6 Asia Hakija Tekijänoikeus kolmiulotteiseen tietokoneanimaatioon B Annettu 21.4.2015 Tiivistelmä Kolmiulotteiset tietokoneanimaatiokuvat voivat itsenäisenä ja omaperäisinä

Lisätiedot

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 13 Ti Timo Männikkö Algoritmit 2 Luento 13 Ti 30.4.2019 Timo Männikkö Luento 13 Simuloitu jäähdytys Merkkijonon sovitus Horspoolin algoritmi Ositus ja rekursio Rekursion toteutus Algoritmit 2 Kevät 2019 Luento 13 Ti 30.4.2019

Lisätiedot

Kenguru 2012 Student sivu 1 / 8 (lukion 2. ja 3. vuosi)

Kenguru 2012 Student sivu 1 / 8 (lukion 2. ja 3. vuosi) Kenguru 2012 Student sivu 1 / 8 Nimi Ryhmä Pisteet: Kenguruloikan pituus: Irrota tämä vastauslomake tehtävämonisteesta. Merkitse tehtävän numeron alle valitsemasi vastausvaihtoehto. Väärästä vastauksesta

Lisätiedot

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

Yhtälöryhmä matriisimuodossa. MS-A0004/A0006 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5. 2. MS-A4/A6 Matriisilaskenta 2. Nuutti Hyvönen, c Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 5.9.25 Tarkastellaan esimerkkinä lineaarista yhtälöparia { 2x x 2 = x + x 2

Lisätiedot

Algoritmit 2. Luento 2 To Timo Männikkö

Algoritmit 2. Luento 2 To Timo Männikkö Algoritmit 2 Luento 2 To 14.3.2019 Timo Männikkö Luento 2 Tietorakenteet Lineaarinen lista, binääripuu Prioriteettijono Kekorakenne Keko-operaatiot Keon toteutus taulukolla Algoritmit 2 Kevät 2019 Luento

Lisätiedot

ELOKUVATYÖKALUN KÄYTTÖ ANIMAATION LEIKKAAMISESSA. Kun aloitetaan uusi projekti, on se ensimmäisenä syytä tallentaa.

ELOKUVATYÖKALUN KÄYTTÖ ANIMAATION LEIKKAAMISESSA. Kun aloitetaan uusi projekti, on se ensimmäisenä syytä tallentaa. ELOKUVATYÖKALUN KÄYTTÖ ANIMAATION LEIKKAAMISESSA Kun aloitetaan uusi projekti, on se ensimmäisenä syytä tallentaa. Projekti kannattaa tallentaa muutenkin aina sillöin tällöin, jos käy niin ikävästi että

Lisätiedot

Kenguru 2016 Student lukiosarja

Kenguru 2016 Student lukiosarja sivu 1 / 9 NIMI LUOKKA Pisteet: Kenguruloikan pituus: Irrota tämä vastauslomake tehtävämonisteesta. Merkitse tehtävän numeron alle valitsemasi vastausvaihtoehto. Väärästä vastauksesta saat miinuspisteitä

Lisätiedot

XXIII Keski-Suomen lukiolaisten matematiikkakilpailu 23.1.2014, tehtävien ratkaisut

XXIII Keski-Suomen lukiolaisten matematiikkakilpailu 23.1.2014, tehtävien ratkaisut XXIII Keski-Suomen lukiolaisten matematiikkakilpailu 23.1.2014, tehtävien ratkaisut 1. Avaruusalus sijaitsee tason origossa (0, 0) ja liikkuu siitä vakionopeudella johonkin suuntaan, joka ei muutu. Tykki

Lisätiedot

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 9 Ti Timo Männikkö Algoritmit 1 Luento 9 Ti 7.2.2017 Timo Männikkö Luento 9 Graafit ja verkot Kaaritaulukko, bittimatriisi, pituusmatriisi Verkon lyhimmät polut Floydin menetelmä Lähtevien ja tulevien kaarien listat Forward

Lisätiedot

Harjoitus Morphing. Ilmeiden luonti

Harjoitus Morphing. Ilmeiden luonti LIITE 1 1(5) Harjoitus Morphing Harjoituksessa käsiteltävät asiat: Objektien kopioiminen Editoitavan polygonin muokkaaminen Morph-modifier käyttö ilmeiden luomiseen Lyhyen animaation luonti set key- toimintoa

Lisätiedot

1 Kertaus. Lineaarinen optimointitehtävä on muotoa:

1 Kertaus. Lineaarinen optimointitehtävä on muotoa: 1 Kertaus Lineaarinen optimointitehtävä on muotoa: min c 1 x 1 + c 2 x 2 + + c n x n kun a 11 x 1 + a 12 x 2 + + a 1n x n b 1 a 21 x 1 + a 22 x 2 + + a 2n x n b 2 (11) a m1 x 1 + a m2 x 2 + + a mn x n

Lisätiedot

Videon tallentaminen Virtual Mapista

Videon tallentaminen Virtual Mapista Videon tallentaminen Virtual Mapista Kamera-ajon tekeminen Karkean kamera ajon teko onnistuu nopeimmin Katseluohjelmassa (Navigointi > Näkymät > Tallenna polku). Liikeradan ja nopeuden tarkka hallinta

Lisätiedot

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan

Lisätiedot

Luonnontieteiden popularisointi ja sen ideologia

Luonnontieteiden popularisointi ja sen ideologia Luonnontieteiden popularisointi ja sen ideologia Tapauksina Reino Tuokko ja Helsingin Sanomat 1960-luvulla Ahto Apajalahti Helsingin yliopisto Humanistinen tiedekunta Suomen ja Pohjoismaiden historia Pro

Lisätiedot

Tietorakenteet ja algoritmit - syksy 2015 1

Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 1 Tietorakenteet ja algoritmit - syksy 2015 2 Tietorakenteet ja algoritmit Johdanto Ari Korhonen Tietorakenteet ja algoritmit - syksy 2015 1. JOHDANTO 1.1 Määritelmiä

Lisätiedot

Datatähti 2009 -alkukilpailu

Datatähti 2009 -alkukilpailu Datatähti 2009 -alkukilpailu Ohjelmointitehtävä 1/3: Hissimatka HUOM: Tutustuthan huolellisesti tehtävien sääntöihin ja palautusohjeisiin (sivu 7) Joukko ohjelmoijia on talon pohjakerroksessa, ja he haluavat

Lisätiedot

Teoreettisia perusteita II

Teoreettisia perusteita II Teoreettisia perusteita II Origon siirto projektiokeskukseen:? Origon siirto projektiokeskukseen: [ X X 0 Y Y 0 Z Z 0 ] [ Maa-57.260 Kiertyminen kameran koordinaatistoon:? X X 0 ] Y Y 0 Z Z 0 Kiertyminen

Lisätiedot

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:

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: 11 Determinantti Neliömatriisille voidaan laskea luku, joka kertoo muun muassa, onko matriisi kääntyvä vai ei Tätä lukua kutsutaan matriisin determinantiksi Determinantilla on muitakin sovelluksia, mutta

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

Lisätiedot

Viikon aiheet. Funktion lineaarinen approksimointi

Viikon aiheet. Funktion lineaarinen approksimointi Viikon aiheet Funktion ääriarvot Funktion lineaarinen approksimointi Vektorit, merkintätavat, pituus, yksikkövektori, skalaarilla kertominen, kanta ja kannan vaihto Funktion ääriarvot 6 Väliarvolause Implisiittinen

Lisätiedot

Käyttöönotto-opas RT Controller

Käyttöönotto-opas RT Controller Käyttöönotto-opas RT Controller Pikaopas RT-järjestelmän käyttöönottoa varten Aloitusopas RT Controller Versio 1.3 (090831) (Käytä tämän pikaoppaan kanssa opasta User Manual RT Controller, versio 2.1 tai

Lisätiedot

4. Luennon sisältö. Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä

4. Luennon sisältö. Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä JYVÄSKYLÄN YLIOPISTO 4. Luennon sisältö Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä kevät 2012 TIEA382 Lineaarinen ja diskreetti optimointi Lineaarinen optimointitehtävä Minimointitehtävä

Lisätiedot

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

Kurssin loppuosassa tutustutaan matriiseihin ja niiden käyttöön yhtälöryhmien ratkaisemisessa. 7 Matriisilaskenta Kurssin loppuosassa tutustutaan matriiseihin ja niiden käyttöön yhtälöryhmien ratkaisemisessa. 7.1 Lineaariset yhtälöryhmät Yhtälöryhmät liittyvät tilanteisiin, joissa on monta tuntematonta

Lisätiedot

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

Yhtälöryhmä matriisimuodossa. MS-A0007 Matriisilaskenta. Tarkastellaan esimerkkinä lineaarista yhtälöparia. 2x1 x 2 = 1 x 1 + x 2 = 5. 2. MS-A000 Matriisilaskenta 2. Nuutti Hyvönen, c Riikka Kangaslampi Matematiikan ja systeemianalyysin laitos Aalto-yliopisto 2..205 Tarkastellaan esimerkkinä lineaarista yhtälöparia { 2x x 2 = x x 2 =

Lisätiedot

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 2 Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Laitetaan pallo liikkeelle Tehdään kentälle reunat Vaihdetaan kentän taustaväri Zoomataan

Lisätiedot

Algoritmit 1. Luento 10 Ke Timo Männikkö

Algoritmit 1. Luento 10 Ke Timo Männikkö Algoritmit 1 Luento 10 Ke 14.2.2018 Timo Männikkö Luento 10 Algoritminen ongelmanratkaisu Suunnittelumenetelmät Raaka voima Järjestäminen eli lajittelu Kuplalajittelu Lisäyslajittelu Valintalajittelu Permutaatiot

Lisätiedot

FYSP101/K1 KINEMATIIKAN KUVAAJAT

FYSP101/K1 KINEMATIIKAN KUVAAJAT FYSP101/K1 KINEMATIIKAN KUVAAJAT Työn tavoitteita tutustua kattavasti DataStudio -ohjelmiston käyttöön syventää kinematiikan kuvaajien (paikka, nopeus, kiihtyvyys) hallintaa oppia yhdistämään kinematiikan

Lisätiedot

Tiedekunta/Osasto Fakultet/Sektion Faculty Valtiotieteellinen tiedekunta

Tiedekunta/Osasto Fakultet/Sektion Faculty Valtiotieteellinen tiedekunta Tiedekunta/Osasto Fakultet/Sektion Faculty Valtiotieteellinen tiedekunta Laitos Institution Department Politiikan ja talouden tutkimuksen laitos Tekijä Författare Author Virta, Mikko Antero Työn nimi Arbetets

Lisätiedot

Opetusmateriaali. Fermat'n periaatteen esittely

Opetusmateriaali. Fermat'n periaatteen esittely Opetusmateriaali Fermat'n periaatteen esittely Hengenpelastajan tehtävässä kuvataan miten hengenpelastaja yrittää hakea nopeinta reittiä vedessä apua tarvitsevan ihmisen luo - olettaen, että hengenpelastaja

Lisätiedot

Algoritmit 1. Luento 8 Ke Timo Männikkö

Algoritmit 1. Luento 8 Ke Timo Männikkö Algoritmit 1 Luento 8 Ke 1.2.2017 Timo Männikkö Luento 8 Järjestetty binääripuu Solmujen läpikäynti Binääripuun korkeus Binääripuun tasapainottaminen Graafit ja verkot Verkon lyhimmät polut Fordin ja Fulkersonin

Lisätiedot

Lue ohjeet huolellisesti ennen laitteen käyttöä.

Lue ohjeet huolellisesti ennen laitteen käyttöä. 1 Digitointi LP-levyltä CD-levylle (Ion CD Direct) Lue ohjeet huolellisesti ennen laitteen käyttöä. Soittimessa voi käyttää CD-R, CD+R, uudelleen kirjoitettavia CD-RW ja CD+RW levyjä. Yhdelle levylle voi

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 4 / vko 47

MS-A0003/A0005 Matriisilaskenta Malliratkaisut 4 / vko 47 MS-A3/A5 Matriisilaskenta Malliratkaisut 4 / vko 47 Tehtävä 1 (L): Oletetaan, että AB = AC, kun B ja C ovat m n-matriiseja. a) Näytä, että jos A on kääntyvä, niin B = C. b) Seuraako yhtälöstä AB = AC yhtälö

Lisätiedot

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45

MS-A0003/A0005 Matriisilaskenta Laskuharjoitus 2 / vko 45 MS-A0003/A0005 Matriisilaskenta Laskuharjoitus / vko 5 Tehtävä 1 (L): Hahmottele kompleksitasoon ne pisteet, jotka toteuttavat a) z 3 =, b) z + 3 i < 3, c) 1/z >. Yleisesti: ehto z = R, z C muodostaa kompleksitasoon

Lisätiedot

Taulukot. Jukka Harju, Jukka Juslin 2006 1

Taulukot. Jukka Harju, Jukka Juslin 2006 1 Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti

Lisätiedot

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää

D B. Levykön rakenne. pyöriviä levyjä ura. lohko. Hakuvarsi. sektori. luku-/kirjoituspää Levyn rakenne Levykössä (disk drive) on useita samankeskisiä levyjä (disk) Levyissä on magneettinen pinta (disk surface) kummallakin puolella levyä Levyllä on osoitettavissa olevia uria (track), muutamasta

Lisätiedot

Algoritmit 1. Luento 3 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien

Lisätiedot

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

Matriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9. Python linkit: Python tutoriaali: http://docs.python.org/2/tutorial/ Numpy&Scipy ohjeet: http://docs.scipy.org/doc/ Matlabin alkeet (Pääasiassa Deni Seitzin tekstiä) Matriisit ovat matlabin perustietotyyppejä.

Lisätiedot

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus: Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus

Lisätiedot

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

763306A JOHDATUS SUHTEELLISUUSTEORIAAN 2 Ratkaisut 1 Kevät y' P. α φ 76336A JOHDATUS SUHTEELLISUUSTEORIAAN 2 Ratkaisut 1 Kevät 217 1. Koordinaatiston muunnosmatriisi (a) y' P r α φ ' Tarkastellaan, mitä annettu muunnos = cos φ + y sin φ, y = sin φ + y cos φ, (1a) (1b) tekee

Lisätiedot

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA

LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA LUKUJA, DATAA KÄSITTELEVÄT FUNKTIOT JA NIIDEN KÄYTTÖ LOGIIKKAOHJAUKSESSA Tavallisimmin lukuja käsittelevien datasanojen tyypiksi kannattaa asettaa kokonaisluku 16 bitin INT, jonka vaihtelualueeksi tulee

Lisätiedot

Datatähti 2019 loppu

Datatähti 2019 loppu Datatähti 2019 loppu task type time limit memory limit A Summa standard 1.00 s 512 MB B Bittijono standard 1.00 s 512 MB C Auringonlasku standard 1.00 s 512 MB D Binääripuu standard 1.00 s 512 MB E Funktio

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 25.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 25.2.2009 1 / 34 Syötteessä useita lukuja samalla rivillä Seuraavassa esimerkissä käyttäjä antaa useita lukuja samalla

Lisätiedot

Tilastollinen vastepintamallinnus: kokeiden suunnittelu, regressiomallin analyysi, ja vasteen optimointi. Esimerkit laskettu JMP:llä

Tilastollinen vastepintamallinnus: kokeiden suunnittelu, regressiomallin analyysi, ja vasteen optimointi. Esimerkit laskettu JMP:llä Tilastollinen vastepintamallinnus: kokeiden suunnittelu, regressiomallin analyysi, ja vasteen optimointi Esimerkit laskettu JMP:llä Antti Hyttinen Tampereen teknillinen yliopisto 29.12.2003 ii Ohjelmien

Lisätiedot

PowerPoint -esitysgrafiikka

PowerPoint -esitysgrafiikka TAMPEREEN KAUPUNKI Kasvatus- ja opetustoimiala @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ PowerPoint -esitysgrafiikka jatkokurssi SisällysError! Not a valid link. 1 Automaattiset muodot 1 2 Piirrosobjektin

Lisätiedot

Puzzle SM 2005 15. 25.7.2005. Pistelasku

Puzzle SM 2005 15. 25.7.2005. Pistelasku Puzzle SM 005 5. 5.7.005 Pistelasku Jokaisesta oikein ratkotusta tehtävästä saa yhden () pisteen, minkä lisäksi saa yhden () bonuspisteen jokaisesta muusta ratkojasta, joka ei ole osannut ratkoa tehtävää.

Lisätiedot

11.4. Rakenteellista käsittelyä tilavuusrenderöintialgoritmeissa

11.4. Rakenteellista käsittelyä tilavuusrenderöintialgoritmeissa 11.4. Rakenteellista käsittelyä tilavuusrenderöintialgoritmeissa Tilavuusdatan katseluprosessi on käsitteellisesti yksinkertaista. Se pitää sisällään tilavuuden kierron katselusuuntaan ja sitten säteen

Lisätiedot

Muodonmuutostila hum 30.8.13

Muodonmuutostila hum 30.8.13 Muodonmuutostila Tarkastellaan kuvan 1 kappaletta Ω, jonka pisteet siirtvät ulkoisen kuormituksen johdosta siten, että siirtmien tapahduttua ne muodostavat kappaleen Ω'. Esimerkiksi piste A siirt asemaan

Lisätiedot

! #! %! & #!!!!! ()) +

! #! %! & #!!!!! ()) + ! #! %! & #!!!!! ()) + Tiedekunta/Osasto Fakultet/Sektion Faculty Humanistinen tiedekunta Laitos Institution Department Taiteiden tutkimuksen laitos Tekijä Författare Author Matti Pesonen Työn nimi Arbetets

Lisätiedot

NÄIN JUOSTAAN OIKEIN. Virheitä korjaamalla kohti parempaa juoksutekniikkaa

NÄIN JUOSTAAN OIKEIN. Virheitä korjaamalla kohti parempaa juoksutekniikkaa NÄIN JUOSTAAN OIKEIN Virheitä korjaamalla kohti parempaa juoksutekniikkaa NÄIN JUOSTAAN OIKEIN Virheitä korjaamalla kohti parempaa juoksutekniikkaa Juoksutekniikan suhteen urheilija toimii kuin kone: vahvasta

Lisätiedot

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( )

Königsbergin sillat. Königsberg 1700-luvulla. Leonhard Euler ( ) Königsbergin sillat 1700-luvun Königsbergin (nykyisen Kaliningradin) läpi virtasi joki, jonka ylitti seitsemän siltaa. Sanotaan, että kaupungin asukkaat yrittivät löytää reittiä, joka lähtisi heidän kotoaan,

Lisätiedot

1 Kannat ja kannanvaihto

1 Kannat ja kannanvaihto 1 Kannat ja kannanvaihto 1.1 Koordinaattivektori Oletetaan, että V on K-vektoriavaruus, jolla on kanta S = (v 1, v 2,..., v n ). Avaruuden V vektori v voidaan kirjoittaa kannan vektorien lineaarikombinaationa:

Lisätiedot

!"#$%&'$("#)*+,!!,"*--.$*#,&--#"*/".,,%0 1&'23456789::94752;&27455<:4;2;&,9:=>23?277<&8=@74;9&ABBCDABBE

!#$%&'$(#)*+,!!,*--.$*#,&--#*/.,,%0 1&'23456789::94752;&27455<:4;2;&,9:=>23?277<&8=@74;9&ABBCDABBE !"#$%&'$("#)*+,!!,"*--.$*#,&--#"*/".,,%0 1&'23456789::94752;&2745523?27747544H9;&IG@&JG9?=&15=5H42>:9 '28

Lisätiedot

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto

TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto Indeksin luonti ja hävitys TKHJ:ssä on yleensä komento create index, jolla taululle voidaan luoda hakemisto Komentoa ei ole standardoitu ja niinpä sen muoto vaihtelee järjestelmäkohtaisesti Indeksi voidaan

Lisätiedot

Animaation tuotanto ja kuvaustekniikat peleissä

Animaation tuotanto ja kuvaustekniikat peleissä Animaation tuotanto ja kuvaustekniikat peleissä Mika Timonen Helsinki 29.4.2006 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos i Tiedekunta Matemaattis-luonnontieteellinen Laitos Tietojenkäsittelytieteen

Lisätiedot

Algoritmit 2. Luento 6 To Timo Männikkö

Algoritmit 2. Luento 6 To Timo Männikkö Algoritmit 2 Luento 6 To 28.3.2019 Timo Männikkö Luento 6 B-puun operaatiot Nelipuu Trie-rakenteet Standarditrie Pakattu trie Algoritmit 2 Kevät 2019 Luento 6 To 28.3.2019 2/30 B-puu 40 60 80 130 90 100

Lisätiedot

5. Grafiikkaliukuhihna: (1) geometriset operaatiot

5. Grafiikkaliukuhihna: (1) geometriset operaatiot 5. Grafiikkaliukuhihna: () geometriset operaatiot Johdanto Grafiikkaliukuhihnan tarkoitus on kuvata kolmiulotteisen kohdeavaruuden kuva kaksiulotteiseen kuva eli nättöavaruuteen. aikka kolmiulotteisiakin

Lisätiedot

Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on

Vektorien pistetulo on aina reaaliluku. Esimerkiksi vektorien v = (3, 2, 0) ja w = (1, 2, 3) pistetulo on 13 Pistetulo Avaruuksissa R 2 ja R 3 on totuttu puhumaan vektorien pituuksista ja vektoreiden välisistä kulmista. Kuten tavallista, näiden käsitteiden yleistäminen korkeampiulotteisiin avaruuksiin ei onnistu

Lisätiedot

Yhteenlaskun ja skalaarilla kertomisen ominaisuuksia

Yhteenlaskun ja skalaarilla kertomisen ominaisuuksia Yhteenlaskun ja skalaarilla kertomisen ominaisuuksia Voidaan osoittaa, että avaruuden R n vektoreilla voidaan laskea tuttujen laskusääntöjen mukaan. Huom. Lause tarkoittaa väitettä, joka voidaan perustella

Lisätiedot

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea.

Department of Mathematics, Hypermedia Laboratory Tampere University of Technology. Roolit Verkostoissa: HITS. Idea. Roolit Tommi Perälä Department of Mathematics, Hypermedia Laboratory Tampere University of Technology 25.3.2011 J. Kleinberg kehitti -algoritmin (Hypertext Induced Topic Search) hakukoneen osaksi. n taustalla

Lisätiedot