For this simulation a 3-variable implementation of the Perlin noise algorithm is used to generate a vector field on the canvas which acts upon thousands of particles. The inputs for the algorithm are two spacial dimensions (x,y) corresponding to position on the canvas and a third variable z which increments with time. The output is a unit vector that points in a random direction varying over time, the particles subject to the vector field in turn trace out beautiful chaotic paths.

The special feature of the algorithm is that it produces a *smooth* randomness so that adjacent cells do not point in completely opposite directions.

Click options above to experiment with different visual parameters controlling the simulation.