SICP 問題 2.50(ペインタの変換)
問題
ペインタを水平に逆転する変換 flip-horiz と、ペインタを反時計回りに180度と270度回転する変換を定義せよ。
解答
transform-painter 手続きを使えば一発ですな。
以下の手続きを、前エントリで分離した painter.scm に追記する。
;水平に逆転する変換 (define (flip-horiz painter) (transform-painter painter (make-vect 1.0 0.0) (make-vect 0.0 0.0) (make-vect 1.0 1.0))) ;反時計回り180度回転する変換 (define (rotate180 painter) (rotate90 (rotate90 painter))) ;反時計回り270度回転する変換 (define (rotate180 painter) (rotate90 (rotate90 (rotate90 painter))))
で、それぞれの変換をかけたペインタで描画してみる。
では実験。