Julia set: Difference between revisions
Content added Content deleted
m (→{{header|F#}}: fix heading, as suggested on the Count examples/Full list/Tier 4 talk page) |
(→{{header|Elixir}}: add Emacs Lisp) |
||
Line 1,142: | Line 1,142: | ||
</pre> |
</pre> |
||
=={{header|Emacs Lisp}}== |
|||
<lang lisp>; === Graphical Julia set display in Emacs ===================== |
|||
(setq julia-size (cons 300 200)) |
|||
(setq xmin -1.5) |
|||
(setq xmax 1.5) |
|||
(setq ymin -1) |
|||
(setq ymax 1) |
|||
(setq julia0 (cons -0.512511498387847167 0.521295573094847167)) |
|||
(setq max-iter 100) |
|||
(defun julia-iter-point (x y) |
|||
"Run the actual iteration for each point." |
|||
(let ((xp x) |
|||
(yp y) |
|||
(it 0) |
|||
(xt 0)) |
|||
(while (and (< (+ (* xp xp) (* yp yp)) 4) (< it max-iter)) |
|||
(setq xt (+ (* xp xp) (* -1 yp yp) (car julia0))) |
|||
(setq yp (+ (* 2 xp yp) (cdr julia0))) |
|||
(setq xp xt) |
|||
(setq it (1+ it))) |
|||
it)) |
|||
(defun julia-iter (p) |
|||
"Return string for point based on whether inside/outside the set." |
|||
(let ((it (julia-iter-point (car p) (cdr p)))) |
|||
(if (= it max-iter) "*" (if (cl-oddp it) "+" "-")))) |
|||
(defun julia-pos (x y) |
|||
"Convert screen coordinates to input coordinates." |
|||
(let ((xp (+ xmin (* (- xmax xmin) (/ (float x) (car julia-size))))) |
|||
(yp (+ ymin (* (- ymax ymin) (/ (float y) (cdr julia-size)))))) |
|||
(cons xp yp))) |
|||
(defun string-to-image (str) |
|||
"Convert image data string to XPM image with three colors." |
|||
(create-image (concat (format "/* XPM */ |
|||
static char * julia[] = { |
|||
\"%i %i 3 1\", |
|||
\"+ c #ff0000\", |
|||
\"- c #0000ff\", |
|||
\"* c #000000\"," (car julia-size) (cdr julia-size)) |
|||
str "};") 'xpm t)) |
|||
(defun julia-pic () |
|||
"Plot the Julia set in color." |
|||
(setq all "") |
|||
(dotimes (y (cdr julia-size)) |
|||
(setq line "") |
|||
(dotimes (x (car julia-size)) |
|||
(setq line (concat line (julia-iter (julia-pos x y))))) |
|||
(setq all (concat all "\"" line "\",\n"))) |
|||
(insert-image (string-to-image all))) |
|||
(julia-pic)</lang> |
|||
=={{header|F_Sharp|F#}}== |
=={{header|F_Sharp|F#}}== |