a version with outlined edges (i prefer the still images it produces, but the animation suffers from distracting moiré patterns). default version without outlined edges.
for each pixel, store a distance, a scalar velocity, and an index into an array of colors. initialize distance and index to 0, velocity to the value of a noise function on (x,y). each iteration, increment distance by velocity, and velocity by constant acceleration. if velocity exceeds some threshold, reset to 0. if distance exceeds some threshold, reset to 0 and increment index into color array. after (velocity threshold / acceleration) iterations, each pixel has "traveled" the same distance, as each velocity has iterated over every acceleration increment from 0 to the threshold - every pixels index returns to the same color.
left click to restart
parameterized url (eg: with outlines, deeper)
source, built with processing