home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-07-26 | 1.2 KB | 48 lines | [TEXT/gamI] |
- ; This is a demo of the drawing window.
-
- (define (sierpinsky n)
-
- (define size 256)
-
- (define (sierp j)
-
- (let* ((h (/ (/ size 4) (expt 2 j)))
- (current-x (- (* h 2) 128))
- (current-y (- h 128)))
-
- (define (draw d l)
- (let ((inc-x (case d ((0 1 7) l) ((3 4 5) (- l)) (else 0)))
- (inc-y (case d ((1 2 3) l) ((5 6 7) (- l)) (else 0))))
- (set! current-x (+ current-x inc-x))
- (set! current-y (- current-y inc-y))
- (draw-line-to current-x current-y)
- #f))
-
- (define (s1 k i)
- (if (> k 0)
- (let ((k (- k 1)))
- (s1 k i ) (draw (modulo (- i 1) 8) h)
- (s1 k (modulo (+ i 6) 8)) (draw i (* h 2))
- (s1 k (modulo (+ i 2) 8)) (draw (modulo (+ i 1) 8) h)
- (s1 k i ))))
-
- (define (s2 k)
- (s1 k 0) (draw 7 h)
- (s1 k 6) (draw 5 h)
- (s1 k 4) (draw 3 h)
- (s1 k 2) (draw 1 h))
-
- (position-pen current-x current-y)
-
- (s2 j)))
-
- (clear-graphics) ; clear drawing window
-
- (let loop ((j 0))
- (if (<= j n)
- (begin
- (sierp j)
- (loop (+ j 1))))))
-
- (sierpinsky 4)
-