|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
5. lecke - Falevelek, virágok leveleiJUHARFALEVÉLEbben a leckében különböző növények leveleit próbáljuk megrajzolni LOGO-ban.
Kétféle módszerrel is megrajzoljuk ezt a levelet. Először egy egyszerűbb eljárást választunk,melyben csak szabályos háromszögre és téglalapra van szükségünk. Írjunk olyan eljárást, melynek paramétere a hossz és a szín, és adott oldalhosszúságú, adott színű, kitöltött szabályos háromszöget rajzol! (Ha van már háromszög eljárásunk, akkor azt is felhasználhatjuk, csak a kitöltéssel kell kiegészíteni). Ahhoz, hogy a háromszög ne a csúcsára fordítva álljon, hanem alapja vízszintes legyen, a teknőcöt először elfordítjuk jobbra 30 fokkal, majd a végén visszafordítjuk.
Próbáld ki! szabháromszög 100 9 szabháromszög 50 12 Ugyanígy írjunk egy téglalap eljárást, mely adott oldalhosszúságú, adott színű, kitöltött téglalapot rajzol. A téglalap eljárásnak már három paramétere lesz, mivel két különböző hosszúságú oldala van, és még a színt is meg kell adnunk. A három paraméter tehát legyen a, b és szín.
Próbáld ki! téglalap 60 100 5 téglalap 70 30 12 Most pedig építsük össze ezt a két alakzatot úgy, hogy megkapjuk a juharfa levelének egy "szirmát". Ehhez a téglalap tetejére kell rajzolnunk egy picike szabályos háromszöget. A háromszög oldalhossza legyen a téglalap b oldalának egyharmada. Ahhoz, hogy a háromszög középen legyen, a téglalap felső (b) oldalának egyharmadánál kell elkezdeni a rajzolását. a háromszög megrajzolása után pedig visszamegyünk a téglalap bal alsó sarkába, ahol a rajzolást elkezdtük. Egy eljárás mindig akkor igazán elegáns, ha a teknőc az eljárás végén ugyanott és ugyanúgy áll, mint az eljárás kezdetekor.
Próbáld ki! szirom 100 100 6 szirom 200 100 12 Nincs más hátra, minthogy megrajzoljuk magát a levelet. Ehhez rajzolni kell három szirmot, melyből kettő kisebb, és el van forgatva 50 fokkal (az egyik balra, a másik jobbra), a végén pedig egy szárat.
Látszik, hogy csak egyetlen méretet adtunk meg, a méret paraméter a legnagyobb szirom hosszabbik, függőleges oldalának hosszát jelenti. A legnagyobb szirom rövidebbik oldala ennek 2/3 része, azaz méret*2/3, a kisebb szirmok hosszabbik oldala méret/2, rövidebbik oldala pedig méret/3 hosszú. Fontos tudnunk, hogy a szirmokat a bal alsó sarkukból tudjuk megrajzolni. Először megrajzoltuk a legnagyobb szirmot, majd a végpontjából megrajzoltuk a bal oldali szirmot 50 fokkal balra fordulva, és visszafordultunk az eredeti irányba. Ezután jön az egyetlen nehézség, hiszen meg kell találnunk a jobb oldali kisebb szirom kezdőpontját, azaz bal alsó sarkát. 90 fokot jobbra fordulva (és a tollat felemelve) végigsétáltunk tehát a legnagyobb szirom alsó, vízszintes oldalán. Balra fordulva 40 fokot előre mentünk annyit, amennyi a kisebb szirom alsó oldalának hossza. Így elértünk a kisebb szirom bal alsó sarkába, csak irányba kellett állnunk a kisebb szirom megrajzolásához, ezért fordultunk 90 fokot jobbra. Ezután visszamentünk a nagy szirom kezdőpontjába, de félúton még megálltunk, hogy lefelé fordulva, 3-as tollvastagsággal megrajzoljuk a szárat. Ha pontosabb, a zászlóhoz jobban hasonlító levelet szeretnénk rajzolni, ennél kicsit bonyolultabb eljárásra van szükségünk. Elöljáróban ismerkedjünk meg egy olyan paranccsal, amely leegyszerűsíti azt, hogy ugyanoda visszataláljunk mindig, ahonnan az eljárást kezdtük. Eddig nem tudtunk mást csinálni, mint felemelt tollal visszasétáltunk ugyanazon az útvonalon, amin jöttünk. Ennél azonban egyszerűbb, ha megjegyezzük a hely "címét", ahonnan indulunk, és az eljárás végén visszaugrunk erre a "címre". Természetesen, ha az eljárás közben szükség van rá, bármilyen "címre" elugorhatunk. A parancs, mellyel ezt megtehetjük, a hely!, ezután kell megadni a címet. A cím tulajdonképpen koordinátákat jelent, ugyanúgy, mintha egy nagy koordináta-rendszerben mozognánk. A helyet természetesen az x és y koordinátával, azaz egy számpárral kell megadni, amit most szögletes zárójelek közé kell majd tenni. A kiindulópont, azaz a [0 0] a képernyő közepe. Ha az első számot (az x koordinátát) növeljük, akkor jobbra mozdulunk el, ha csökkentjük, akkor balra. Tehát a hely! [0 0] paranccsal mindig visszaugorhatunk a képernyő közepére, ugyanúgy, mintha a haza parancsot adnánk ki. A hely! [300 0] a képernyő jobb széle felé ugrik, a hely! [-412 0] a képernyő bal széle felé. Ha a második számot növeljük, akkor felfelé tudunk ugrani, ha csökkentjük, akkor lefelé. Tehát például a hely! [0 300] a képernyő felső széle felé ugrik, a hely! [478 305] a képernyő jobb felső sarka felé, a hely! [300 -200] pedig a jobb alsó sarok felé. Vigyázat! A hely! parancs kiadása előtt ne felejtsük el felemelni a tollat, különben az ugrás közben a teknőc vonalat is fog húzni! Létezik még egy parancs, mely egyszerűsíti a teknőc irányítását, ez pedig az irány!, mely azt állítja be, hogy merre nézzen a teknőc. Az irány! 0 jelenti azt, hogy a teknőc függőlegesen felfelé néz, és amilyen számot írunk a parancs után, az határozza meg, hogy a teknőc jobbra hány fokot forduljon. Tehát irány! 90 esetén a teknőc jobbra fog nézni, irány! 180 esetén lefelé, irány! 270 esetén balra, irány! 360 pedig ugyanazt jelenti, mint az irány! 0, azaz ugyanúgy felfelé fog tőle nézni a teknőc (két parancs ugyanazt jelenti, ha bennük a számok között pontosan 360 a különbség). Természetesen bármilyen más számot is írhatunk a parancs után, ha kicsit akarjuk a teknőcöt jobbra fordítani, akkor kis számot kell írnunk, pl. irány! 20, ha pedig balra szeretnénk fordíta-ni, akkor vagy 360-hoz közeli számot kell írnunk, vagy negatív kicsi számot. Például, ha balra szeretnénk a teknőcöt 20 fokkal fordítani, az irány! -20 és az irány! 340 parancs egyaránt megfelel. Ezek után nézzük az eljárást, melyben nem használunk síkidomokat, hanem a levél körvonalát magunktól rajzoljuk meg, majd kitöltjük a rajzolt alakzatot. Tehát az eljárásban semmi trükk nincs, azt, hogy mennyit menjünk előre, és mennyit forduljunk, próbálkozással döntöttük el.
KITÉRŐ - KÖRCIKKEKIsmételjük át az előző leckéből azt az eljárást, mely a kör közepéből kezdve rajzol körívet. Erre ugyanis szükségünk lesz a körcikk rajzolásához. A körcikket úgy lehet elképzelni, mint egy körlap egy szeletét. Például a torta- vagy pizzaszeletek is felülről nézve körcikk alakúak. Az előző leckében tanult körívek segítségével könnyen rajzolhatunk körcikket, hiszen a körív két végét csak össze kell kötni a kör közepével (az összekötő vonalak tulajdonképpen a kör sugarai). Ezért ismételjük át, hogyan rajzoltunk körívet a kör közepéből kezdve: tanuld körív3 :sugár :szög Nincs más teendőnk, minthogy ne emeljük fel a tollat, amikor a kör közepéből kimegyünk a körvonalra a rajzoláshoz. Ugyanígy ne emeljük fel a tollat, amikor a körív megrajzolása után visszamegyünk a kör közepére. Ezután már csak ki kell töltenünk a körcikket valamilyen véletlenszerű színnel és mintával, és csak azután fordulunk az eredeti irányba. tanuld körcikk :sugár :szög Ha ennél érdekesebb körcikkeket szeretnénk kapni, kiegészíthetjük az eljárást a körcikk kitöltésével is. tanuld körcikkszínes :sugár :szög Ennél az eljárásnál azonban nekünk kell beállítnunk az eljárás meghívása előtt a tollszínt, a töltőszínt és a töltőmintát. Ha meglepetésszerű színeket szeretnénk, akkor beleírhatjuk az eljárásba a színek beállítását véletlenszámok segítségével.
Ha például ezt az eljárás szög paraméterének 180-at adunk meg, akkor félköröket kapunk. Több félkörből az alábbiakhoz hasonló mintákat kapunk: TAVIRÓZSA
KITÉRŐ - AZ RGB-SZÍNKÓDEzeknél a szép leveleknél jó lenne, ha több színből választhatnánk, nem csak abból a 16-ból, amit eddig ismerünk. Szerencsére teknőcünk jóval több színárnyalatot ismer ennél, a kérdés csak az, hogyan kell őt megkérni, hogy ezeket használja. Van a színeknek egy olyan megadása, amikor a színeket gondolatban a három alapszínből, a pirosból, a zöldből és a kékből keverjük ki, és azt mondjuk meg három szám segítségével, hogy mennyi pirosat, zöldet és kéket kell belekeverni. Olyan, mintha lenne 3 tubus festékünk, mindig piros-zöld-kék sorrendben, és ezekből kevernénk ki az összes létező színt. Tehát három darab számra van szükségünk, melyek 0 és 255 között változhatnak. 0-t írunk arra a helyre, amelyik tubusból egyáltalán nem szeretnénk venni, és 255-öt, ha az egész tubust bele szeretnénk keverni az új színbe. A számokat mindig piros-zöld-kék sorrendben kell tehát leírnunk, innen ered a leírás neve, az RGB-kód, ugyanis angolul ezek a színek: Red, Green és Blue, ezek kezdőbetűinek segítségével nevezték el a leírást. A számokat most is szögletes zárójelbe kell tennünk, ha a teknőcnek szeretnénk adni őket. Azt kell még megjegyeznünk, hogy furcsa módon ezek nagyon különleges festékek, mert minél többet teszünk egy tubusból, annál világosabb lesz a szín, minél kevesebbet, annál sötétebb. Nézzünk néhány példát erre a kódra: a [0 0 0] tehát a létező legsötétebb színt jelenti, vagyis a feketét. A [255 255 255] ezek szerint a létező legvilágosabb szín, vagyis a fehér. A [255 0 0] azt jelenti, hogy a piros tubust felhasználtuk, a többiből viszont nem vettünk, így piros színt kapunk. A [0 200 200] pedig azt, hogy pirosat nem használtunk, a zöldből és kékből pontosan ugyanannyit, ezért kékes-zöld színt fogunk kapni. Mindkét tubusból sokat használtunk, ezért viszonylag világos lesz a szín. A [200 0 200] a pirosnak és a kéknek a keveréke, azaz lila. Ha játsszunk vele egy kicsit, és több pirosat rakunk bele, meglátjuk, hogy például a [230 0 180] rózsaszínes lila lesz, ha több kéket, például a [180 0 230] kékes lila.
De ugyanígy eljátszhatunk a zöld, barna, sárga vagy akármelyik másik színnel is:
A színeknek ilyen megadását felhasználhatjuk akár a tollszín!, akár a töltőszín! parancs után. Már meglévő levél-eljárásainkon is javíthatunk, ha nem az adott 16 szín közül választunk, hanem ezzel a módszerrel keverünk színeket. Nézzük meg például, hogy a kanadai zászlón a juharlevél nem igazán piros, inkább bordó. Próbáljuk ki, hogy mit kapunk, ha az eljárásunkat kijavítjuk, és a tollszín! 12 valamint töltőszín! 12 parancsok helyett tollszín! [200 10 10] és töltőszín [200 10 10] parancsokat írunk! Ugyanígy a tavirózsa levelének is adhatunk szebb színt, tollszín! 2 és töltőszín! 2 helyett írjuk inkább a tollszín! [0 90 0] és töltőszín! [0 90 0] parancsokat! Ha kicserélted a tavirózsa eljárásban a színt, akkor a következő eljárással ugyanolyan tavirózsákkal teli tavat tudsz rajzolni, amilyet én:
FALEVÉL
Ahhoz, hogy a levél mindkét szélét könnyedén megrajzoljuk, kétféle ív-eljárást fogunk írni: egy jobbra rajzolót és egy balra rajzolót. Így a végén csak ugyanonnan kiindulva rajzolunk egy jobbívet, majd egy balívet, kitöltjük, szárat rajzolunk neki, és kész a levél!
Ekkor azonban mindig csak ugyanakkora íveket tudunk rajzolni, ami nem túl jó, hiszen így csak egyféle mérető levelet tudunk majd rajzolni a segítségükkel. A méretet jobb lenne paraméterként megadni. Azt fogjuk a paraméterrel megmondani, hogy az első ismétlésen belül minden egyes lépésben mennyit menjen előre a teknőc. A második ismétlésnél ennek kétszeresét teszi majd meg minden lépésben. Vigyázat! A meghívásnál mindig figyeljünk arra, hogy ez a lépéshossz nagyon kicsi kell, hogy legyen ahhoz, hogy az ív elférjen a képernyőn. Például egy 0 és 2 közötti számmal (lehet tizedestört is) kellő méretű íveket kapunk.
Próbáld ki! falevél 0,5 [70 0 0] falevél 0,7 [250 240 10] falevél 0,85 [0 40 0] EREZETT FALEVÉLMost pedig rajzoljuk meg a levél erezetét is! Ehhez először külön írunk egy erek nevű eljárást, mely csak a levél egyik felének erezetét rajzolja meg, levél nélkül. Az erek eljárásnak két paramétere van, az egyik a szög, mely megmutatja, hogy a függőleges főérből milyen szöggel induljanak ki a mellékerek, a másik a méret, mely egy kicsi lépés hosszát, a legrövidebb ér tizedét jelenti (ezért mindig nagyon kicsinek kell választatni, akár 1-nek). Ha a szöget pozitívnak választjuk (például 45°), akkor a bal oldali erezetet, ha negatívnak (például -45°), akkor a jobb oldali erezetet rajzolja meg (tehát a teljes erezet megrajzolásához kétszer kell majd ezt az eljárást meghívnunk, egyszer pozitív, egyszer negatív szöggel). tanuld erek :szög :méret Ezek után az eres levelet rajzoló eljárásunk már egyszerű lesz:
Próbáld ki! eresfalevél 1 [0 40 0] 1 Ha pedig egyre kisebb, különböző színű leveleket rajzolunk egymásra, a végén pedig egy eres falevelet még rájuk, akkor gyönyörű őszi levelet kapunk:
Sőt! Még több színt is használhatunk!
TÖLGYFALEVÉL
Ehhez az előző leckében megírt körív eljárásra lesz szükségünk, mégpedig arra, amelyik a sugár és a szög megadásával a kör vonaláról kezdi rajzolni a körívet. Lássuk, hogy is volt ez az eljárás: tanuld körív2 :sugár :szög Ez tulajdonképpen egy jobbra rajzoló körív-eljárás, tehát akár körívj-nek is nevezhetnénk. Írjuk meg a párját, a balra rajzoló eljárást is:
Ezt felhasználva meg tudjuk írni tölgylevél rajzoló eljárásunkat:
GESZTENYEFALEVÉL
Egy-egy levélkét, ha alulról, a szára felől rajzoljuk, akkor láthatjuk, hogy egyenes vonallal indul, majd jön egy körív, ezzel nagyjából elértünk a levél csúcsáig. Nehézséget jelent azonban, hogy a levélnek hullámos a széle. Ezért nem elég egyszerű vonalból és körívből megrajzolni, ahogy a fale-velet rajzoltuk, hanem olyan körív kell, mely apró kis hullámokból áll. Két kis hullám között mindig előre megyünk egy picit. Nézzük először az első, kis hullámokból álló egyenes szakaszt, ennek egyetlen paramétere a méret lesz: ismétlés :méret * 10 [előre 2 balra 90 körívj 3 180 balra 90] Ezután jön a kis hullámokból álló ív: ismétlés 12 [előre :méret balra 90 körívj :méret 180 balra 85] A végén pedig, ahhoz, hogy ténylegesen elérjünk a levél csúcsáig, még egy egyszerű kicsi körívet fogunk rajzolni. A levél felének megrajzolása után pedig mindent ugyanúgy kell megrajzolni még egyszer, csak pont a másik irányba, azaz az összes parancsban ki kell cserélni a balra utasítást jobbra utasításra, és fordítva. Az eljárásnak két paramétere lesz, a méret, és az irány, hogy könnyen tudjuk majd a segítségével mind az öt levélkét megrajzolni. Az eljárásban felhasználjuk a juharfa-levélnél megismert hely! és irány! parancsokat is.
Ezzel az eljárással már könnyen rajzolhatunk egy teljes gesztenye-levelet:
BEKÜLDENDŐ FELADATOK1. FELADAT
2. FELADAT
3. FELADAT
4. FELADATKészíts saját színes levelet! Le tudod utánozni még valamelyik létező növénynek a levelét?
|