sicp-solutions/chapter-2/ex-2.49.scm

72 lines
No EOL
2.7 KiB
Scheme

#lang sicp
(#%require sicp-pict)
(define outline-painter
(segments->painter
(list (make-segment (make-vect 0 0)
(make-vect 0 1))
(make-segment (make-vect 0 1)
(make-vect 1 1))
(make-segment (make-vect 1 1)
(make-vect 1 0))
(make-segment (make-vect 1 0)
(make-vect 0 0)))))
(define x-painter
(segments->painter
(list (make-segment (make-vect 0 0)
(make-vect 1 1))
(make-segment (make-vect 0 1)
(make-vect 1 0)))))
(define diamond-painter
(segments->painter
(list (make-segment (make-vect 0.5 0)
(make-vect 1 0.5))
(make-segment (make-vect 1 0.5)
(make-vect 0.5 1))
(make-segment (make-vect 0.5 1)
(make-vect 0 0.5))
(make-segment (make-vect 0 0.5)
(make-vect 0.5 0)))))
; this will be a roundabout drawing, just to
; make the lines nice and connectable between
; wave painters, I'm not an artist.
(define wave
(segments->painter
(list (make-segment (make-vect 0 0.55)
(make-vect 0.2 0.5))
(make-segment (make-vect 0.2 0.5)
(make-vect 0.4 0.6))
(make-segment (make-vect 0.4 0.6)
(make-vect 0.35 0.8))
(make-segment (make-vect 0.35 0.8)
(make-vect 0.4 1))
(make-segment (make-vect 0.6 1)
(make-vect 0.65 0.8))
(make-segment (make-vect 0.65 0.8)
(make-vect 0.6 0.6))
(make-segment (make-vect 0.6 0.6)
(make-vect 0.8 0.7))
(make-segment (make-vect 0.8 0.7)
(make-vect 1 0.55))
(make-segment (make-vect 1 0.45)
(make-vect 0.8 0.6))
(make-segment (make-vect 0.8 0.6)
(make-vect 0.6 0.5))
(make-segment (make-vect 0.6 0.5)
(make-vect 0.6 0.3))
(make-segment (make-vect 0.6 0.3)
(make-vect 0.7 0))
(make-segment (make-vect 0.6 0)
(make-vect 0.5 0.2))
(make-segment (make-vect 0.5 0.2)
(make-vect 0.4 0))
(make-segment (make-vect 0.3 0)
(make-vect 0.4 0.3))
(make-segment (make-vect 0.4 0.3)
(make-vect 0.4 0.5))
(make-segment (make-vect 0.4 0.5)
(make-vect 0.2 0.4))
(make-segment (make-vect 0.2 0.4)
(make-vect 0 0.45)))))