curlnoise

A Quil sketch which implements what is described in Curl-Noise for Procedural Fluid Flow.

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 to run the ClojureScript version in the browser.

TODO

  • Better docs.
  • Make things more interactive, e.g. let the user place obstacles.
  • Factor out the potential function rather than burying it in update-state.
  • Visualize amplitude function & potential function. I have draw-field which show-fn enables, but it is rudimentary.
  • Figure out reasonable boundary behavior. I'd like to do toroidal, but I would need to gradually blend the potential function at the edges for this to work right (otherwise particles are just stuck at the boundaries due to the discontinuity).
  • Use 'real' simplex or OpenSimplex noise implementation that has a gradient instead of doing it numerically?
Description
No description provided
Readme 1.6 MiB
Languages
JavaScript 91.9%
Clojure 8.1%