;;; Scheme Recursive Art Contest Entry ;;; ;;; Please do not include your name or personal info in this file. ;;; ;;; Title: Trees ;;; ;;; Description: ;;; (define (snowflake-segment levels size) (if (= levels 1) (begin (pendown) (forward size) (penup)) (begin (pendown) (snowflake-segment (- levels 1) (/ size 3)) (left 60) (snowflake-segment (- levels 1) (/ size 3)) (right 120) (snowflake-segment (- levels 1) (/ size 3)) (left 60) (snowflake-segment (- levels 1) (/ size 3)) (penup)))) (define (snowflake sides size complexity) (define angle (/ 360 sides)) (define (helper levels) (if (= levels 1) (begin (snowflake-segment complexity size) (right angle)) (begin (snowflake-segment complexity size) (right angle) (helper (- levels 1))))) (helper sides)) (define (square size) (begin (pendown) (forward size) (right 90) (forward size) (right 90) (forward size) (right 90) (forward size) (right 90))) (define (hexagon size) (begin (pendown) (forward size) (right 60) (forward size) (right 60) (forward size) (right 60) (forward size) (right 60) (forward size) (right 60) (forward size) (right 60) (penup))) (define (flower size petals) (define angle (/ 360 petals)) (define (helper size petals) (if (= petals 1) (begin (square size) (right angle)) (begin (square size) (right angle) (helper size (- petals 1))))) (helper size petals)) (define (flower-hex size petals) (define angle (/ 360 petals)) (define (helper size petals) (if (= petals 1) (begin (hexagon size) (right angle)) (begin (hexagon size) (right angle) (helper size (- petals 1))))) (helper size petals)) (define (tree-hex levels size) (if (= levels 1) (begin (pendown) (forward size) (flower-hex 5 5) (backward size) (penup)) (begin (pendown) (forward size) (left 60) (tree (- levels 1) (/ size 1.61)) (right 45) (tree (- levels 1) (/ size 1.61)) (right 45) (tree (- levels 1) (/ size 1.61)) (left 30) (backward size) (penup)))) (define (tree levels size) (if (= levels 1) (begin (pendown) (forward size) (flower 5 5) (backward size) (penup)) (begin (pendown) (forward size) (left 60) (tree (- levels 1) (/ size 1.61)) (right 45) (tree (- levels 1) (/ size 1.61)) (right 65) (tree (- levels 1) (/ size 1.61)) (left 50) (backward size) (penup)))) (define (lotus-recurse levels start-angle change-angle size x y) (define (lotus-leaf start-angle change-angle size) (define number (* (/ start-angle change-angle) 2)) (define (helper-left levels size) (if (= levels 0) (forward size) (begin (forward size) (right change-angle) (helper-left (- levels 1) size)))) (define (helper-right levels size) (if (= levels 0) (forward size) (begin (forward size) (left change-angle) (helper-right (- levels 1) size)))) (left start-angle) (pendown) (helper-left number size) (left start-angle) (penup) (setposition x y) (right start-angle) (pendown) (helper-right number size) (right start-angle) (penup) (setposition x y)) (if (= levels 1) (lotus-leaf start-angle change-angle size) (begin (lotus-leaf start-angle change-angle size) (lotus-recurse (- levels 1) start-angle change-angle (/ size 1.2) x y)))) (define (lotus-corner x y) (setposition x y) (right 80) (lotus-recurse 4 20 2 7.6 x y) (left 30) (lotus-recurse 4 30 3 6.8 x y) (left 30) (lotus-recurse 4 30 3 6.8 x y) (left 20) (lotus-recurse 4 35 3.5 8.4 x y) (left 20) (lotus-recurse 4 30 3 6.8 x y) (left 30) (lotus-recurse 4 30 3 6.8 x y) (left 30) (lotus-recurse 4 20 2 7.6 x y)) (define (draw) (speed 10) (bgcolor "black") (penup) (setposition 200 0) (pendown) (color "yellow") (circle 200) (penup) (setposition 202 0) (pendown) (color "orange") (circle 202) (penup) (setposition -215 -70) (color "red") (snowflake 10 140 4) (setposition 265 0) (pendown) (color "#2DF53A") (circle 265) (penup) (setposition 266 0) (pendown) (circle 266) (penup) (setposition -277 -160) (color "cyan") (snowflake 6 320 5) (color "#2DF53A") (setheading 300) (lotus-corner -292 175) (setheading 60) (lotus-corner 292 175) (setheading 240) (lotus-corner -292 -175) (setheading 120) (lotus-corner 292 -175) (setheading 180) (lotus-corner 0 -335) (setheading 0) (lotus-corner 0 335) (setheading 0) (setposition 4 -150) (color "red") (tree-hex 5 120) (setposition 6 -150) (color "orange") (tree 5 112) (setposition 8 -150) (color "yellow") (tree 5 101) (setposition 10 -150) (color "#2DF53A") (tree 5 91) (setposition 12 -150) (hideturtle) ) (draw)