Dec 29, 2019
This algorithm randomly packs non-overlapping circles of various sizes into an area. Then, for each circle, it iteratively shrinks the circle by a fixed proportion, and then moves it slightly, such that always remains within the bounds of the last circle, but has a slightly different center. The way the circle moves during each iteration is determined by an underlying flow field. Each circle is then drawn with a low opacity.
For this last image, the way the circles are rendered is different. Instead of drawing each circle with a low-opacity fill, each circle is drawn with a black outline and no fill. This makes it easier to see how the algorithm works, and produces a unique visual effect. (Note: In this version, the number of iterations of shrinking performed on each circle is lower, but each iteration shrinks the circle by a greater degree to compensate.)