dinkolas – FinalDocumentation

“Bug Noodles” consists of overlapping noodle tubes. The code generated a grid of noodles, and for each tube that threw an error, the error text and stack trace was drawn instead of the noodle. Some of the debug information was drawn too: the graphs that were computed to calculate the intersections/unions/differences of the noodles have vertices/edges/faces, which were drawn with pencil/charcoal/pen.

For this project, I initially wanted to use something like this as inspiration:

An Exhibition of Art by Ian Miller – Nouvelle Art

One aspect of it I noticed was all the overlapping tubes. So I set out to create a boolean library of my own to create arbitrary mutually and overlapping objects (and self overlapping). Here were some of my progress images and debug views:

I basically ran out of time for my original idea, because the boolean library was still too buggy for the original concept to really be feasible with only a few days remaining. Instead, I embraced the debug views that I had been steeped in for about a week (and had admittedly become fond of), and plotted those.

dinkolas – FinalWIP

Here’s the reference image I’ve been using to guide my thinking about 2D, 2.5D, and 3D drawing:

An Exhibition of Art by Ian Miller – Nouvelle Art

I have developed my own boolean library, partially just for fun, but also so I have extensive control over overlapping regions, which will be necessary for some of my braiding algorithms.

Here’s a rough summary of my thinking for algorithms that will be easier to develop now that I have the control I want:

Tentacles will have a start and an end, with bases and end caps. They can potentially spawn branches.

I already have some code to generate fields for the sky/ground. Depending on time, there may be many modular doodads.


I plan on making an elaborate generative multiples series. I was inspired by the Ralph Bakshi animated film Wizards, and looked into it. Some of the design was done by Ian Miller, who makes drawings like this:

Heaviest of Art on Twitter: "The H.P. Lovecraft inspired work of Ian Miller. #HeaviestofArt… "

I realize I can’t get things quite this elaborate in a generative way in just a couple weeks, but my plan is to attempt some of these elements (there are a few surprisingly algorithmic things in here, like circle packing, fields). The tentacles overlapping/twisting/winding is particularly appealing to me, along with the particular blend of 2D elements (I’d consider the mouths with teeth fairly flat), 2.5D elements (sections of tentacles that are organized in a way to be compelling in 2D, but have overlaps), and 3D elements (the ground platforms, overall depth of the image). I would also like to replicate some of the hatching style, although I can count at least 4 distinct hatching techniques in the image above.

I’ve already begun experimenting with some 2.5D tentacle braiding, although not much.

11/08 – Fully functioning boolean operations with polylines, lines. Tubes algorithm complete.

11/15 – 2d elements to cap tubes, tests w arrangements of tubes/caps

11/22 – 3d tube caps, layering. potentially more scattered 2d elements throughout layers (like the black sphere on the ground, or the human figure). potentially sky field design, although that is very much a stretch goal.

11/29 – multi color plots with 3d, 2d, and tubes.


I’ve already implemented or at least studied many of the techniques listed on Jason Webb’s page, but there were a few I hadn’t heard of/didn’t know how they worked, like Wave Function Collapse. So I researched how that works, which ended up being pretty cool, sort of reminded me of Markov chains.


love ngon

I ended up going with a very simple thing, where I made 16 drawings with my mouse in p5 and fitted them together. The black lines are drawn by the machine, the color was done by hand. I’m still pretty happy with the result despite its simplicity.

Before I did this, I attempted several other more complex things, but didn’t have the time to finish them. The original plan was to take parametrically modeled 3d objects (heads w/ faces, specifically), generate a 2d drawing of each of them, then warp the 2d drawings by stretching either their 2d outlines or 2d convex hulls to fill various tiled shapes (either a regular pattern or maybe voronoi cells). Too complicated!


I assembled a “flipbookit” which is a little contraption to play a 24 frame looping animation drawn on the backs and fronts of 24 cards. Originally, the animation loop was a series of smiley faces being slurped into a tube, but the way I shuffled around the cards it ended up being a bunch of smiley faces being spat out of a tube instead.

Each smiley is made up of four chains of springs and a bunch of repelling points: the spring chains make up the outline, two eyes, and a smile, and the whole face is filled with repelling points to give it some volume. Two of the points are selected to be the left and right pupils, respectively. The whole face is sucked into the tube with a force field that is applied to every point. There are also collisions with the tube walls.

Each of six faces is on its own 24 frame loop, and the loops are offset from each other by 4 frames. In order to exaggerate the acceleration of the faces as they are sucked into the tube, there are actually more sub-frame simulation steps towards the end of each individual 24 frame loop than in the beginning. It starts out with just a couple simulation steps on the first frame, and ends with several hundred on the last frame. The faces are also filled with a simple parallel-line hashing with three distinct colors.

Originally I planned the walls of the straw to be a thick outline, the outlines of the smileys to be thin pens, and the fill color to be cheap color markers. This all worked out except for the thin pens, which didn’t like to draw on the plastic-y surface of the flipbookit cards, so I ended up doing thick marker lines for all the lines. I suspect that this was actually a good thing, and helped by increasing readability of the animation, and by fudging some alignment errors both between the lines/colors within a frame as well as alignment between frames.

Each frame is drawn on two cards, the top half on one card and the bottom half on another card. Each card is printed on the front and back. Thus half of the cards have the top of an odd frame on one side and the bottom of an even frame of the other side; and the other half of the cards have the top of an even frame on one side and the bottom of an odd frame on the other side. Luckily I could fit twelve cards on a 11″ x 17″ AxiDraw, and there are two of those, so I could print all the odd frames at once, then flip all the cards over and shuffle them around and print all the even frames, with two AxiDraws in parallel. So two AxiDraws, front and back, black outlines and three colors, made for 2*2*4 = 16 distinct svgs (actually 2*2*5=20 cuz originally the straw outlines were separate from the smiley outlines). I figured flipping and taping down the cards was more of a pain than swapping markers, so I only flipped twice (once for each AxiDraw), and swapped markers 16 times.


“A blob is an illusion of controlled chaos” (Entering the Blobosphere, Laura Hyunjhee Kim). Is the illusion the control or the chaos? I imagine you could get different blobs by approaching it in both ways.


An eye generator: https://preview.p5js.org/dinkolas/present/f1BgPMhnl

I took this as an opportunity to really start developing my drawing code base, in which I implemented pretty much everything on my own, besides rendering lines, which is done with Pixi.js. The cropping to squares is more elaborate than it looks, and I will soon have the capability to do boolean operations with arbitrary objects. This didn’t leave me quite as much room to experiment with hatchings as I would’ve wanted, but I still learned from designing these. One of the biggest challenges was convincingly filling at a given percent darkness. The first approximation treated each line as being 1 unit thick, so if there was 100 square units of space, then there would need to be 30 units of length of line to fill 30% darkness. However, depending on different patterns, this 30 units either felt too dark or too light for 30%. I imagine more experimentation will give a better intuition for this. The most interesting one to me was the eyeball hatching, which ended up taking the longest to plot due to lots of small details. I suspect that much of this detail could’ve been removed without impacting the final look, so getting detail on the right scale would be good.


I found the different material problems people were running into interesting – with pens it’s nibs, with laser cutters it’s heat, with knitting it’s trouble with the fabric, etc. However, people across these different media seem to be happy sharing advice. The interdisciplinary nature of it is pretty cool.