23
TTÜ informaatikainstituut Joonistamine Joonistamine realiseerub Scratch’is mingi objekti skripti abil, milles kasutatakse plokke grupist Pliiats. Selleks objektiks võib olla Scratch’i sprait Pensil või mõni muu selleks eesmärgiks tekitatud objekt. Joonistatavaid objekte võib olla ka mitu ning need võivad tegutseda kas

Joonistaminescratch.ttu.ee/failid/Joonte joonistamine.docx · Web viewTTÜ informaatikainstituut Joonistamine Joonistamine realiseerub Scratch’is mingi objekti skripti abil, milles

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Joonistamine

TTÜ informaatikainstituut

Joonistamine

Joonistamine realiseerub Scratch’is mingi objekti skripti abil, milles kasutatakse plokke grupist Pliiats. Selleks objektiks võib olla Scratch’i sprait Pensil või mõni muu selleks eesmärgiks tekitatud objekt.Joonistatavaid objekte võib olla ka mitu ning need võivad tegutseda kas kordamööda või üheaegselt.

SisuSirg- ja kõverjoonte joonistamine3Koordinaatsüsteemid5Scratch’i koordinaatsüsteem5Parameetrilised koordinaadid5Polaarkoordinaadid6Joonistamise projektid Scratch’is7Projektid siinus.sb ja koosinus.sb7Projekt ring_polar.sb9Projekt ring_polar_1.sb10Soovituslikud ülesanded10Projekt ellips_1.sb11Projekt ellips_2.sb13Soovituslikud ülesanded13Projekt astroid.sb14Soovituslikud ülesanded14Projekt lill.sb15Soovituslikud ülesanded15Projekt a_spiraal.sb16

Sirg- ja kõverjoonte joonistamineSirgete ja kõverate (graafikute) joonistamiseks laval on vaja kõigepealt arvutada graafiku punktide koordinaadid x ja y. Koordinaatide väärtused arvutatakse korduses igal sammul ja vastav punkt ning joon selle punktini joonistatakse ploki pliiast all (pen down) abil grupist Pliiats (Pen). Joonistamise plokid ja nendele vastavad tegevused on kirjeldatud järgmises tabelis. Plokid Selgitused   Kustutab pliiatsi joonised ja spraitide jäljendi Laval   Laseb pliiatsi alla, liikumisel see joonistab   Tõstab pliiatsi üles, liikumisel ei teki joont   Muudab pliiatsi värvi valikuga paletist pipeti abil    Muudab pliiatsi värvi antud väärtuse võrra  Võtab pliiatsi värviks antud väärtuse: kui väärtus on 0, siis värviringi punane, kui 100, siis sinine   Muudab pliiatsi värvitooni antud väärtuse võrra    Võtab pliiatsi värvuseks antud väärtuse: kui väärtus on 0, siis väga tume, kui väärtus on 100, siis väga hele   Muudab pliiatsi suurust antud väärtuse võrra    Võtab pliiatsi suuruseks antud väärtuse   Jätab spraidi pildi jäljendi Lavale

Näite pildil olev lihtne joon saadakse skripti abil, mille täidab sprait Joonistaja (zig_zag.sb). Selles skriptis täidetakse viis korda punkti koordinaatide x ja y arvutamist ja punkti jälje tekitamist. Kõigepealt skriptis kustutakse vana joon ning seejärel määratakse muutujate algväärtused. Muutuja i muudab väärtusi 1 ja -1 vahel ning neid väärtusi kasutatakse y väärtuste arvutamiseks.Koordinaatide väärtuste muutmiseks kasutatakse muutujat samm. Selle väärtus määratakse ning muudetakse laval liuguri abil. Igal kordusel x muutub ühe sammu võrra, y – kahe sammu võrra.Joonistaja algoritmJoonistaja skriptprotseduur Joonista kustutamuutujate algväärtustaminepliiats ülevalmine x:0 y: 0pliiats alljälgkordusvõta i= -1*ivõta x =x + sammvõta y =y + 2*i*sammmine x:x y: yjälglõpp korduslõpp

KoordinaatsüsteemidKasutatakse mitmeid koordinaatsüsteeme. Descartes'i koordinaatsüsteemi moodustavad tasapinnal kaks teineteise suhtes ristuvat telge X ja Y. Teljed lõikuvad punktis O, mis on koordinaatida alguspunkt. Kummalgi teljel on valitud positiivne suund. Igal punktil P tasapinnal on kaks koordinaati x ja y.Sageli saab kujundite (kõverate) võrrandeid Descartes'i koordinaatsüsteemist teisendada lihtsamale kujule, kasutades kas polaarvõrrandeid või parameetrilisi võrrandeid.Paljudes allpool kirjeldatud projektides ongi kõverjoonte esitamiseks kasutatakse parameetrilisi või polaarkooddinaate.Scratch’i koordinaatsüsteemLava (stage) on koht, kus võib näha, kuidas liiguvad ja toimivad stsenaariumitega lood, mängud ja animatsioonid. Spraidid liiguvad ja suhtlevad teiste spraitidega laval, mis on 480 ühikut lai ja 360 ühikut kõrge. Tegemist on tingühikutega, millele ei vasta mingit mõõtühikut. Lava keskpunkti x-koordinadi ja y-koordinaadi väärtuseks on 0.Kui liigutada hiire kursorit lava kohal võib näha jooksvaid koordinaate x-y lava all paremas nurgas kujul:Klõpsates lava oleku muutmise nuppe , saab valida väikese või suure lava. Väikese lava korral suureneb skriptide ala, mis on kasulik mahukamate programmide jaoks.Klõpsates esitlusoleku (Presentation Mode) nuppu , võib näha ja kasutada projekti tulemust täisekraanolekus. Sellest väljumiseks on vaja vajutada klahvi Esc või klõpsata noolt lava ülemises vasakpoolses nurgas.Sageli on joonte loomisel laval kasulik sisse tuua maastabitegur m, et joon oleks täielikult laval näha ja ei väljuks lava piiridest.Parameetrilised koordinaadidParameetriline esitus annab funktsiooni uurimisel olulise eelise nendel juhtudel, kui funktsioon on esitatud ilmutamata kujul ja selle teisendamine lihtsamale kujule on raskendatud ilma parameetriliste või polaarkoordinaatide kasutamiseta. Parameetrilises võrrandis muutujad x ja y esitatakse lisamuutuja t(parameetri) abil. Funktsiooni y=f(x) esitust kujul x=(t) ja y=(t), kus tT, {(t)|tT}=X ja tT(f((t))=(t))nimetatakse funktsiooni f parameetriliseks esituseks.Abstraktselt määrab parameetriline võrrand suhte võrrandite kogumina. Kõige lihtsam näide on parabooli võrrand y=x2, mlle võib esitada, kasutades parameetrid t, järgmiselt:x=t ja y=t2, kus -t<.Keerukamaks näiteks võiks olla ringjoone võrrand x2+y2=R2, mlle võib esitada parameetrilisel kujul järgmiselt:x=R*cos(t) ja y=R*sin(t), kus 0t<2.PolaarkoordinaadidPolaarkoordinaadid on kahemõõtmeline koordinaatsüsteem, kus iga punkt P tasandil on määratud üheselt kaugusega fikseeritud punktist (koordinaatide alguspunktist ehk poolusest) ning nurgaga fikseeritud suunaga.Polaarkoordinaatide kujutise tasapinnalisele ristkoordinaadistikule saab moodustada järgmiste võrranditega:x = *cos() ja y = *sin()

Joonistamise projektid Scratch’isEsitame kõigepealt mõnede lihtsamate graafikute joonistamise projektid:y = a*sin(bx)y = a*cos(bx)Projektid graafikute y=a*sin(bx)ja y=a*cos(bx)erinevad ainult kasutatava funktsiooni poolest.Projektid siinus.sb ja koosinus.sb (siinus.sb ja koosinus.sb)Nendes projektides on näidatud siinuse ja koosinuse graafikute loomine joonistamine objekti Joonistaja abil. Kasutatakse võrrandid y=a*sin(bx)ja y=a*cos(bx).Korrektse pildi saamiseks on kasutatud maastabitegur m, mille väärtus sõltub muutuja x algus ja lõpu väärtustest ning lava algus ja lõpu punktidest x-teljel.Andmeda ja b – funktsioonide parameetrid, kus a väärtus võib muutuda 5…160, (pildil a = 100; b väärtus võib muutuda 0,1…2,5, pildil b = 0,5. Kui b väärtus on suurem kui 2,5, siis graafik on liiga tihe.)Muutujad: x, ja y – argumendi ja funktsiooni väärtused; alg ja lõpp – muutuja x alg- ja lõppväärtused, lõpp = -alg, mõistlikud väärtused 5…50, pildil alg = -20, lõpp = 20; n – x ja y arvutatavate väärtuste arv (korduste arv), pildil n = 200; samm – x muutumise samm, mis võrdub (lõpp-alg)/n m – maastabitegur, mis võrdub 400/(lõpp-alg). Lava laius on 480 ühikut, me valisime graafiku laiuseks laval 400 ühikut.SpraididJoonistaja – üks skript kõikide väärtuste määramiseks ja graafikute joonistamiseks. Tööd alustab vajutamine rohelisele lipule.Allpool on toodud siinuse Joonistaja algoritm ja skript. Koosinuse Joonistaja on praktiliselt sama – siinuse funktsiooni asemel on ainult koosinuse funktsioon. Kuna siinuse ja koosinuse argumendid võetakse radiaanides, siis funktsioonid näevad välja järgmiselt: y = a*sin(180*b*x/3.14159) ja y = a*cos(180*b*x/3.14159).

Joonistaja algoritm Joonistaja skriptprotseduur Joonista pliiats ülevalkustutavõta a=100võta b=0.5võta lõpp=20võta alg=-lõppvõta m=400/(lõpp-algvõta n=200võta samm=(lõpp-alg)/nvõta x=algvõta y=a*sin(b*x)võta pliiatsi suuruseks 2mine x:alg*m y:ypliiats allkordus n kordamuuda x samm võrravõta y=a*sin(b*x)mine x:x*m y:ylõpp korduslõpp

Projekt ring_polar.sb (ring_polar.sb)Selles projektis on näidatud ringjoone joonistamine objekti Joonistaja abil. Kasutatakse ringjoone võrrandit polaarkoordinaatides = ro, kus ro on ringjoone raadius. Joone keskpunkt asub Lava punktis (0,0).Joonistamine toimub hulknurkade abil, kusjuures muutuja n väärtus määrab külgede arvu. Muutujate ro ja n väärtused määratakse ja muudetakse laval liuguri abil, kusjuures ro võib muutuda 20…150 ja n 3…75. Kui n on suurem kui 20, siis tekib ringjoon, muidu joonistatakse hulknurk. Näiteks, kui n = 4, saadakse ruut, kui n = 36, saadakse ringjoon.Ringjoone koordinaadid arvutatakse järgmiste võrrandite abil: = ro, x = *cos(), y = *sin()AndmedMuutujad: x, y – ringjoone punktide koordinaadid; ro – ringjoone raadius; fi – polaarnurk, mis muutub 0…n sammuga h; n – hulknurga külgede arv; h – nurga muutumise samm, mis võrdub 360/n.SpraitJoonistaja – üks skript ringjoone joonistamiseks. Skriptis määratakse muutujate fi ja h väärtused, kusjuures igas korduses suureneb fi väärtus suuruse h võrra. Tööd alustab vajutamine rohelisele lipule.Joonistaja algoritmJoonistaja skriptprotseduur Joonista pliiats ülevalkustutavõta fi=0võta h=360/nvõta pliiatsi suuruseks 2mine x:0 y: 0pliiats allkordus n kordavõta fi=fi + hvõta y=ro*sin(fi)võta x=ro*cos(fi)mine x:x y:ylõpp korduslõpp

Järgmises projektis on algandmete ja muutujate väärtuste määramine eraldatud joonistamisest ning antud üle Lava skriptile ning objektid suhtlevad omavahel teadete abil.Projekt ring_polar_1.sb (ring_polar_1.sb)Selles projektis on näidatud ringjoone joonistamine objekti Joonistaja abil. Kasutatakse ringjoone võrrandit polaarkoordinaatides = ro, kus ro on ringjoone raadius. Vaikimisi ro väärtus on 80, kuid seda saab muuta sisestades soovitud raadiuse suuruse vahemikus 20…150. Joonistamine toimub hulknurkade abil – muutuja n väärtus määrab külgede arvu. Vaikimisi on n väärtus 36, kuid seda saab muuta sisestades soovitud külgede arvu 3…75. Kui n on suurem kui 20, siis tekib ringjoon, muidu joonistatakse hulknurk. Näiteks, kui n=3, siis tulemuseks on kolmnurk. Ringjoone koordinaadid arvutatakse võrrandite abil: = ro, x = cos(), y = sin() jaAndmedMuutujad: x, y – ringjoone punktide koordinaadid; ro – ringjoone raadius; fi – polaarnurk, muutub 0…n sammuga h; n – hulknurga külgede arv; h – nurga muutumise samm, mis võrdub 360/n.SpraididSeletus – kasutusjuhend, kaks skripti: rohelise lipu skript ja hiireklõpsu skript (ilmub rohelise lipu vajutamisel). Hiireklõps sellel spraidil viib tegevused edasi teatega „andmed“.Lava – üks skript algandmete ja muutujate väärtuste määramiseks. Väärtused ro ja n valitakse kas vaikimisi või antakse võimalus sisestada andmeid klaviatuurilt. Pärast väärtuste määramist saadetakse teade „joonista“ Joonistajale.Joonistaja – üks skript ringjoone joonistamiseks. Tööd alustatakse teate „joonista“ saamisega lavalt. Korduseid täidetakse n korda. Korduvalt arvutatakse nurga ja koordinaatide väärtused ning joonistatakse vastav osa ringjoonest.Seletuse skriptidLava skript

Joonistaja skript

Soovituslikud ülesandedAndmete ja muutujate väärtuste määramine toimub juhuslike väärtuste abilProjekt ellips_1.sb (ellips_1.sb)Käesolevas projektis on näidatud ellipsi joonistamine objekti Joonistaja abil. Ellipsi joonistamisel kasutatakse koordinaatide x ja y arvutamiseks parameetrilisi võrrandid, milles parameetriks on nurk fi, mis muutub 0…n. Ellipsi suur pooltelg on a, väike pooltelg – b. Vaikimisi on a väärtus 150, b väärtus on 75, kuid neid saab muuta, sisestades soovitud suurused vastavalt vahemikest 10…200 ning 10...100. Joonistamine toimub hulknurkade abil, kusjuures muutuja n väärtus määrab külgede arvu. Vaikimisi on n väärtus 36, kuid seda saab muuta sisestades soovitud külgede arvu 3…75. Kui n on suurem 20, siis tekkib ellips, muidu joonistatakse hulknurk. Näiteks, kui n=3, saadakse kolmnurk.Ellipsi koordinaadid arvutatakse järgmiste võrrandite abil:x = a cos(), y = b sin()AndmedMuutujad: x, y – ellipsi punktide koordinaadid; fi – parameeter, mis muutub 0…n sammuga h; n – hulknurga külgede arv; h – nurga muutumise samm, mis võrdub 360/n.SpraididSeletus – kasutusjuhend, kaks skripti: rohelise lipu skript ja hiireklõpsu skript. Rohelisele lipule vajutamisel ilmub lavale seletus. Hiireklõps sellel spraidil viib tegevused edasi teate „andmed“ abil.Lava – üks skript algandmete ja muutujate väärtuste määramiseks. Väärtused a, b ja n määratakse vaikimisi või antakse võimalus sisestada andmeid klaviatuurilt. Pärast väärtuste omistamist saadetakse teade „joonista“ Joonistajale.Joonistaja – üks skript ellipsi joonistamiseks. Tööd alustatakse teate „joonista“ saamisega lavalt. Kordust täidetakse n korda. Korduvalt arvutatakse nurga ja koordinaatide väärtused ning joonistatakse vastav osa ellipsist. Kõikide objektide skriptid on analoogilised eelmise projekti skriptidele.Joonistaja skriptLava skript

Projekt ellips_2.sb (ellips_2.sb)Selles projektis on näidatud ellipsi joonistamine objekti Joonistaja abil. Ellipsi joonistamisel kasutatakse koordinaatide x ja y arvutamiseks parameetrilisi võrrandid, milles parameetriks on nurk fi, mis muutub 0…n. Ellipsi suur pooltelg on a, väike pooltelg – b. Vaikimisi on a väärtus 150 ja b väärtus 75, kuid neid saab muuta, sisestades soovitud suurused vastavalt vahemikest 10…200 ning 10 ... 100. Joonistamine toimub hulknurkade abil, kusjuures muutuja n väärtus määrab külgede arvu. Vaikimisi on n väärtus 36, kuid seda saab muuta, sisestades soovitud külgede arvu 3…75 klaviatuurilt. Kui n on suurem kui 20, siis tekib ellips, muidu joonistatakse hulknurk. Näiteks, kui n=3, saadakse kolmnurk.Ellipsi koordinaadid arvutatakse võrrandite abil: x = a cos(), y = b sin()AndmedMuutujad: x, y – ellipsi punktide koordinaadid; fi – parameeter, muutub 0…n sammuga h; n – hulknurga külgede arv; h – nurga muutumise samm, mis võrdub 360/n.SpraididKraps – üks skript seletuste andmiseks ning algandmete ja muutujate väärtuste määramiseks (täidab eelmise projekti kahe objekti tegevused). Tööd alustatakse vajutamisel rohelisele lipule. Väärtused a, b ja n valitakse kas vaikimisi või antakse võimalus sisestada andmeid klaviatuurilt. Pärast väärtuste määramist saadetakse teade „joonista“ Joonistajale. Kui Joonestaja lõpetab oma töö, ütleb Kraps: „Valmis!“Joonistaja – üks skript ellipsi joonistamiseks. Joonistaja alustab töö teate „joonista“ saamisel Krapsult. Kordust täidetakse n korda. Korduvalt arvutatakse nurga ja koordinaatide väärtused ning joonistatakse vastav osa ellipsist. Joonistaja skript on sama nagu projektis ellips_1.sb. Kraps ja Joonistaja suhtlevad omavahel teadete abil. Krapsu skript (Soovituslikud ülesandedAndmete ja muutujate väärtuste määramine toimub juhuslike väärtuste abilAndmete ja muutujate väärtuste määramine toimub liugurite abil laval)Projekt astroid.sb (astroid.sb)Projektis on näidatud astroidi joonistamine objekti Joonistaja abil. Koordinaatide x ja y arvutamiseks kasutatakse astroidi punktide parameetrilisi võrrandid, kus parameetriks on nurk t, mis muutub vahemikus 0o…360o. Astroidi pooltelg a määrab kujundi suurust. Muutuja a väärtus on näites 160, kuid see väärtus võib muuta vahemikus 10…160.Astroidi koordinaadid arvutatakse järgmiste võrrandite abil: x = a cos3(t), y = a sin3(t) 0 t 360oAndmedMuutujad: x, y – astroidi punktide koordinaadid; t – parameeter, muutub 0…360 sammuga 1.SpraitJoonistaja – üks skript astroidi joonistamiseks. Tööd alustatakse vajutamisel rohelisele lipule. Kordust täidetakse 360 korda. Korduvalt arvutatakse nurga t ja koordinaatide x ja y väärtused ning joonistatakse vastav osa astroidist.Joonistaja algoritmJoonistaja skriptprotseduur Joonista pliiats ülevalkustutavõta a=160võta t=0võta pliiatsi suuruseks 2võta pliiatsi värviks 12mine x:a y: 0pliiats allkordus 360 kordavõta t=t + 1võta y=ro*sin3(t)võta x=ro*cos3(t)mine x:x y:ylõpp korduslõpp

Soovituslikud ülesandedAndmete ja muutujate väärtuste määramine toimub juhuslike väärtuste abilAndmete ja muutujate väärtuste määramine toimub liugurite abil lavalAndmete ja muutujate väärtuste määramine on antud üle lavale või mõne teise objektile.Projekt lill.sb (Lill.sb)Projektis on näidatud õiekujulise kõvera (lille) joonistamist objekti Joonistaja abil. Kasutatakse lille võrrandit polaarkoordinaatides = a*sin(b*), kus on polaarraadius ja – polaarnurk. Muutuja a väärtuseks on kroonlehe pikkus ja b väärtuseks kroonlehtede arv. Joone koordinaadid arvutatakse järgmiste võrrandite abil: = a*sin(b*), x = cos(), y = sin() Andmed (Pilt 3 Kroonlehtede arv on 150) (Pilt 1 Kroonlehtede arv on 1) (Pilt 2 Kroonlehtede arv on 9)Muutujad: x, y – joone punktide koordinaadid; ro – polaarraadius; fi – polaarnurk, muutub 0o…180o sammuga 1o; a – kroonlehe pikkus, mis võib muutuda 50…160; b – kroonlehtede arv, mis võib muutuda 1…150. Kui b võrdub 1, siis tekib ringjoon, kui b väärtus on suurem 150, siis kroonlehe laius muutub väga kitsaks.Skript:Joonistaja – üks skript lille joonistamiseks. Tööd alustatakse vajutamisega rohelisele lipule. Seejärel küsitakse kroonlehtede arvu ja lille värvust. Värvi küsimisel pakutakse mõnede värvide väärtused.Kordust täidetakse 180 korda. Korduvalt arvutatakse ro, fi ja koordinaatide x ja y väärtused ning joonistatakse vastav osa lillest.

Soovituslikud ülesandedAndmete ja muutujate väärtuste määramine toimub kindlastes piirides juhuslike väärtuste abilAndmete ja muutujate väärtuste määramine toimub liugurite abil lavalAndmete ja muutujate väärtuste määramine on antud üle lavale või mõne teise objektile.Projekt a_spiraal.sb (a_spiraal.sb)Projektis on näidatud Arhimeedese spiraali joonistamist objekti Joonistaja abil. Kasutatakse lille võrrandit polaarkoordinaatides = a *, kus on polaarraadius ja – polaarnurk. Selleks et spiraal mahuks ilusti lavale, kasutatakse maastabitegur m. Muutuja k määrab keerdude arvu, muutuja a väärtus on k/m ja see peaks olema väiksem kui 1/20. Muutuja a väärtusest sõltub spiraali keerdude vaheline kaugus. Joone koordinaadid arvutatakse järgmiste võrrandite abil: = a*, x = cos(), y = sin() AndmedMuutujad: x, y – spiraali punktide koordinaadid; ro – polaarraadius; fi – polaarnurk, muutub 0-st kuni n-ni sammuga h; n – korduste arv, sõltub k väärtusest; h – nurga muutumise samm, mis võrdub 360*k/n. k – keerdude arv, mida suurem k, seda suurem peab olema maastabitegur m; a – keerdude vaheline kaugus, võrdub k/m, võiks olla väiksem kui 0,05. (Pilt 1 k = 5, m = 100, a = 0,05) (Pilt 2 k = 5, m = 70, a = 5/70)

SpraididLava – üks skript algandmete ja muutujate väärtuste määramiseks. Pärast väärtuste omistamist saadetakse teade „joonista“ Joonistajale.Joonistaja – üks skript spiraali joonistamiseks. Tööd alustatakse teate „joonista“ saamisega lavalt. Kordust täidetakse n korda. Korduvalt arvutatakse nurga ja koordinaatide väärtused ning joonistatakse vastav osa spiraalisist. Lava skript:Joonistaja skript:

2

2

y

x

+

=

r

x

y

tg

=

j