Integer Circle Algorithm


Collection of artworks made with the integer circle algorithm (also called Minsky circle) which is a very simple and fast integer algorithm to draw circles with very small number of operations.

The original algorithm come from Marvin Minsky HAKMEM memo.

Here is basically the two lines by which all the artworks below were started from:

x += y >> 4;
y -= x >> 4;

My first experience with this algorithm was as a fast way to generate sinusoidal oscillators for sound synthesis. I then tried some graphics experiments by reducing the original algorithm complexity (by replacing multiply by bits shift as in above) and then created a program to generate combinations (note: at random) of shifts operations, output was filtered first by algorithmic complexity then manually with a tool.

The algorithm output is quite fascinating in term of complexity and variations as shown below, it is my favorite algorithm to this day.

Most of the generated pictures below can be produced with very few machine instructions (just simple 32/16 bits arithmetic!): 32 to 256 bytes of code on modern processors.

The images use saturated arithmetic, symmetry and sometimes colors based on iteration count. Some of the complexity originate from integers overflow.


Some interesting "fractals" produced by this algorithm: Mandelbrot, Apollonian etc.


The algorithm is capable of generating some abstract images by pushing the parameters to the extremes or by using massive layering plus symmetry as in the second image.

There is also grid / lines patterns, polygons and some blurry background looking like its made by Langton's ant / Turmite type automaton.


The program which was used to generate parameters combination produce extremely glitchy / noisy images sometimes. Some of the output of that program is available here: zip1 zip2 zip3 zip4 zip5


Structures made of circles varying in size, one of my first experiments. (Note : the first UFO picture was composited in GIMP)


Some early animation attempts. (zoomed in)