Computer Art

My new book "Computer Art and Illusions: Programs for Artisans and Craftspeople" is scheduled to be published in November 2020.

I love artistic craft projects, especially in wood.  However, I am completely devoid of ability to draw or paint; if I were to draw a tree it would be two curved lines for the trunk and a blob on top.  The people that emerge from my drawing efforts are stick figures.  Yet I often want to decorate my wood and 3D printed creations with pretty artwork.  It occurred to me some time ago that I might be able to put my mathematical and programming abilities to work in ways that use the computer to do the drawing for me.  After writing a few interesting programs to do just that I decided to make the executables and complete source code available to the public as free downloads from my website, and document their inner workings in an inexpensive book.  So here it is.  This book and program set includes:

Vortex - This program creates an image of a vortex plunging into an abyss.  A black-and-white checkerboard is distorted in such a way as to give the appearance of a hole into which objects can be sucked.  If this pattern is transferred to a large floor covering, examples of which can be seen for sale on the internet, the effect can be striking.

Blocks - All you need is a quantity of three slightly differently shaped and colored parallelograms, easily mass produced, to create an impressive 3D illusion.  I have seen woodworkers making and selling beautiful cutting boards in this pattern.  A little careful veneer work can produce gorgeous covers for wood boxes.  This program provides the exact shapes needed, and lets the artist visualize what the end product would look like.  The size and shape of the illusory cubes, as well as the viewing angle, can be adjusted by the artist for maximum creative control.

Julia - Programs for visualizing Mandelbrot and Julia sets were a dime a dozen in the 90's, and are still somewhat available on the internet.  My program goes beyond the common versions in two ways.  First, it uses a very advanced algorithm that can produce only binary (such as black and white) images of these sets, but it does so with extreme detail, reaching resolutions far beyond what can be obtained with the usual ‘dwell escape’ algorithm.  Second, it generalizes Mandelbrot and Julia sets to the quaternion (four dimensional) domain, lets the uses define a 3D cross sectional object from the 4D set, and then it uses ray tracing to display this cross section with white or colored lights arrayed in any of several user-defined positions.  Julia sets in four dimensions have a strange, almost creepy otherworldly appearance and can make for highly unusual decorative patterns.

Lin - Aristid Lindenmayer devised a mathematical language that can be used to describe the growth and structure of plants.  Just a few lines of Lindenmayer code can serve to rigorously describe trees, bushes, flowers, and even alien-looking plant-like creations.  The Lin program supports three levels of Lindenmayer systems:

1) Simple edge replacement algorithms produce snowflake curves, Koch curves, dragon curves, Sierpinski gaskets, and so forth.  This primitive but often lovely family of curves makes fabulous decorative ornamentation.

2) Two-dimensional axial generation produces flat but interesting plant-like objects, with strikingly realistic branching patterns.  These simple plant representations make perfect focal points for handcrafted items.

3) Three-dimensional axial generation can produce shockingly realistic plants and flowers, reminiscent of plant sketches made by professional artists and illustrators.  The Lin program allows for an almost unlimited number of productions, up to ten different colors for different plant parts, and even up to three different versions of each production, with versions randomly selected according to user-specified probabilities.  This lets the artist create entire fields of plants, all of the same ‘species’, but no two exactly alike.

All of these programs run under 64-bit Windows.  The source code compiles with Microsoft Visual C++ 2019 and probably most other modern C++ compilers (although I have not tested the code on any other compilers).


To download the complete collection of executables and source code, click here.  Be sure to unzip with the 'preserve directories' option enabled, as each program will be placed in its own directory.