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
)
)