diff --git a/ex-2_44-52.scm b/ex-2_44-52.scm index ac67f76..6161c8d 100644 --- a/ex-2_44-52.scm +++ b/ex-2_44-52.scm @@ -258,12 +258,64 @@ (display "\nex-2.51\n") ; First implementation is at the beginning of this file. -(draw-to-py ((corner-split painter-wave 4) simple-frame) "corner-split-4") -(draw-to-py ((below painter-x painter-diamond) simple-frame) "x-below-diamond") +(draw-to-py ((below painter-x painter-diamond) simple-frame) "x-below-diamond-1") +(define (below painter1 painter2) + (rotate270 (beside (rotate90 painter2) (rotate90 painter1)))) +(draw-to-py ((below painter-x painter-diamond) simple-frame) "x-below-diamond-2") (display "\nex-2.52\n") +; a. +(define painter-wave-smile + (segments->painter + (list (make-line 0.4 0 0.5 0.33) + (make-line 0.5 0.33 0.6 0.0) + (make-line 0.25 0.0 0.33 0.5) + (make-line 0.33 0.5 0.3 0.6) + (make-line 0.3 0.6 0.1 0.4) + (make-line 0.1 0.4 0.0 0.6) + (make-line 0.0 0.6 0.0 0.8) + (make-line 0.0 0.8 0.1 0.6) + (make-line 0.1 0.6 0.33 0.65) + (make-line 0.33 0.65 0.4 0.65) + (make-line 0.4 0.65 0.35 0.8) + (make-line 0.43 0.87 0.46 0.87) ; left eye + (make-line 0.54 0.87 0.57 0.87) ; right eye + (make-line 0.45 0.75 0.55 0.75) ; smile + (make-line 0.35 0.8 0.4 1.0) + (make-line 0.4 1.0 0.6 1.0) + (make-line 0.75 0.0 0.6 0.45) + (make-line 0.6 0.45 1.0 0.15) + (make-line 1.0 0.15 1.0 0.35) + (make-line 1.0 0.35 0.8 0.65) + (make-line 0.8 0.65 0.6 0.65) + (make-line 0.6 0.65 0.65 0.8) + (make-line 0.65 0.8 0.6 1.0)))) + +(draw-to-py (painter-wave-smile simple-frame) "wave-smile") + +; b. +(define (corner-split-adapted painter n) + (if (= n 0) + painter + (let ((up (up-split painter (- n 1))) + (right (right-split painter (- n 1)))) + (let ((top-left up) + (bottom-right right) + (corner (corner-split-adapted painter (- n 1)))) + (beside (below painter top-left) + (below bottom-right corner)))))) + +(draw-to-py ((corner-split-adapted painter-wave 3) simple-frame) "corner-split-3") + +; c. didn't do anything here +(define (square-of-four tl tr bl br) + (lambda (painter) + (let ((top (beside (tl painter) (tr painter))) + (bottom (beside (bl painter) (br painter)))) + (below bottom top)))) + diff --git a/ex-2_53-xx.scm b/ex-2_53-xx.scm new file mode 100644 index 0000000..e69de29