Snowflakes and Trees

These pictures are generated by Turtle language. The whole thing was implemented in SML. The Turtle code that generated these pictures is given below.

Code for these pictures:

snowflake.tur

(define CreatedByGregReshko 0)
(turtle {800 600})
(define (selectcolor:color {iteration:int t:int})
(
if (= {0 iteration}) green
(
if (= {1 iteration}) blue
(
if (= {2 iteration}) red
(
if (= {3 iteration}) cyan
(
if (= {4 iteration}) magenta green
)
)
)
)
)
)
(define (snowflake:unit {maxiter:int current:int rotate:int size:int})
(if (= {current maxiter})
()
(begin
( pendown () )
( pencolor (selectcolor {(- {current 1}) 1}) )
( forward (/ {size 2}) )
( snowflake {maxiter (+ {current 1}) 4 (if (= {current 0}) (/ {(* {size 2}) 5}) (/ {size 3})) } )
( penup () )
( backward (/ {size 2}) )
( left 72 )
( if (= {rotate 0}) () (snowflake {maxiter current (- {rotate 1}) size}) )
( right 72 )
)
)
)
(pendown ())
(pencolor black)
(snowflake {6 0 4 200})

 

tree.tur

(define CreatedByGregReshko 0)
(turtle {400 600})
(define (setleafcolor:unit {leafstart:int current:int})
(begin
(pencolor black)
( if (= {current (- {leafstart 1}) }) (pencolor green) () )
( if (= {current (- {leafstart 2}) }) (pencolor green) () )
( if (= {current (- {leafstart 3}) }) (pencolor green) () )
( if (= {current (- {leafstart 4}) }) (pencolor green) () )
)
)
(define (leaf:unit {maxiter:int current:int size:int})
(if (= {current maxiter})
()
(begin
(setleafcolor {10 current})
( if (= {current (- {maxiter 1}) }) (pencolor green) () )
( if (= {current (- {maxiter 2}) }) (pencolor green) () )
(forward (/ {size 2}))
(left 45)
(leaf { maxiter (+ {current 1}) (/ {size 2}) })
(right 45)
(forward (/ {size 2}))
(pencolor black)
(leaf { maxiter (+ {current 1}) (/ {size 2}) })
(penup ())
(backward (/ {size 2}))
(pendown ())
(right 45)
(leaf { maxiter (+ {current 1}) (/ {size 2}) })
(left 45)
(penup ())
(backward (/ {size 2}))
(pendown ())
)
)
)
(pendown ())
(pencolor green)