;;;; License: CC0-1.0 #lang racket (provide beside below) (require "46.rkt") (require "49.rkt") (require "50.rkt") (define (beside painter1 painter2) (let ((split-point (make-vect 0.5 0.0))) (let ((paint-left (transform-painter painter1 (make-vect 0.0 0.0) split-point (make-vect 0.0 1.0))) (paint-right (transform-painter painter2 split-point (make-vect 1.0 0.0) (make-vect 0.5 1.0)))) (lambda (frame) (paint-left frame) (paint-right frame))))) (define (below painter1 painter2) (let ((split-point (make-vect 0.0 0.5))) (let ((paint-above (transform-painter painter2 (make-vect 0.0 0.0) (make-vect 1.0 0.0) split-point)) (paint-below (transform-painter painter1 split-point (make-vect 1.0 0.5) (make-vect 0.0 1.0)))) (lambda (frame) (paint-above frame) (paint-below frame))))) ;;; below in terms of rotate operations (define (below-rot painter1 painter2) (let ((painter1-270 (counterclockwise-270 painter1)) (painter2-270 (counterclockwise-270 painter2))) (counterclockwise-270 (counterclockwise-180 (beside painter1-270 painter2-270)))))