38 lines
912 B
Scheme
38 lines
912 B
Scheme
|
|
||
|
;; mandelbrot set
|
||
|
|
||
|
(define mandel
|
||
|
(lambda (rmin rmax imin imax res)
|
||
|
(letrec
|
||
|
((rdelta (- rmax rmin)) (idelta (- imax imin))
|
||
|
(rdelta1 (/ rdelta res)) (idelta1 (/ idelta res))
|
||
|
(pcolor
|
||
|
(lambda (re im cre cim n)
|
||
|
(if (or (> n 200) (> (+ (* re re) (* im im)) 4.0))
|
||
|
(let
|
||
|
((c (* 8 (remainder n 8)))
|
||
|
(x (* res (/ (- cre rmin) rdelta)))
|
||
|
(y (* res (/ (- cim imin) idelta))))
|
||
|
(draw-color
|
||
|
(* 255 (remainder n 2))
|
||
|
(* 255 (remainder (quotient n 2) 2))
|
||
|
(* 255 (remainder (quotient n 4) 2)))
|
||
|
(draw-move x y)
|
||
|
(draw-line (+ x 1) (+ y 1)))
|
||
|
(pcolor
|
||
|
(+ (- (* re re) (* im im)) cre)
|
||
|
(+ (* 2 re im) cim)
|
||
|
cre cim (+ 1 n)))))
|
||
|
(iter
|
||
|
(lambda (rep imp)
|
||
|
(if (> rep rmax)
|
||
|
(if (> imp imax) '()
|
||
|
(iter rmin (+ imp idelta1)))
|
||
|
(begin
|
||
|
(pcolor 0 0 rep imp 0)
|
||
|
(iter (+ rep rdelta1) imp))))))
|
||
|
(iter rmin imin))))
|
||
|
|
||
|
(mandel -1.5 0.5 -1.0 1.0 25)
|
||
|
|