https://www.onirom.fr/ica.html Integer Circle Algorithm About 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. [049] Fractals Some interesting "fractals" produced by this algorithm: Mandelbrot, Apollonian etc. [flagship_1536x864_400x225] [Appolonian_orange] Your browser doesn't support HTML5 video. Your browser doesn't support HTML5 video. [159] [04] [05] [149] [202] [150] [151] [154] [157] [152] [01] [156] [153] Your browser doesn't support HTML5 video. Your browser doesn't support HTML5 video. Your browser doesn't support HTML5 video. Abstract 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. [020] [021] [022] [023] [024] [026] [03] [158] [160] [161] Your browser doesn't support HTML5 video. Your browser doesn't support HTML5 video. [162] [170] [171] [168] [173] [174] [184] [100] [101] [102] [179] [103] [104] [172] [110] [111] [300] [301] [302] [303] Your browser doesn't support HTML5 video. [304] [307] [308] [108] Your browser doesn't support HTML5 video. Your browser doesn't support HTML5 video. Your browser doesn't support HTML5 video. Your browser doesn't support HTML5 video. Your browser doesn't support HTML5 video. [176] Glitches 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 [g2] [g3] [203] [179] Circles Structures made of circles varying in size, one of my first experiments. (Note : the first UFO picture was composited in GIMP) [051] [052] [053] [054] [055] [056] [056] [057] [060] [061] [058] [059] [050] [062] [063] [overflow] Animations Some early animation attempts. (zoomed in) Your browser doesn't support HTML5 video. Links * nbickford: detailed article about the integer circle algorithm by Neil Bickford * minskys 3rd: 50+ images and introduction to the math * metaminsky: generalization of the algorithm * hrvoje: accuracy improvements of the original algorithm * blender3b: 3d version with Blender * sizecoding: my very small standalone executables (128 bytes, 256 bytes) --------------------------------------------------------------------- back 20/05/2021