Exercise2-48 <---> Exercise2-50
Exercise 2.49
Use segments->painter to define the following primitive painters:
a. The painter that draws the outline of the designated frame.
b. The painter that draws an "X" by connecting opposite corners of the frame.
c. The painter that draws a diamond shape by connecting the midpoints of the sides of the frame.
d. The wave painter.
Scheme solution:
(define outline
(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
(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
(segments->painter
(list (make-segment (make-vect 0 0.5) (make-vect 0.5 0))
(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)))))
(define wave
(segments->painter
(list (make-segment (make-vect 0.60 0.00) (make-vect 0.50 0.30))
(make-segment (make-vect 0.50 0.30) (make-vect 0.40 0.00))
(make-segment (make-vect 0.25 0.00) (make-vect 0.35 0.40))
(make-segment (make-vect 0.35 0.40) (make-vect 0.30 0.50))
(make-segment (make-vect 0.30 0.50) (make-vect 0.15 0.35))
(make-segment (make-vect 0.15 0.35) (make-vect 0.00 0.60))
(make-segment (make-vect 0.00 0.80) (make-vect 0.15 0.55))
(make-segment (make-vect 0.15 0.55) (make-vect 0.30 0.60))
(make-segment (make-vect 0.30 0.60) (make-vect 0.40 0.60))
(make-segment (make-vect 0.40 0.60) (make-vect 0.35 0.80))
(make-segment (make-vect 0.35 0.80) (make-vect 0.40 1.00))
(make-segment (make-vect 0.60 1.00) (make-vect 0.65 0.80))
(make-segment (make-vect 0.65 0.80) (make-vect 0.60 0.60))
(make-segment (make-vect 0.60 0.60) (make-vect 0.75 0.60))
(make-segment (make-vect 0.75 0.60) (make-vect 1.00 0.40))
(make-segment (make-vect 1.00 0.20) (make-vect 0.60 0.40))
(make-segment (make-vect 0.60 0.40) (make-vect 0.75 0.00)))))
Exercise2-48 <---> Exercise2-50