Circle packing

Projects

Circles are ubiquitous in nature as they minimise surface for a given area. Circles arrange themselves in efficient ways due physical forces – lipid vesicles inside cells for example. The patterns look pretty cool too.

Randomly generated circles in a range of acceptable radii

There are several simple circle packing algorithms which can be used to generate these patterns. A central requirement in many of these algorithms is determining if a given circle is wholly outside of another circle. This can be simply calculated by requiring the centre of the new circle is at least separated from the old circle’s centre by the sum of the two radii. A simple circle packing algorithm then randomly generates centres and radii and tests to see if these are wholly outside of all of the current circles. This algorithm produces more small circles.

Initial large circle with smaller circles generated around it.

It is then simple to add other requirements and initial conditions. Large circles can be used to produce negative space around which the other circles can be distributed.

The packed circles can be filled in a variety of visually interesting ways.
Circles above a certain size are not drawn

Controlling the drawing process is also interesting, smaller concentric circles can be draw inside larger ones, or some class of circle can be skipped out.

The images produced are typically visually complicated. Simplifying them or adding order can significantly change the nature of the image.

To take this process further, more efficient packing and drawing algorithms could be implemented, as could more filling techniques (lines, zigzags, spokes) and colours. Further, generating these patterns could be generated according to the intensities of a photograph.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s