;Turtles All The Way Down ; ;What lies under Earth? ;A great turtle rests below, ;On turtles down down. (define (move-to x y) (penup) (setheading 0) (setpos x y) (pendown) ) ; (define (rotate size a) ; (penup) ; (circle size a) ; (pendown) ; ) ; (define left-f) (define (shell _size n x y) (define size (/ _size n)) (define (build-level n p) ; (define rad (* n size)) (if (= n 1) (circle size) (cond ((= p 0) (left 90) (forward size) (left -90) (circle (* (- n 1) size) 22.5) (build-level (- n 1) 8) ) (else (circle (* n size) 45) (left 90) (forward size) (left 180) (forward size) (left 90) (build-level n (- p 1)) ) ) ) ) (move-to x (- y _size)) (build-level n 8) ) (define (draw_turtle size x y a) (define foot-rad (/ size 5)) ; (define foot-LLen (/ size 4)) (define foot-RLen (* size 0.34567085809)) (define (draw-foot n) (cond ((> n 0) (circle size 22.5) (left -90) (forward (/ size 4)) (circle foot-rad 180) (forward foot-RLen) (right 67) ; (left 23) (circle size 50) (draw-foot (- n 1)) ) ) ) (move-to x (- y size)) (penup) (circle size a) (pendown) (draw-foot 4) (move-to x (+ y size)) (penup) (circle (* -1 size) (- 20 a)) (pendown) ; (rotate (* -1 size) (- 20 a)) (left 110) (forward foot-RLen) (circle (* 0.34202014332 size) 180) (forward foot-RLen) (shell (* size 1.01) 3 x y) ) (define (turtle_circle size t-size) (define (iter a n) (cond ((> n 0) (draw_turtle t-size (* (cos (radians a)) size) (* (sin (radians a)) size) (+ a 90)) (iter (+ a 45) (- n 1)) ) ) ) (iter 22.5 8) ) (define (iter n m b) (cond ((not (= n 0)) (color (rgb .2 .5 b)) (shell m 4 0 0) (turtle_circle (* m .885) (/ m 12)) (iter (- n 1) (* m 2.25) (- b .2)) ) ) ) (bgcolor "#000000") (speed 0) (iter 5 15 1) ; (shell 10 4 0 0) ; (shell 40 4 0 0) ; (shell 90 4 0 0) ; (shell 202.5 4 0 0) ; (shell 455.625 4 0 0) ; (shell 1025.15625 4 0 0) ; (turtle_circle 20 4 0 0 22.5) ; (turtle_circle 45 9 0 0 0) ; (turtle_circle 101.25 20.25 0 0 0) ; (turtle_circle 227.3 43 0 0 0) ; (turtle_circle 512 102.2 0 0 0)