This tool utilizes Perlin noise to generate dynamic vector fields that propel particles across a canvas. The project leans heavily on the work of Stefan Gustavson, who created a noise library in Java, Seph Gentle, who converted that library to JavaScript, and Johan Karlsson, who wrote an awesome article/tutorial on the subject, and whose code provided a foundation for this tool.

Check out the tool here, and the repository here!


A few creations:

I wanted to grant as much control as possible over elements of the canvas, from the more intuitive particle speed and acceleration contribution from the field, labeled as "field factor" under the particle subfolder in the gui, to the much less intuitive field parameters, labeled rather misleadingly as "volatility." These parameters control the variability of vectors' directions and magnitudes in the field across space. The behavior ought to be inverted, but, as it stands, a small "volatility" implies that that parameter of the vectors in the field will be more variable than it otherwise would be with high volatility.

Oh, and the neat little gui is thanks to dat.gui, an incredibly useful tool for sandboxes.