Код Ревью
Сравни свои решения
#| Для этого упражнения нет проверок.
Любое решение будет считаться успешным ответом. |#
(define (segments->painter segment-list)
(lambda (frame)
(for-each
(lambda (segment)
(draw-line
((frame-coord-map frame) (start-segment segment))
((frame-coord-map frame) (end-segment segment))))
segment-list)))
(define (frame-painter)
(segments->painter
(list (make-segment (make-vect 0 0) (make-vect 1 0)) ; Нижняя сторона
(make-segment (make-vect 1 0) (make-vect 1 1)) ; Правая сторона
(make-segment (make-vect 1 1) (make-vect 0 1)) ; Верхняя сторона
(make-segment (make-vect 0 1) (make-vect 0 0))))) ; Левая сторона
(define (x-painter)
(segments->painter
(list (make-segment (make-vect 0 0) (make-vect 1 1)) ; Одна диагональ
(make-segment (make-vect 1 0) (make-vect 0 1))))) ; Вторая диагональ
(define (diamond-painter)
(segments->painter
(list (make-segment (make-vect 0.5 0) (make-vect 1 0.5)) ; Нижний левый -> Правый центр
(make-segment (make-vect 1 0.5) (make-vect 0.5 1)) ; Правый центр -> Верхний центр
(make-segment (make-vect 0.5 1) (make-vect 0 0.5)) ; Верхний центр -> Левый центр
(make-segment (make-vect 0 0.5) (make-vect 0.5 0))))) ; Левый центр -> Нижний центр
(define (wave-painter)
(segments->painter
(list (make-segment (make-vect 0 0.5) (make-vect 0.2 0.7))
(make-segment (make-vect 0.2 0.7) (make-vect 0.4 0.3))
(make-segment (make-vect 0.4 0.3) (make-vect 0.6 0.7))
(make-segment (make-vect 0.6 0.7) (make-vect 0.8 0.3))
(make-segment (make-vect 0.8 0.3) (make-vect 1 0.5)))))