# [plt-scheme] Re: [plt-edu] Moving curves are lovely, thanks!

On 5/22/10 10:56 AM, John Clements wrote:
>* Reading through your image docs today; I really love the white curve on the black square, and after making them swim around a bit, I'm actually having trouble focusing because I'm kind of entranced by watching and fiddling. (Well, maybe that's has something to do with the squarepusher I'm listening to ...)
*>*
*>* Anyhow: thanks!
*>*
*>* John
*>*
*>* (require 2htdp/universe)
*>* (require 2htdp/image)
*>*
*>* (define (draw-world t)
*>* (add-curve
*>* (add-curve (rectangle 500 500 "solid" "black")
*>* (+ (* 50 (cos (/ t 50))) 120) 120 (modulo t 360) 1/3
*>* 380 (+ (* 50 (sin (/ t 100))) 380) (modulo (- t) 360) 1/3
*>* "white")
*>* 80 (+ (* 50 (sin (/ t 100))) 380) (modulo t 360) 1/3
*>* (+ (* 50 (cos (/ t 50))) 170) 30 (modulo (- t) 360) 1/3
*>* "yellow"))
*>*
*>* (animate draw-world)
*
Now available in typed flavor:
#lang typed/scheme
(require (planet dvanhorn/typed/2htdp/image)
(planet dvanhorn/typed/2htdp/universe)
(planet dvanhorn/typed/util))
(: draw-world (Integer -> Image))
(define (draw-world t)
(add-curve
(add-curve (rectangle 500 500 "solid" "black")
(+ (* 50 (cast real? (cos (/ t 50)))) 120)
120
(modulo t 360)
1/3
380
(+ (* 50 (cast real? (sin (/ t 100)))) 380)
(modulo (- t) 360)
1/3
"white")
80
(+ (* 50 (cast real? (sin (/ t 100)))) 380)
(modulo t 360)
1/3
(+ (* 50 (cast real? (cos (/ t 50)))) 170)
30
(modulo (- t) 360)
1/3
"yellow"))
(animate draw-world)