Решение упражнения 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