Решение упражнения 2.50 из SICP

6 February, 2008 (20:46) | Решения упражнений

Для горизонтального отражения и поворотов на 180 и 270 градусов против часовой стрелки будем также применять transform-painter. Схематически каждое из этих преобразований обозначено на рисунке ниже:

2501.png

Думаю, чертеж объясняет в даном случае лучше слов. Таким образом мы легко получаем следующие определения процедур:

(define (flip-horiz painter) 
  (transform-painter painter 
                     (make-vector 1.0 0.0) 
                     (make-vector 0.0 0.0) 
                     (make-vector 1.0 1.0)))
(define (rotate-180 painter) 
  (transform-painter painter 
                     (make-vector 1.0 1.0) 
                     (make-vector 0.0 1.0) 
                     (make-vector 1.0 0.0)))
(define (rotate-270 painter) 
  (transform-painter painter 
                     (make-vector 0.0 1.0) 
                     (make-vector 0.0 0.0) 
                     (make-vector 1.0 1.0)))

Все делается аналогично повороту на 90 градусов.

Write a comment