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.cljand pressCtrl+Shift+Enterto evaluate the file. - Emacs - run cider, open
core.cljand pressC-c C-kto 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.
- Visualize amplitude function & potential function. I have
draw-fieldwhichshow-fnenables, but it is rudimentary. - Add multi-octave noise and look into what the paper says about turbulence. (Look up 'advection' technique it mentions too.)
- Use 'real' simplex or OpenSimplex noise implementation that has a
gradient instead of doing it numerically. (If I understand Perlin &
Neyret's pseudo-advection right, it might also simplify that. Also,
note that Stefan Gustavson's
implementation
includes a parameter to rotate these gradients for this
pseudo-advection - see
srdnoise23.c.)
Description
Languages
JavaScript
91.9%
Clojure
8.1%