(toiminnot)

hwechtla-tl: Teema 6: kaikkein tärkein aihe: viime muutokset

[...]

Jos haluaa lisätä jollekin kuviolle koko-syötteen suoraviivaisesti, kaikkein helpoin tapa on kuitenkin vain raa'asti kertoa kaikki pituudet koko-muuttujalla. Nimittäin kun kaikki pituudet kerrotaan samalla numerolla, pituuksien suhteet säilyvät, jolloin kuvion muoto säilyy.

Tehdään vaikkapa tällainen A-kirjain:

{{{ ? miten akirjain > oi 30 > et 100 > oi 120 > et 100 > oi 180 > et 50 > va 60 > et 50 > valmis }}}

Nyt, jos haluamme tehdä vaihtelevan kokoisia A-kirjaimia, helpoin tapa on muokata ohjelmaa näin:

{{{ ? muo "akirjain }}}

{{{ miten akirjain :koko oi 30 et 100 * :koko oi 120 et 100 * :koko oi 180 et 50 * :koko va 60 et 50 * :koko valmis }}}

Nyt "akirjain 1" tuottaa normaalikokoisen A-kirjaimen, "akirjain 2" kaksi kertaa isomman ja "akirjain 1/4" neljä kertaa pienemmän.

Muuta nyt joitain ohjelmiasi sellaisiksi, että niille annetaan mittoja syötteeksi.

!!! Harjoitus 6d: monta syötettä

Ehkä kaikkein "oikein" ratkaisu on lisätä molemmat, nuolelle sekä leveys että pituus, pituus erikseen syötteiksi, koska silloin nuoli-ohjelmalla voi tehdä kaikenlaisia nuolia: nuolia.

[...]

Miten-riville voi siis lisätä kuinka monta syötettä haluaa. Jos nyt esimerkiksi annamme komennon "nuoli 100 50", niin :pituus on nuolta piirrettäessä 100 ja :leveys on 50. Jos taas sanomme "nuoli 30 35", niin :pituus on 30 ja :leveys 35. Logo sitten asettelee nämä luvut paikoilleen.

Nyt ainakin saamme aikaan vaikka minkälaisia nuolia. Huomaa, tässä Seuraavassa nuoli-komento ottaa siis kaksi syötettä, joista toinen on "130-kerta" ja toinen on "kerta/2". "kerta/2":

{{{ ? piiloon ? toista 100 [uusi va kerta nuoli 130-kerta kerta/2 odota 1] }}}

Jos haluaa lisätä kuviolle koko-syötteen suoraviivaisesti, kaikkein helpoin tapa Malliesimerkki ohjelmasta, joka vaatii monta syötettä, on kuitenkin vain raa'asti kertoa kaikki pituudet koko-muuttujalla. Nimittäin kun kaikki pituudet kerrotaan samalla numerolla, pituuksien suhteet säilyvät, jolloin kuvion muoto säilyy. kaari. Kaarilla on sekä pituus että astekulma, jonka ne kääntyvät. Tarkastellaan kaario:n määritelmää:

TODO {{{ ? näytä "kaario miten kaario toi 90 [et 1 oi 1] valmis }}}

Tässä kaaren pituus on 90 askelta, sillä lennokki menee eteenpäin yhden askeleen kerrallaan 90 kertaa. Samoin kaaren käännös on 90 astetta, koska siinä käännytään yksi aste kerrallaan 90 kertaa.

Lisätään kaariolle ensin vaikkapa :pituus-syöte:

{{{ ? muo "kaario }}}

{{{ miten kaario :pituus toi :pituus [et 1 oi 1] valmis }}}

Hienoa, nyt saamme haluamamme mittaisia kaaria:

{{{ ? toista 10 [kaario 10*kerta va 30] }}}

Mutta nyt :pituus vaikuttaa myös siihen, kuinka paljon kaari kääntyy. Jotta vaikutus saataisiin kumotuksi, kääntymismäärä käskyssä "oi 1" pitää olla jokin luku ''jaettuna'' toistokertojen määrällä. Silloin käännymme yhteensä saman verran riippumatta siitä, kuinka monta kertaa menemme eteenpäin.

{{{ ? muo "kaario }}}

{{{ miten kaario :pituus toi :pituus [et 1 oi 90/:pituus] valmis }}}

Mahtavaa, nyt pystymme tekemään aina 90 astetta kääntyviä kaaria riippumatta siitä, kuinka pitkiä ne ovat!

{{{ ? uusi ? toista 10 [kaario 10*kerta oi 90] }}}

Lopuksi voimme tietysti korvata kiinteän 90 asteen käännöksen jollain muulla luvulla, joka annetaan syötteeksi:

{{{ ? muo "kaario }}}

{{{ miten kaario :pituus :kulma toi :pituus [et 1 oi :kulma/:pituus] valmis }}}

Nyt voimme muutella sekä kaaren pituutta kääntymismäärästä riippumatta että kääntymismäärää pituudesta riippumatta.

{{{ ? toista 200 [uusi kaario kerta 200 * sin 5 * kerta odota 1] }}}

Kokeile nyt tehdä esimerkiksi nuoli, jossa pystyy muuttamaan sekä nuolen kokoa että nuolen pään terävyyttä.

!!! Harjoitus 6d: 6e: tiedon välittämistä eteenpäin

[...]


(viimeksi muutettu 02.05.2014 16:31)