5. Ufo rullaa: modulo
Kirjoita apufunktio, joka palauttaa y:n välille 0 – 500. Käytä siihen
moduloa, joka palauttaa osamäärän (y/500) jakojäännöksen.
(define (piirrä-rullaava y)
(piirrä-kuva (modulo y 500)))
Vaihda apufunktio big-bang:iin:
(big-bang 0
(to-draw piirrä-rullaava)
(on-tick add1))
5
6. Ufo laskeutuu ja nousee
Lisää cond:lla ehdot ufon käyttäytymiselle eri väleillä:
(define (piirrä-kuva y)
(cond [(<= 0 y 500)
(place-image UFO 150 y (empty-scene 300 500))]
[(<= 501 y 1000)
(place-image UFO 150 (- 1000 y) (empty-scene 300 500))]
[else
(text "Loppu" 30 "red")]))
Vaihda moduloon uusi jakaja: 1000
(define (piirrä-rullaava y)
(piirrä-kuva (modulo y 1000)))
6
7. Painovoima-animaatio
7
Simuloidaan kahta palloa, joista punainen pallo putoaa
kuussa ja sininen pallo maassa. Lopuksi piirretään liikkeen
kuvaajat.
Animaatiopohja, johon täydennetään funktiot, joitka
kuvaavat matkan riippuvuutta ajasta.
𝑠 𝑡 =
1
2
𝑔𝑡2
Täydennä vakiot:
(define g-maa 0)
(define g-kuu 0)
Täydennä funktiot (myös check-expect) valmiiksi:
(define (matka-kuussa t)
0)
(define (matka-maassa t)
0) Valmis animaatio
8. plot2D – kuvaajat
Yksi kuvaaja piirretään näin (0 < t < 100):
(require teachpacks/plot2D)
(plot2D (func matka-kuussa 0 100))
Kaksi kuvaajaa samaan kuvaan piirretään näin
(0 < t < 100):
(plot2D (list
(func matka-kuussa 0 100 ”kuussa”)
(func matka-maassa 0 100 ”maassa”)
”aika (s)”
”matka (m)”))
8
9. Heiluri-animaatio
Animaatiopohja, johon täydennetään funktio,
joka kuvaa heilurin kulman (theta) riippuvuutta
ajasta:
θ 𝑡 = θ0 cos
𝑔
𝐿
𝑡
Jossa θ0 on lähtökulma ja L heilurin pituus.
Täydennä vakiot:
(define g 0)
Täydennä funktio valmiiksi:
(define (theta t)
0)
Piirrä myös kuvaaja:
(require teachpacks/plot2D)
(plot2D (func theta 0 100))
9
Valmis
animaatio
10. Auto-animaatio
Simuloidaan kahta autoa, joilla on eri nopeudet. Lopuksi piirretään liikkeen kuvaajat.
Animaatiopohja, johon täydennetään funktiot, joitka kuvaavat matkan riippuvuutta ajasta.
𝑠 𝑡 = 𝑣𝑡
Täydennä funktiot (myös check-expect) valmiiksi:
(define (s1 t)
0)
(define (s2 t)
0)
Piirrä myös kuvaaja:
(require teachpacks/plot2D)
(plot2D
(list
(func s1 0 100
(string-append (number->string v1) “m/s”))
(func s2 0 100
(string-append (number->string v2) “m/s”)))
“aika (s)” “matka (m)”)
10
Valmis animaatio