; Devil's Pitchfork in Dr. Scheme (define the-view-port '()) (define (init-graph) (open-graphics) (set! the-view-port (open-viewport "chaos" 80 80 10))) (define (close-graph) (if (not (null? the-view-port)) (close-viewport the-view-port) (close-graphics))) ;(define (put-pixel x y) ;((draw-pixel the-view-port) ;(make-posn (* 100 (car x)) (+ 400 (* 100 (cdr x)))))) (define (put-pixel x y) (define color (make-rgb 0 0 0)) ((draw-solid-ellipse the-view-port) (make-posn (* 130 (car x)) (+ 400 (* 150 (cdr x)))) 4 4 color)) ; = next state of system S (define (logistic state) (* const (- 1 state) state)) ; = displays attractor of logistic procedure (define (show-log-attractor const) ; the logistic function (define (logistic state) (* const (- 1 state) state)) ; 0 <= init-state <= 1 & init-state <> .5 (define init-state .2) ; control-loop: (do ((cycle 0 (+ cycle 1)) (state init-state (logistic state))) ((> cycle 620) 'done) (if (> cycle 500) (show-state const state)))) ;(define (show-state const state) ; (display (cons const state)) ; (newline)) (define (show-state const state) (put-pixel (cons const state) 'white)) (define (pitchfork start finish) (define slices 75) ; # of attractors shown (define delta (/ (- finish start) slices)) (init-graph) ; enter graphics mode (do ((const start (+ const delta))) ((< finish const) 'done) (show-log-attractor const)))