Jump to my Home Page Send me a message Check out stuff on GitHub Check out my photography on Instagram Check out my profile on LinkedIn Check out my profile on reddit Check me out on Facebook

Mitch Richling: Circle Art Part 2

Author: Mitch Richling
Updated: 2022-10-05

Table of Contents

1. Circle Art

The images here were inspired by a Scientific American blog post. The idea is is to draw a collection of circles that form an artful shape. Circles have a center and radius, so all we must do is figure out where to put the centers and how big to make the circles. The centers are placed along a parametric curve showing some symmetry in the plane. As for the size of the circles, any nicely periodic function with the same period as the overall parametric curve will do. Doing something similar with color adds to the final image. I know. This all sounds a bit vague, and the best way to make it concrete is to look at some code. For this "Part 2" I have used a raster graphics approach, and C++ as the programming language. The example program is one of the example programs that I ship with my graphics library (MRaster).

Unlike the SVG approach in "Part 1", the circles rendered here are the product of simple rasterisation, also frequently called scan conversion. By "simple" I mean direct, thin line rasterisation with no anti-aliasing or sub-pixel precision. Pretty much just like they drew lines in the 1970's & 1980's on things like the Atari 2600 and Commodore_64. The raster artifacts meld together in the resulting images to produce an almost textural effect.

2. Gallery

circles_015v2.png circles_017v2.png circles_014v2.png
circles_002v2.png circles_006v2.png circles_007v2.png circles_005.png
circles_010v2.png circles_012v2.png circles_013v2.png
circles_001a.png circles_003.png circles_004a.png circles_015.png
circles01.png circles03.png circles06.png circles07.png
circles02.png circles05.png circles04.png

I use some of these images as desktop backgrounds.

3. Another Approach

We can obtain interesting results using a smaller number of circles and a more sophisticated rendering model. In Part 1, I use a SVGs to render the results. So check out! Here is an example image:

exp-svgCircles-OUT-craneknotA_1024.png