SICP 2.50
transform-painterが定義済みという前提で解答するのはとても簡単。transform-painterを作るのは難しい。
transform-painterの定義がSICPと違うけど、まぁ良いか。
(load "../psets/go.scm") (define flip-horiz (transform-painter (make-vect 1.0 0.0) (make-vect 0.0 0.0) (make-vect 1.0 1.0))) (define rotate-180-digree (transform-painter (make-vect 1.0 1.0) (make-vect 0.0 1.0) (make-vect 1.0 0.0))) (define rotate-270-digree (transform-painter (make-vect 0.0 1.0) (make-vect 0.0 0.0) (make-vect 1.0 1.0))) ; test (paint-g1 (flip-horiz wave)) (paint-g1 (rotate-180-digree wave)) (paint-g1 (rotate-270-digree wave))
上からオリジナルのwave, flip-horiz, rotate-180-digree, rotate-270-digree