Chapter 2, Building Abstractions with Data

Section - 2.2 - Hierarchical Data and the Closure Property

Exercise 2.50


Note that I am using transform-painter from the sicp package of Dr Racket. Its arguments are slightly different from the transform-painter code given in the book.

Procedure flip-horiz :

1
2
3
4
5
6
7
8
9
(define (flip-horiz painter)
  ( (transform-painter
       (make-vect 1.0 0.0) ; new origin
       (make-vect 0.0 0.0) ; new end of edge1
       (make-vect 1.0 1.0) ; new end of edge2
    ) 
    painter
  )
) 

Procedure rotate180 :

1
2
3
4
5
6
7
8
9
10
(define (rotate180 painter)
  ( 
    (transform-painter
       (make-vect 1.0 1.0) ; new origin
       (make-vect 0.0 1.0) ; new end of edge1
       (make-vect 1.0 0.0) ; new end of edge2
    ) 
    painter
  )
) 

Procedure rotate270 :

1
2
3
4
5
6
7
8
9
(define (rotate270 painter)
  ( (transform-painter
       (make-vect 0.0 1.0) ; new origin
       (make-vect 0.0 0.0) ; new end of edge1
       (make-vect 1.0 1.0) ; new end of edge2
    ) 
    painter
  )
)