如果我们想在如上所述的方案中绘制递归艺术,我们应该如何处理呢?
以下是我在方案中从sierpinski三角编辑的粗略草稿(目前尚未完成的工作)。
谢谢!
(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))
答案 0 :(得分: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)))))))