Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla

Samankaltaiset tiedostot
Peilaus pisteen ja suoran suhteen Pythonin Turtle moduulilla (Opettajan ohje)

14 Monikulmiot 1. Nimeä monikulmio. a) b) c) Laske monikulmion piiri. a) 30,8 cm 18,2 cm. Laske sivun x pituus, kun monikulmion piiri on 25,0 cm.

Opettajan ohje: Tehtäväluettelo:

Ohjelmakoodia kannattaa aina välillä testata sitä luodessa. Muista tallentaa työsi, vaikka se jäisi keskeneräiseksi!

Ensikosketus ohjelmointiin

Tasogeometriaa GeoGebran piirtoalue ja työvälineet

Vektoreita GeoGebrassa.

Matematiikan ilmiöiden tutkiminen GeoGebran avulla

TYÖPAJA 1: Tasogeometriaa GeoGebran piirtoalue ja työvälineet

Symmetrioiden tutkiminen GeoGebran avulla

Python-ohjelmointi Harjoitus 5

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

GeoGebra-harjoituksia malu-opettajille

Yleistä vektoreista GeoGebralla

TYÖPAJA 1: Tasogeometriaa GeoGebran piirtoalue ja työvälineet

mlvektori 1. Muista, että Jacobin matriisi koostuu vektori- tai skalaariarvoisen funktion F ensimmäisistä

2 Pistejoukko koordinaatistossa

4.1 Kaksi pistettä määrää suoran

Vektorit Opiskelijan ohjeet

Pituus- ja pinta-alayksiköt. m dm cm mm. km hm dam m. a) neljän pienen kohteen pituus millimetreiksi, senttimetreiksi ja desimetreiksi

MATEMATIIKKA JA TAIDE I

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

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

Trigonometriaa ja solve-komento GeoGebralla

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

7. Kuvien lisääminen piirtoalueelle

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op)

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

Opetusmateriaali. Tarvittavat välineet: KUVA 1. Rullakko 1. KUVA 2. Rullakko 2, jossa kiekoissa on kuhmu

6. Harjoitusjakso II. Vinkkejä ja ohjeita

Ohjelmoinnin peruskurssi Y1

Geometriaa GeoGebralla Lisätehtäviä nopeasti eteneville

GeoGebran 3D paketti

Scratch ohjeita. Perusteet

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1

Racket ohjelmointia II. Tiina Partanen 2015

9. Harjoitusjakso III

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Python-ohjelmointi Harjoitus 2

origo III neljännes D

Tekijä Pitkä matematiikka

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

GeoGebra. ohjeita ja tehtäviä 2. Pohdin projekti 1

Hannu Mäkiö. kertolasku * jakolasku / potenssiin korotus ^ Syöte Geogebran vastaus

Geogebra -koulutus. Ohjelmistojen pedagoginen hyödyntäminen

Ohjelmoinnin perusteet Y Python

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

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

JAVA on ohjelmointikieli, mikä on kieliopiltaan hyvin samankaltainen, jopa identtinen mm. C++

Tämä luku nojaa vahvasti esimerkkeihin. Aloitetaan palauttamalla mieleen, mitä koordinaatistolla tarkoitetaan.

2.1 Yksinkertaisen geometrian luonti

GEOGEBRAN TYÖKALUT. Siirrä-työkalu. Siirrä

Kuvien kanssa työskentely GeoGebrassa

MAB3 - Harjoitustehtävien ratkaisut:

Tutoriaaliläsnäoloista

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

3. Kuvio taitetaan kuutioksi. Mikä on suurin samaa kärkeä ympäröivillä kolmella sivutahkolla olevien lukujen tulo?

11. Geometria Valikot ja näppäintoiminnot. Geometriasovelluksessa voit tehdä puhdasta tai analyyttista geometriaa.

z 1+i (a) f (z) = 3z 4 5z 3 + 2z (b) f (z) = z 4z + 1 f (z) = 12z 3 15z 2 + 2

Ohjelmoinnin perusteet Y Python

yleisessä muodossa x y ax by c 0. 6p

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3

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

7. Resistanssi ja Ohmin laki

Ohjelmoinnin perusteet Y Python

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

Peilatun kuvion ominaisuudet

Piste ja jana koordinaatistossa

Ohjelmointi 2 / 2010 Välikoe / 26.3

3. Piirrä kaksi tasoa siten, että ne jakavat avaruuden neljään osaan.

FUNKTION KUVAAJAN PIIRTÄMINEN

MAA15 Vektorilaskennan jatkokurssi, tehtävämoniste

ASCII-taidetta. Intro: Python

Ohjelmoinnin perusteet Y Python

Racket ohjelmointia osa 1. Tiina Partanen Lielahden koulu 2014

Ohjelmoinnin perusteet Y Python

2.3 Voiman jakaminen komponentteihin

Ohjelmoinnin perusteet Y Python

Kenguru 2016 Student lukiosarja

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne

Tasokuvioita. Monikulmio: Umpinainen eli suljettu, itseään leikkaamaton murtoviivan rajaama tason osa on monikulmio. B

Monikulmiot 1/5 Sisältö ESITIEDOT: kolmio

RATKAISUT a + b 2c = a + b 2 ab = ( a ) 2 2 ab + ( b ) 2 = ( a b ) 2 > 0, koska a b oletuksen perusteella. Väite on todistettu.

Ohjelmoinnin perusteet Y Python


Tässä osassa ei käytetä laskinta. Kaikkiin tehtäviin laskuja tai perusteluja näkyviin, ellei muuta ole mainittu.

Avaruuslävistäjää etsimässä

MATEMATIIKKA 5 VIIKKOTUNTIA

Merkkijono on palindromi, jos se säilyy samana, vaikka sen kääntää väärinpäin.

ITKP102 Ohjelmointi 1 (6 op)

Transkriptio:

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 kärkipisteet ovat (1,1), (1,5), (5,5) ja (5,1) - suorakulmainen kolmio, jonka kärkipisteet ovat (-1,1), (-5,1) ja (-5,5). b) Peilaa y-akselin ja x-akselin suhteen koordinaatistossa sijaitseva - neliö, jonka kärkipisteet ovat (1,1), (1,5), (5,5) ja (5,1). - suorakulmainen kolmio, jonka kärkipisteet ovat (-1,1), (-5,1) ja (-5,5). OHJELMOINTI PYTHONILLA Tässä harjoituksessa opiskellaan Pythonin turtle moduulin käyttöä palauttamalla mieleen kappaleiden peilausta suoran suhteen koordinaatistossa. Tehtävän tekoon suositellaan käytettävksi trinket.io verkkosivuston python alustaa. Jotta saisimme turtle moduulin käyttöön, täytyy se tuoda ohjelmalle kirjoittamalla alkuun komento: import turtle Luodaan seuraavaksi konna jota liikuttamalla kuvioita voidaan piirtää: konna = turtle.turtle() konna.shape("turtle") Tässä piirtämisen tekevälle muuttujalle on annettu nimeksi konna ja tätä nimeä käytetään aina, kun halutaan piirtää kyseisellä objektilla. Shape antaa konnalle näkyvän kilpikonnamaisen muodon. Turtlella piirtäminen Pythonissa kukin komento tulee kirjoittaa omalle rivilleen ja ohjelma käy komentoja läpi rivi riviltä. Näissä harjoituksissa konnalle riittää käytettäväksi seuraavat komennot: konna.forward(pituus) konna.left(kulma) konna.right(kulma) liikuttaa konnaa eteenpäin annetun pituuden verran kääntää konnaa vasemmalle annetun kulman verran kääntää konnaa oikealle asteina annetun kulman verran

konna.setheading(kulma) asettaa konnan osoittamaan kulman suuntaan 0 suunnan osoittaessa oikealle konna.goto(x, y) liikuttaa konnan annettuihin x ja y koordinaatteihin konna.pendown() aloittaa piirtämisen lopettaa piirtämisen konna.stamp() leimaa konnan kuvan koordinaatistoon senhetkiseen sijaintiin Ylläolevissa komennoissa luku, kulma, x ja y voidaan korvata luvuilla, laskutoimituksilla tai pitää muuttujina, johin on sijoitettu lukuarvo kuten alla: kulma = 45 x = -100 y = 50 Trinketissä Turtle moduulin koordinaatiston yksi pikseli ruudulla vastaa yhtä kokonaislukua, joten kannattaa käyttää suurehkoja (20-100) lukuja liikuttaessa, jotta piirrosjälki on havaittavissa. Trinketissä koko piirtoalue on 400 pikseliä (-200 200) leveä ja korkea origon (piste (0, 0)) ollessa keskellä. H1. Monikulmioiden piirtämistä a) Tee komentosarja, joka ohjaa konnan piirtämään neliön piirtoalueelle. - Mihin suuntaan konna aloittaa liikkumisen, jossei sitä alussa käännetä? b) Liikuta konna johonkin muuhun kohtaan piirtoaluetta ja ohjaa se piirtämään kolmio. c) Piirrä myös tasasivuinen viisikulmio eri kohtaan piirtoaluetta. - Kuinka tiedät miten paljon konnaa pitää kääntää, jotta saat oikean kuvion piirrettyä? - Mitä hyötyä stamp komennosta voisi olla koodia kirjoittaessa? - Kiinnitä huomiota koodin rakenteeseen ja toistuvuuteen. Mitä huomaat? Toisto Yksi tapa toistaa komentoja Pythonissa on seuraavanlainen: toistomaara = 4 for i in range(0, toistomaara ): toistettava koodi sisennettynä

Tämä toistaa kaksoispisteen jälkeisen sisennetyt koodirivit toistomaara muuttujalle annetun arvon kertoja. Huomaa, että Python koodissa ei kannata käyttää ääkkösiä. H2. Monikulmion piirtäminen toistorakenteella Aloita puhtaalta alustalta ja piirrä kuvioit toistorakennetta hyödyntäen: a) Kirjoita toistorakenne, joka piirtää neliön, jonka sivun pituus on 50 mutta sijoita tällä kertaa sivun pituus omaan muuttujaansa. b) Kirjoita toistorakenne, joka piirtää eri kohtaan säännöllisen seitsemänkulmion, jolla on sama sivun pituus kuin aiemmalla neliöllä. - Miten saatiinkaan laskettua käännöksen suuruus eri säännöllisillä monikulmioilla? Funktio Funktiot ovat aliohjelmia, joita voidaan kutsua koodissa suorittamaan toimintonsa annetuilla argumenteilla tai ilman, jos funktio ei niitä hyödynnä. Pythonissa funktioita voidaan luoda seuraavasti : def funktio( argumentti1, argumentti2 ): funktion koodia sisennettynä Esimerkiksi funktio, joka piirtää konnalla halutun pituisen suoran viivan olisi seuraavanlainen: def viiva( pituus ): konna.pendown() konna.forward( pituus ) Funktion kutsuminen (eli tässä viivan piirtäminen) ohjelmakoodissa tapahtuu seuraavasti: viiva(100) # Kirjoitetaan funktion nimi ja sulkeisiin haluttu lukuarvo # (tässä tapauksessa viivan pituus). H3. Piirto funktiolla Hyödynnä aiemmin opittua monikulmioita piirtävän funktion luonnissa. a) Luo funktio monikulmio( x, y, pituus, kulmia ), joka piirtää säännöllisen monikulmion niin, että sille määrätään argumenteilla monikulmion sijaintia varten aloituskoordinaatit, sivun pituus sekä kulmien määrä.

- Mitä tehtiinkään H1:ssä (aloiuspisteen siirto) ja H2:ssa (toisto)? - Millä komennolla saadaan siirrettyä konnan minne halutaan koordinaatistossa ennen monikulmion piirtoa? - Stamp komennolla voidaan helpottaa virheiden etsintää ratkaisussa. - Muistetaan nostaa kynä, kun ei haluta piirtää ja laskea ennen piirron aloitusta. b) Testaa funktion toimivuutta kutsumalla sitä komennoilla : monikulmio(-100, -100, 30, 3) monikulmio(-100, 100, 40, 4) monikulmio(100, 100, 50, 5) monikulmio(100, -100, 20, 6) H4. Peilauspisteelle funktio Jatka H3:n pohjalta. Kopioi alta peilauspisteen funktio joka piirtää sen pienenä + merkkinä. Liitä se koodiin monikulmion funktion määrittelyn edelle. def peilauspiste( px, py ): konna.goto( px -5, py ) konna.pendown() konna.goto( px +5, py ) konna.goto( px, py -5) konna.pendown() konna.goto( px, py +5) konna.goto(0,0) - Kuinka peilauspisteen funktiota kutsutaan? - Mitä tekevät muuttujat px ja py? - Lue peilauspisteen koodi rivi kerrallaan parillesi mitä kussakin kohdassa on tehty? H5. Peilaus pisteen suhteen Jatka H4:stä ja luo apumuuttujat joita tarvitaan myöhemmin peilauksessa ja piirretään peilauspiste origoon funktiolla. Tee ensin peilaus ilman monikulmion funktiota: a) Luo seuraavat muuttujat ja anna niille annetut arvot: px = 0, py = 0, x = -100, y = 50, kulmia = 6 ja pituus = 40 b) Piirrä peilauspiste pisteeseen (px, py) sen funktiota käyttäen

c) Piirrä neliö, joka kulkee pisteiden (10,10), (10,50), (50,50) ja (50,10) kautta. Piirrä neliölle peilikuva peilauspisteen suhteen. (Huom! Palauta mieleen, kuinka piirsit peilikuvia kynällä ja paperilla. Mistä pisteestä lähdet piirtämään peilikuvaa? Millä komennolla saat pirrettyä viivan kahden pisteen välille?) d) Piirrä suorakulmainen kolmio, jonka kärkipisteet ovat (-10, 10), (-50, 10) ja (-50, 50). Piirrä tälle kolmiolle peilikuva peilauspisteen suhteen. e) Piirrä H3:n funktiota käyttäen säännöllinen monikulmio käyttäen a) kohdassa luotuja muuttujia x, y, kulmia ja pituus. f) Piirrä monikulmion peilikuva peilauspisteen suhteen. Lisähaasteena: - Saatko koodisi toimimaan toistorakennetta käyttäen niin, että monikulmio peilautuu minkä tahansa peilauspisteen sijainnin suhteen? - Entä peilautuuko kuvio oikein, jos muutat monikulmion kulmien määrää? H6. Peilaus suoran suhteen Aloita uusi trinketti/projekti ja kopioi siihen allaoleva koodi. Täydennä koodin alkuun alkuun H3:ssa tekemäsi monikulmioiden piirtämisen funktio. Tämän jälkeen ohjaa konna piirtämään kuvion peilikuva suoran suhteen ohjelmakoodin loppuun. # alkuiset osat ovat kommenttia, jota ohjelma ei aja koodina. - Kuinka saat peilattua yhden pisteen suoran suhteen? Olisiko jostakin annetusta funktiosta hyötyä? - Saatko piirrettyä kuvion tästä peilatusta pisteestä lähtien? Ota huomioon mihin suuntaan konna osoittaa milloinkin. - Saatko peilauksen toimimaan riippumatta monikulmion kulmien määrästä? - Saatko peilauksen toimimaan muilla peilaussuoran kulmilla kuin 90? Kokeile vaikka 45 ja 0. Koodi: # tuodaan ohjelman käytettäväksi tarvittavat moduulit import turtle import math # Täydennä tähän H3:ssa tekemäsi monikulmioiden piirtofunktio

def monikulmio( x, y, kulmia, sivu ): # tämä funktio piirtää origon (0, 0) kautta kulkevan suoran, # joka on argumenttina annetussa kulmassa vaakatasoon nähden def peilaussuora( kulma ): konna.goto(0, 0) konna.left( kulma ) konna.forward(200) konna.left(180) konna.pendown() konna.forward(400) konna.goto(0, 0) konna.setheading(0) # tällä funktiolla voidaan laskea annetuissa x ja y koordinaateissa # olevan pisteen etäisyys peilaussuorasta def pisteenetaisyyssuorasta( x, y, kulma ): k = math.tan( kulma /180*math.pi) return abs( y -k* x )/math.sqrt(1+k*k) # Pääohjelma alkaa tässä ja siinä piirretään tehtävänanto halutuilla # arvoilla. Voit itse muuttaa muuttujien arvoja halutessasi. konna = turtle.turtle() konna.shape("turtle") # Muuttujat: kulma = 90 # peilaussuoran kulma (0-90 astetta) x = -100 # monikulmion kulman x koordinaatti y = 50 # monikulmion kulman y koordinaatti kulmia = 4 # monikulmion kulmien määrä sivu = 40 # monikulmion sivun pituus # Piirretään peilaussuora ja peilattava monikulmio funktioilla ja # palataan aloituspisteeseen. peilaussuora( kulma ) monikulmio( x, y, kulmia, sivu ) konna.goto(0, 0) # palataan keskelle piirtoaluetta konna.setheading(0) # käännytään aloitussuuntaan # Kirjoita alle koodisi, jolla saat konnan piirtämään # monikulmion peilikuvan peilaussuoran suhteen. # Toimiiko ratkaisusi eri monikulmioilla sekä peilaussuorilla? # Stamp komennolla voit helpommin etsiä virheitä omassa ratkaisussasi.