diff options
Diffstat (limited to 'examples/mandelbrot.lali')
-rw-r--r-- | examples/mandelbrot.lali | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/examples/mandelbrot.lali b/examples/mandelbrot.lali new file mode 100644 index 0000000..d546f4f --- /dev/null +++ b/examples/mandelbrot.lali @@ -0,0 +1,30 @@ +(defun for (from to func) + (cond ((< from to) (func from) (for (+ from 1) to func)))) + +(set 'mandelbrot-chars + (list " " "." "," "`" "'" "\"" ":" ";" "-" "+" "o" "O" "0" "1" + "2" "3" "4" "5" "6" "7" "8" "9" "%" "*" "&" "$" "@" "#")) + +(defun mandelbrot-iter (x y x0 y0 i) + (fill ((! i 28) " ") + ((not (> (+ (* x0 x0) (* y0 y0)) 4)) (nth i mandelbrot-chars)) + (f (mandelbrot-iter x y + (+ (- (* x0 x0) (* y0 y0)) x) (+ (* 2 x0 y0) y) + (+ i 1))))) + +(defun mandelbrot-char (x y) + (mandelbrot-iter x y + (+ (- (* x x) (* y y)) x) (+ (* 2 x y) y) + 0)) + +(defun mandelbrot (xmin xmax ymin ymax) + (for 0 24 (lambda (py) + (for 0 80 (lambda (px) + (princ + (mandelbrot-char + (+ (* (/ px 80) (- xmax xmin)) xmin) + (+ (* (/ py 24) (- ymax ymin)) ymin))))) + (newline)))) + +(mandelbrot -2.15 1.25 -1.25 1.25) +; (mandelbrot -1.5 -1.1 -0.2 0.1) |