(setup 1200 1000) (bgcolor "black") (color (rgb 1 0 0)) (speed 0) (penup) (hideturtle) (define xvals1 (list 2.005 1.005 2.005 4.005 4.005 2.005)) (define xvals2 (list 4 7 2 6 0 1)) (define yvals1 (list 1.005 3.005 1.005 1.005 3.005 1.005)) (define yvals2 (list 5 1 7 1 4 5)) (define (get-xy vals1 vals2 time sum) ; finds next (x,y) coordinates (if (null? vals1) sum (get-xy (cdr vals1) (cdr vals2) time (+ sum (sin (+ (* time (car vals1)) (car vals2))))))) (define (go time scale) ; moves turtle to new coordinates (define xy (cons (get-xy xvals1 xvals2 time 0) (get-xy yvals1 yvals2 time 0))) (goto (* (car xy) scale) (* (cdr xy) scale))) (define (more-green g time scale) ; increases green component (cond ((>= g 1) (less-red 1 time scale)) (else (color (rgb 1 g 0)) (go time scale) (more-green (+ g 0.000142) (+ time 0.02) (* scale 0.99995))))) (define (less-red r time scale) ; decreases red component (cond ((<= r 0.8) 'end) (else (color (rgb r 1 0)) (go time scale) (less-red (- r 0.000142) (+ time 0.02) (* scale 0.99995))))) (go 0 130) (pendown) (more-green 0.000142 0.02 129.9935)