I developed what I now think of as a poem written in a dialect somewhere between a proof and a tweetstorm, technically an algorithm. I collected snapshots as I worked. See Limited Edition Prints
I started this project driven only by a desire to see what the diffusion aggregation process might look like in three dimensions. See Diffusion Aggregation
A 2d version I had done years ago bent sideways due to a weak bias in the random number generator. I wondered, what could I grow if I more directly manipulated the numbers driving diffusion?
I controlled the drift. Drifting particles moved randomly in x and y but moved relentlessly downward in z.
I controlled the aggregation. Particle that collided without meeting my criteria were discarded.
# Related
I have explored biased random processes to construct works of art using UCSD Pascal on a custom made PB-1 computer. These were printed as Pebeliths by directly exposing printing paper in an enlarger's negative carrier.
Morse Code Forever rendered in Algorithm Ink .
I created with Aza Raskin's Algorithm Ink a random recursive spiral suggesting the longevity of morse code transmissions. Titled Morse Code Forever the work has been used with my permission in various amateur radio publications.
# Tools
I chose to write in Ruby working in a scripting style with lots of small functions. I built a tree in memory as an array of tuples for each accepted collision. I generated solid descriptions from this, first at each step to make a movie, and one final version at the end to be 3d printed.
I used OpenSCAD to render my 3d designs as png images and as stl triangulated surfaces. This software will run in batch from the command line and interactively as a program editor. I would sometimes touch-up a design interactively and then modify my ruby program to incorporate touch-ups in all further editions.
My solid model would be broken down into triangles in three-space by CGAL which is built into OpenSCAD and many other applications. This process slowed dramatically when I switched from cubes to spheres as my aggregating particles.
I emit a scad file as each element is added to the aggregation. In a post process I convert each of these to a png file with OpenSCAD run in batch which gets progressively slower but does not require triangulation. A second script uses APNG Assembler to construct the single animation file.
# Production
We consider how we might improve our methods with each print. With #4 our design is now complete but we can still improve.
Print #6 failed to print correctly on first attempt. At first we thought this might be due to new application of adhesive on the print bed but a more likely culprit is simply the placement of the work on the bed.
Print #8 failed to print as it had grown too large for the printer's print volume. We regenerate a replacement #8 which fit fine. error
Print #10 is our first of our less hand-crafted prints. This means lots less to remember from print to print. See Double Digit Prints