(require "common.scm") (define width 200) (define height 200) (define mid (fun (b e) '( (/. (+. (car b) (car e)) 2.0) (/. (+. (cadr b) (cadr e)) 2.0) ) )) (let* ( (img (Gd.create_truecolor width height)) (ca (img#colors)) (bg (ca#create 255 255 255)) (ln (ca#create 0 0 127)) (margin 10.0) (w (+. 180.0 margin)) (h (+. (/. (*. w (sqrt 3.0)) 2.0) margin)) (draw_core (fun (b e) (img#line (int_of_float (car b)) (int_of_float (cadr b)) (int_of_float (car e)) (int_of_float (cadr e)) ln) )) ) (letrec ( (draw (fun (rest p1 p2 p3) (if (= rest 0) (begin (draw_core p1 p2) (draw_core p2 p3) (draw_core p3 p1) ) (let ( (p1_2 (mid p1 p2)) (p2_3 (mid p2 p3)) (p3_1 (mid p3 p1)) ) (draw (- rest 1) p1 p1_2 p3_1) (draw (- rest 1) p2 p1_2 p2_3) (draw (- rest 1) p3 p2_3 p3_1) ) ) )) ) (img#filled_rectangle 0 0 (- width 1) (- height 1) bg) (draw 5 '(margin h) '((/. w 2.0) margin) '(w h) ) (img#save_as_png "draw2.png") ))