(define image-series (lambda (n width height) (let ((image (image-new width height))) (image-show image) ;basic code (define new-render-color-tree! (lambda (ctree image left top width height) (let kernel ((ctree ctree) (hsplit? #t) (left left) (top top) (width width) (height height)) (cond ((and (pair? ctree) hsplit? ) (kernel (car ctree) (not hsplit?) left top (+ (/ width 2) 1) (+ height 1)) (kernel (cdr ctree) (not hsplit?) (+ left (/ width 2)) top (+ (/ width 2) 1) (+ height 1))) ((pair? ctree) ; NOT hsplit? (kernel (car ctree) (not hsplit?) left top (+ width 1) (+ (/ height 2) 1)) (kernel (cdr ctree) (not hsplit?) left (+ top (/ height 2)) (+ width 1) (+ (/ height 2) 1))) (else (image-select-rectangle! image selection-replace left top width height) (context-set-fgcolor! ctree) (image-fill! image) (context-update-displays!) (image-select-nothing! image)))))) (define render-color-tree-clouds! (lambda (ctree image left top width height) (let kernel ((ctree ctree) (left left) (top top) (width width) (height height)) (cond ((pair? ctree) (kernel (car ctree) (+ left (/ height 4)) (+ top (/ height 2)) (/ height 2) (/ height 2)) (kernel (cdr ctree) left top height (/ height 2))) (else (image-select-ellipse! image selection-replace left top width height) (context-set-fgcolor! ctree) (image-fill! image) (context-update-displays!) (image-select-nothing! image)))))) ;basic palettes (define blues (cons (cons (cons (cons (cons (cons (rgb-new 0 0 255) (rgb-new 20 0 215)) (rgb-new 40 0 195)) (rgb-new 50 0 175)) (rgb-new 70 0 155)) (rgb-new 90 0 135)) (rgb-new 100 0 115))) (define greys (cons (cons (cons (cons (cons (cons (rgb-new 50 50 100) (rgb-new 80 80 120)) (rgb-new 95 95 135)) (rgb-new 120 150 165)) (rgb-new 150 150 180)) (rgb-new 180 180 195)) (rgb-new 210 210 210))) ; set bg color (image-compute-pixels! image 0 0 (- width 1) (- height 1) (lambda (pos) (rgb-new (+ (* (cos n) (position-row pos)) 35) (+ (* (cos n) (position-row pos)) 35) (+ (* (cos n) (position-row pos)) 55) ))) ;draw clouds (render-color-tree-clouds! greys image 0 0 (/ height 2) (/ height 2)) (render-color-tree-clouds! greys image (/ height 2) 0 (/ height 2) (/ height 2)) (render-color-tree-clouds! greys image height 0 (/ height 2) (/ height 2)) ;draw leaf 1 (define awesome (turtle-new image)) (turtle-teleport! awesome (- (* (/ height 7) 3) 3) (+ (/ height 2) (/ height 7))) (turtle-set-color! awesome (rgb-new (* 255 (cos n)) (* 255 (cos n)) (* 255 (cos n)))) (turtle-set-brush! awesome "Circle (03)") (turtle-turn! awesome 90) (turtle-forward! awesome (* 5 (/ height 14))) (turtle-teleport! awesome (- (* (/ height 7) 3) 3) (* 12 (/ height 14))) (turtle-face! awesome 290) (turtle-forward! awesome (/ width 25)) (turtle-turn! awesome 18) (turtle-forward! awesome (/ width 35)) (turtle-turn! awesome 18) (turtle-forward! awesome (/ width 40)) (turtle-turn! awesome 18) (turtle-forward! awesome (/ width 45)) (turtle-turn! awesome 20) (turtle-forward! awesome (/ width 45)) (turtle-turn! awesome 20) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 20) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 20) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 25) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 25) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 25) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 25) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 30) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 30) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 30) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) ;leaf 2 (define awesome (turtle-new image)) (turtle-teleport! awesome (- (* (/ height 14) 10) 3) (+ (/ height 2) (/ height 7))) (turtle-set-color! awesome (rgb-new (* 255 (cos n)) (* 255 (cos n)) (* 255 (cos n)))) (turtle-set-brush! awesome "Circle (03)") (turtle-turn! awesome 90) (turtle-forward! awesome (* 5 (/ height 14))) (turtle-teleport! awesome (- (* (/ height 14) 10) 3) (* 12 (/ height 14))) (turtle-face! awesome 290) (turtle-forward! awesome (/ width 25)) (turtle-turn! awesome 18) (turtle-forward! awesome (/ width 35)) (turtle-turn! awesome 18) (turtle-forward! awesome (/ width 40)) (turtle-turn! awesome 18) (turtle-forward! awesome (/ width 45)) (turtle-turn! awesome 20) (turtle-forward! awesome (/ width 45)) (turtle-turn! awesome 20) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 20) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 20) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 25) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 25) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 25) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 25) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 30) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 30) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 30) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) ;leaf 3 (define awesome (turtle-new image)) (turtle-teleport! awesome (- height 3) (+ (/ height 2) (/ height 7))) (turtle-set-color! awesome (rgb-new (* 255 (cos n)) (* 255 (cos n)) (* 255 (cos n)))) (turtle-set-brush! awesome "Circle (03)") (turtle-turn! awesome 90) (turtle-forward! awesome (* 5 (/ height 14))) (turtle-teleport! awesome (- height 3) (* 12 (/ height 14))) (turtle-face! awesome 290) (turtle-forward! awesome (/ width 25)) (turtle-turn! awesome 18) (turtle-forward! awesome (/ width 35)) (turtle-turn! awesome 18) (turtle-forward! awesome (/ width 40)) (turtle-turn! awesome 18) (turtle-forward! awesome (/ width 45)) (turtle-turn! awesome 20) (turtle-forward! awesome (/ width 45)) (turtle-turn! awesome 20) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 20) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 20) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 25) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 25) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 25) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 25) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 30) (turtle-forward! awesome (/ width 55)) (turtle-turn! awesome 30) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 30) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) (turtle-turn! awesome 35) (turtle-forward! awesome (/ width 65)) ; draw 1st rose (new-render-color-tree! blues image (* (/ height 7) 2) (/ height 2) (/ height 7) (/ height 7)) ;draw the 2nd rose (new-render-color-tree! blues image (* (/ height 7) 4) (/ height 2) (/ height 7) (/ height 7)) ;draw the 3rd rose (new-render-color-tree! blues image (* (/ height 7) 6) (/ height 2) (/ height 7) (/ height 7)) ; draw grass (define grassy (turtle-new image)) (turtle-teleport! grassy 0 (- height 15)) (turtle-set-color! grassy "dark green") (turtle-set-brush! grassy "Sand Dunes (AP)") (turtle-forward! grassy width) (turtle-teleport! grassy 20 (- height 12)) (turtle-forward! grassy width) (turtle-teleport! grassy 35 (- height 9)) (turtle-forward! grassy width) (if (even? n) (image-transform! image rgb-complement)) (if (integer? (/ n 3)) (image-transform! image rgb-phaseshift)) )))