练习 2.52

a)

要给 wave 图形加上线段,直接在调用 segments->painter 的时候添加就可以了。

以下代码将给 wave 图形加上一条对角线:

(segments->painter (list (make-segment (make-vect 0.0 0.0)
                                       (make-vect 1.0 1.0))

                         ; ... wave 图形的线段
                         ))

b)

以下是只使用一个 up-split 图像和只使用一个 right-split 图像定义的 corner-split (当然,这个定义和原本的定义产生的图像有一点不同):

;;; 52-corner-split.scm

(define (corner-split painter n)
    (if (= n 0)
        painter
        (let ((up (up-split painter (- n 1)))
              (right (right-split painter (- n 1)))
              (corner (corner-split painter (- n 1))))
            (beside (below painter up)
                    (below right corner)))))

c)

修改 square-limit 的定义,将图片的方向从向内改为向外(修改 square-of-four 的几个参数):

;;; 52-square-limit.scm

(define (square-limit painter n)
    (let ((combine4 (square-of-four identity flip-horiz)
                                    flip-vect rotate180))
        (combine4 (corner-split painter n))))

效果图:

         |                                       |
 ------> |<-------                      <------- | ------->
         |                                       |
---------+---------       =======>     ----------+-----------
         |                                       |
 ------> |<-------                      <------- | ------->
         |                                       |

讨论

blog comments powered by Disqus