# curlnoise A [Quil](http://www.quil.info/) sketch which implements what is described in [Curl-Noise for Procedural Fluid Flow](https://www.cs.ubc.ca/~rbridson/docs/bridson-siggraph2007-curlnoise.pdf). Very much a work-in-progress as I am not especially experienced in Clojure, nor in the mathematics of this paper. ## Usage This runs in both Clojure via `lein run`, and ClojureScript via `lein compile` or `lein figwheel`. Uncomment the `(run-sketch)` and the below should work: - LightTable - open `core.clj` and press `Ctrl+Shift+Enter` to evaluate the file. - Emacs - run cider, open `core.clj` and press `C-c C-k` to evaluate the file. - REPL - run `(require 'quil_perlin.core)`. `lein cljsbuild once optimized` for minified/optimized code. This might be obvious to experienced lein users, but not to me. ## Demo See [here](http://htmlpreview.github.io/?https://github.com/Hodapp87/curlnoise/blob/master/resources/public/index.html) to run the ClojureScript version in the browser. ## TODO - Better docs. - Make things more interactive, e.g. let the user place obstacles. - Visualize amplitude function & potential function. I have `draw-field` which `show-fn` enables, but it is rudimentary. - Use 'real' simplex or OpenSimplex noise implementation that has a gradient instead of doing it numerically. - Add multi-octave noise and look into what the paper says about turbulence. (Look up 'advection' technique it mentions too.)