1

在此处输入图像描述 如果我们想在上述方案中绘制一种递归艺术,我们应该如何处理它?

这是我从谢尔宾斯基三角形方案中编辑的草稿(目前还没有完成)。

谢谢!

(define (hax fn)
    (repeat 6 (lambda () (fn) (lt 60))))

(define (haxa d k)
    (hax (lambda ()
            (if (= k 1) (fd d) (haxaleg d k)))))

(define (haxaleg d k)
    (haxa (/ d 2) (- k 1))
    (penup)
    (fd (* d 1.72))
    (lt 120)
    (pendown))
4

1 回答 1

3

由于您似乎想在六边形周围的每个第二个角递归地绘制较小的六边形,因此应该使用以下方法。

  1. 画出所需大小的六边形,回到原来的位置和方向
  2. 在当前位置绘制较小的六边形
  3. 将两侧向前移动,每次移动后转动
  4. 将第 2 点和第 3 点重复两次

在你的方言中,这应该是

(define (hexagon length)
    (pendown)
    (repeat 6 (lambda () 
                 (fd length)
                 (lt 60)))
    (penup))

(define (hexagons length levels)
    (hexagon length)   ;; Draw big hexagon
    (if (> levels 1)
        (repeat 3 (lambda ()
                     (hexagons (/ length 2) (- levels 1))  ;; Then smaller ones,
                     (repeat 2 (lambda ()                  ;; move to next corner
                          (fd length)
                          (lt 60)))))))
于 2013-08-09T13:25:40.910 回答