10 Apr

Gengzhi Goblets

One might think that having produced prototypes of the Gengzhi Goblets, our work is just about done to produce sufficient quantity (roughly 300 of each) to serve as G4G13 giveaways. The question comes down to materials and expense. If the Gengzhi Goblets are actually to be used as measuring cups, then they need to be made from a food-safe material. There are not many options in the online 3-D printing world for food-safe materials. Other than bulky, heavy ceramic materials, I found just the Nylon PA12 from Sculpteo, and ordered a set of cups from them. The total came to over $200 for the set, clearly making 3D printing of 300 sets prohibitive.

For larger-quantity production, the industry standard appears to be injection molding, and there’s no difficulty in obtaining food-safe plastics from that process. So that’s the avenue I pursued in this case. The most economical supplier I found was Firedrake, although their lead times seem to be a bit longer than some other manufacturers. Ideally, you should be finalizing your designs at least three months before you need the items.

However, the next difficulty turned out to be that injection-mold designers don’t want an STL file, typically made up of hundreds or thousands of tiny triangular facets. They prefer STEP files, which consist of many fewer, more structured geometric elements: rectangular solids, cylinders, Bezier curves, and the like. And it’s an entirely different collection of programs for creating and manipulating STEP files. I did some modeling in FreeCAD (free and open-source), but ultimately had difficulty with intersections of two curved surfaces (e.g., in the attachment of the handle to the cup body) in that program, and so completed the cups in OnShape, (online, closed-source, but free for non-commercial use).

Many of the basic steps are similar in flavor with these “computer-aided design” programs. I could still import the STL from SageMath, but now I fit a Bezier curve to one ridge of the cup. Then I could make multiple copies of the ridge by rotating around an axis down the center of the cup, and then sweep out a surface from one ridge to the next. That created a membrane, which I had to thicken to a wall as before. Then I created a handle as a rectangular solid and used Boolean operations to unify it with the cup. To beef up the attachment to the cup I also combined in a half of an elliptical cone at the junction. Finally I could emboss the letters and puncture the hole in the handle (by Boolean-subtracting a cylinder). The final models look something like this:

Note, you can see that in such a design you typically include small bevels at most of the edges, and you also very slightly angle (by a few degrees) all of the “vertical” surfaces so that the piece will unmold more easily.

When your design checks out, you just send it off to the injection molding firm, and they do their magic from there. Here’s the mold that Firedrake produced,

and the completed Gengzhi Goblets have just arrived!

10 Apr

Portion Prototyping

By exploring the theory, the following shapes arose as a natural G4G13 giveaway: a regular 13-gon prism, a cup with octagonal cross sections whose octagon sides scaled with height as √(1-h³), and a cup with pentagonal cross sections with sides scaling as h3/2. The largest octagon and pentagon would be sized to have the same area as the 13-gon, which we saw would guarantee that the octagon cup (or “Gengzhi Goblet,” as we’re calling them) would have 3/4 the volume and the pentagon goblet would have 1/4 the volume. So we would scale the 13-gon goblet to have volume equal to that antiquated measure, 1 U.S. cup, or about 236 cubic centimeters.

You can actually do all of the above for any proportion of height of the measuring cups to diameter of the measuring cups. When I started the implementation phase, I was thinking one-to-one, so rather than height and radius of the cups being equal as in the design phase, I produced cups whose height and diameter are equal. So they all ended up taller and thinner than the images in the design post, but that doesn’t affect the intrinsic volume relationships.

To create prototypes, I had access to an XYZprinting Nobel 1.0a SLA 3D printer. The software for this printer likes to import STL files. To convert the mathematical concepts generated in the design phase to STL files, I chose to use the free, open-source software package SageMath. First, I needed to calculate the height of all three cups and the (maximum) radius of each cup. The maximum radii differ because we want the area of the largest cross section of each of the cups to be identical, but the relation between radius and area differs slightly for each of a pentagon, octagon, and 13-gon. You can see the details of those calculations in a separate post. In any case, once the height H and pentagon radius r5 (say) have been computed, here’s how you get an STL file for the pentagon cup. We need a parametric surface whose radius goes as h3/2. In SageMath we execute def r(h): return r5*h^(3/2). To get the cup, we define def Px(h,t): return r(h)*cos(t), def Py(h,t): return r(h)*sin(t), and def Pz(h, t): return H*h. Since (cos t, sin t) parametrizes a unit circle as t varies from 0 to τ = 2π, Px and Py parametrize a circle of radius r(h), and Pz just stretches the height out to the desired value. Now, you might object that this parametrization yields a solid with circular cross sections, and you would be right; but we recover the desired pentagonal cross-sections by deliberately limiting the number of mesh points that SageMath will use to produce its plot:

pent = parametric_plot3d((Px, Py, Pz), (0,1), (0, tau), plot_points=[40,6]) followed by pent.show() produces the following.

(It might seem fishy that you use 6 points in the t-direction of the mesh to get 5-sided figures, but note that t=0 and t=τ, the first and sixth points, actually represent identical points because of the &tau-periodicity of the circle parametrization.)

The other two shapes are similar, although you have to be careful with the prism; since it has a corner, you can arrange that as h goes from 0 to 1/2, r goes from 0 to r13 while z stays put at 0, and as h goes from 1/2 to 1, r stays put at r13 and h goes from 0 to H. In SageMath, this looks like def r(h): return min(r13,2*h*r_13) and def Fz(h, t): return max(0, 2*(h-0.5)*H). Here are images of the resulting plots:


To get these plots out of SageMath as STL files, the commands look like:

p_stl = pent.stl_ascii_string()
pfile = open('/path/to/your/file','w')

Unfortunately, these STL files are not ready to print directly; they consist of just a “membrane” with no real thickness. To make something printable, we need to thicken them up and add handles and labels and such. There are many possible packages one might use to do that; I chose MeshMixer, a free but closed-source program from AutoDesk. MeshMixer has a tool called “Offset” (that is only available when you have a surface selected) that is tailor-made for turning a surface into a thick wall. However, to keep the top lip of the cup flat, you should first mirror the cup as in the left picture below, then use an Offset of 2mm in the “Normal” direction, and slice off half of the result to get something looking like the right-hand picture below.
You can then use the rectangular solid primitive to add a handle. It’s floating separate from the cup, so you have to cut open some apertures on the cup and handle, and then use the “Bridge” and/or “Erase & Fill” tools to join them.


Finally, once the handle is fully attached, you can use MeshMixer’s letter embossing facility to add the caption on the handle. (I’ve also used some Boolean operations to cut a hole in the end of the handle.)

Now you could transfer the resulting STL to XYZprinting’s software, but in my experience the support-generation code in their software is not as reliable as that in MeshMizer. So under Analyze, use the “Overhangs” tool to generate supports. Now transfer to XYZprinting and have it “slice” and print the model to get your prototype!

05 Apr

Boxtahedral Tower

763 6″ cardboard boxes:
232 each of 3 colors,
67 plain
2000 twist ties with beads
packing tape, roughly 1 mile

At last the day came for the installation of the Boxtahedral Tower at the Golden Gate Stem Fair. Here are all of the materials waiting to be set up.
The build started off smoothly, with double rows of interlaced boxes quickly turning into trusses.
The struts came together to form the top peak, which by the end of the first day, had turned into a tetrahedron.

On the second day of construction, the first of the so-called “unknown unknowns” hit. Here’s the construction at the end of that day:

Doesn’t look much different, does it? If you notice, though, it’s up on chairs now. When we simply tried to lift it up there at the beginning of the day, the horizontal members all but fell apart. When we tried to figure out why — after all, the struts had tested out pretty rigid in prototyping — we discovered that the packing tape barely stuck to the paint. It stuck very well to the untreated cardboard, but basically pulled right off of the paint. And it had never even occurred to test whether the tape stuck differently to painted or plain cardboard. So, to make a long day two short, it was spent solely on replacing the centers of horizontal struts with unpainted boxes, which took the tension beautifully, so that at the end of the day we were at the point we expected to be five minutes into the day.

The third day brought another unknown: the ceiling height. Turns out there was not five meters of height available in the venue. Fortunately, we could quickly scale down the bottom level by half, so that it became just the top half of an octahedron (which has a hexagonal footprint). So here’s a half-size triangular face waiting to be inserted under the tetrahedron (in place of one of the chairs). (Oh, and that means that the materials list above specifies more than was actually used, since it’s for the full tower as planned.)

And thanks to the cheerful diligent participation from all of the people pictured below, including the director of the Golden Gate STEM Fair, Marcus Wojtkowiak, (but also many others pictured and not pictured, too numerous to list), we completed the world-premiere installation of the Boxtahedral Tower.You can see it’s just about brushing the ceiling.

And here’s the obligatory shot looking up at the ceiling in the center of the structure. One of Studio Infinity’s finest constructions!

05 Apr


In addition to the main, planned build at the Golden Gate STEM Fair, and thanks to donations of materials from Primed Minds, there was also a do-it-yourself/take-home table at the STEM Fair. Participants produced such towers as this one:

However, this column isn’t mainly about the inquisitive fun that participants at the take-home table had, or the specific structures they built, or the interesting fact that you can build oct-tet type configurations with rectangular solids of any proportions (not just cubes), even though all of those things are interesting and worthwhile. It’s about the fact that you can always learn something from anyone, and that inspiration can strike anywhere.

I ran headfirst into these facts after I had returned to Studio Infinity headquarters from the STEM Fair and was putting away all the materials from the take-home table that nobody had claimed. Fortunately, I had waited a day to do this and was feeling refreshed and less inclined to just toss materials in the garbage bin. When I opened up one of the construction units that a visitor to the table had made, my first reaction was “Oh, this person didn’t quite understand how to put the unit together.” But my second reaction was “Oh, this person put the unit together in a simpler, faster way than we were suggesting!” So the rest of this post is the recipe for “Boxtets v2.0: The Wisdom of Crowds.” (Compare to the original recipe for Boxtets.)

Boxtet v2.0
unassembled cardboard box
4 twist ties or pipe cleaners

Of course, the particular innovation documented here must have stemmed from some specific visitor or group of visitors working together; but since I have no way of knowing the particulars, I just have to credit the discovery to the “crowd.”

Begin to assemble the cardboard box as normal, but before closing up the bottom, insert two pipe cleaners each protruding from two corners. Select corners so that there is a reasonable length of the pipe cleaner protruding from the box at each end. Then seal up the bottom as normal. Pull the pipe cleaners taut on the inside, so an equal amount protrudes at each end. Similarly, before sealing the top, insert two pipe cleaners each protruding from two corners. Seal the box up the rest of the way, and you have a Boxtet, constructed much more quickly than before.



One caveat about using these Boxtets: if you only attach to one end of a given internal pipe cleaner, that pipe cleaner could pull out from its other end. So you may want to connect it to a wooden bead on the outside of the box if it’s not connected to anything else. Any pipe cleaner which is connected to other Boxtets on both ends will be fine.

05 Apr

GGSF: Prep

A brief post about the importance of prepping and prototyping for a build, and a couple of things that came up in the prep for the Golden Gate STEM Fair event. First, there’s just the sheer volume of supplies for such an event. Here are lots of beads getting outfitted with twist ties, for example. Also, to make the sculpture look more attractive, the boxes needed to be painted, 300 each of three colors.

More importantly, you get a feel for the structural characteristics of your medium. Experience (and physics) show that some sagging of horizontal members in a structure like this is inevitable, but full-scale stress tests like this one revealed that the stiffness of the struts varied greatly depending on their orientation. With the top row of boxes vertical as shown, the sag was acceptable, but rotated 90° (about the long axis), the struts were far less rigid, with all of the edge-to-edge joints acting like hinges.

As a result, additional methods of attaching boxes edge to edge needed to be developed. First, the boxes could be assembled with two flaps still sticking out, like so:. That way the flaps could be taped to the adjacent boxes in the structure. The cubes are still positioned edge-to-edge, just linked more securely. And second, for making the double diagonal row of boxes along the middle of each truss, we could just slide the flaps from adjacent boxes into each other, like this:
These changes produced very rigid struts, as you can see in the picture below, leading to high confidence going into the Golden Gate STEM Fair build.

05 Apr

Boxtahedral Trusses

Ok, all of the ingredients were in place to plan a large-scale construction for the Golden Gate STEM Fair: cubical units that can attach at edges and the theory linking them to the oct-tet lattice. I just needed to put it all together into a plan for something interesting and substantial that could be built out of lots of 6″ cubes (but not too many). Since height is a key factor in drawing attention, a nice round figure of 5 meters seemed like a good goal height for the structure. But what to build?

(Note that this post is intermediate between the MakeStream and the MathStream; there’s not much theoretical going on here, but neither is anything physical getting built. Instead, this post is about planning and modeling, so I will leave it in MakeStream and tag it as “virtual.”)

A first natural structure to build in the oct-tet lattice is an oct-tet truss, comprised of a row of octahedra with the tetrahdedra that bind them together.
Notice that there end up being four parallel chains of struts that extend straight along the truss, at the top, bottom, and both sides. That observation means that oct-tet trusses (perhaps unsurprisingly) proceed along the strut directions of the oct-tet lattice. In other words, we should be able to connect the trusses up at the same angles (60°, 90°, 120°, etc.) as the struts of the oct-tet lattice.

So, the possibility presented itself of using oct-tet trusses to build a large-scale model of what’s going on in the oct-tet lattice itself. The simplest subunit that shows some of the key aspects of the oct-tet lattice is a regular tetrahedron atop a regular octahedron. This is also about the most efficient way to achieve height in the oct-tet lattice; making just a single tetrahedron is more efficient, but to get a five-meter-tall tetrahedron, the individual trusses would have to be so long, it’s doubtful they would be sufficiently rigid.

So that’s how the plan for the Boxtahedral Tower at the Golden Gate STEM Fair was hatched. It would be a regular tetrahedron atop a regular octahedron, designed to be five meters tall. Now I just needed to make sure the trusses made out of boxes would connect the way I wanted, and I needed a model of the whole structure to double check part counts and to use in informational materials.

My first go-to geometry modeling tool is GeoGebra, so I fired that up and started constructing cubes. I was able to create enough to get a good view of a 60° joint between two trusses (green and purple in this shot).

But at this point, it was just taking too long per cube added, given back-of-the-envelope calculations showing there would be about a thousand cubes in all. Plus the GeoGebra interface was just beginning to slow down noticeably with so many objects. So I needed a better way to do the modeling. The answer turned out to be a free tool called VoxelBuilder. This is explicitly designed to manipulate colored cubes in a 3-d lattice, and with a bunch of rapid-fire pointing and clicking, I was able to generate this convincing rendering of the final tower.

A couple of caveats: In order to get a model this large entirely onto the screen, it’s necessary to extend the limit by which VoxelBuilder allows you to zoom out. To do that, you need to install Node.js on your system, clone the VoxelBuilder Git repository onto your system, change line 351 of the file index.js from var tooFar = distance > 3000 to var tooFar = distance > 30000, run npm install; npm start in your VoxelBuilder directory, and then connect to your running copy at http://localhost:8080. Also, you should be aware that VoxelBuilder currently limits the rotations you are allowed to do on your model (basically, you can’t look at it “from underneath”), so to get the image above I had to print the model in a different orientation and then rotate the resulting image.

But these technical obstacles overcome, I had all of the pieces necessary to plan the event.

05 Apr


6 boxtets

Here’s a very pleasant first construction to make with your boxtets. To link two boxtets together at a vertex, first make sure that the two vertices are snug up against each other — don’t leave any space. Then twist the two (long ends) of the twist ties together tightly, roughly four half-twists. (I recommend always twisting clockwise when building, as it makes taking them apart easier; then you can always twist counterclockwise when disassembling.)

To make the cuboxtahedron, first connect three boxes in a triangle. Then note that two edges of connected boxes make a sort of “V.” Turn that “V” into a triangle by adding a fourth box. Do the same with the other two “V”s formed by the original triangle, and then bring all three of the new boxes up around top where their opposites sides will meet to form their own triangle, which you should fasten together.

And voilà, you have the cuboxtahedron!

Why do I call it that? The inner shape of this structure, consisting of one face from each boxtet and the triangular spaces among them, is a well-known semiregular polyhedron called a cuboctahedron. In our case, it’s missing more than half of its faces, but nevertheless creates a surprisingly rigid, symmetric, and pleasant structure for our simple construction. If you have more boxtets, you can continue attaching more of them at the vertices — see what happens when you do!

04 Apr


As a result of the last couple of constructions, when Studio Infinity signed up to do a large-scale construction at the Golden Gate STEM Fair, I had the oct-tet lattice on my mind. And for a long time, I had wanted to exploit the connection between cubes and the oct-tet lattice. I just needed a way to connect cubes edge-to-edge.

Jürgen Richter-Gebert, founder of the ix-quadrat mathematics museum in Munich, Germany, suggested I could adapt the hinges he uses for making variable-angle kaleidoscopes. These hinges work extremely well, but they require a strap that at the joint changes which side of the strap is fastened to the boxes. This could probably be done by arranging the hooks and loops of double-sided velcro straps carefully, but I was afraid that the attachment would be too complex for a large-scale construction.

In another vein, I did a small construction connecting cubes vertex-to-vertex while I was the author of Math Mondays at Make: Magazine online. That connection method, however, required working on the insides of boxes in place in the structure before closing them up, which was much too intricate to scale up.

But then I realized that with a good, tight, vertex-to-vertex attachment, you can simply connect pairs of adjacent vertices to each other to create a strong edge-to-edge connection (and you can even put cubes face to face and attach all four corners to connect them that way as well).

So, here’s the procedure for making a cube with a securely fastened twist tie protruding from each vertex, ready for twisting together however you like to make cube-based sculptures. Given how they can be used to create oct-tet truss structures, I like to call them boxtets.

(for one boxtet)
cubical cardboard box
8 heavy-duty twist ties
8 large beads
packing tape

Some notes on the materials: You can buy cubical boxes online in a variety of sizes very cheaply; I used 6″ Uline boxes, which are currently available in bulk for 33 cents apiece. There are also a variety of twist ties available; if you’re planning on re-using your components, make sure to get the most heavy duty ones you can; I ordered from supplyplaza.com. Six to eight inches long work well; I’d recommend longer if you’re doing a large construction, even though the long wires sticking out look a bit awkward at first. Longer wires are just easier to get a hold of and pull tightly, and large constructions require very tight connections. Finally, I recommend beads at least 15 mm in diameter, preferably a bit larger, as they are what keeps the twist-ties from pulling out of the corners of the boxes. You want to use large-hole beads to make it easier to feed the twist-ties through.

Here’s how to put a boxtet together. First, you need to attach the twist ties to the beads. Insert a twist tie into a bead so that one end protrudes about twice the length of the bead, then bend it back around and twist it to itself, making sure to (a) twist it tight against the surface of the bead and (b) leave a small “tail” extending from the twist as well as the main long section of twist tie. Here’s what you should get.

When you have eight done, it’s time to assemble the boxtet. Basically, you are assembling the box as usual, except before sealing up one side, you slip a bead down the slit between the flaps as shown at right — note that both the long end and the short “tail” of the twist tie are on the outside of the box. The purpose of the tail is to keep the bead/twist tie combination from sliding all the way into the box so that the twist tie is no longer accessible. Make sure you have beads in all four slots (as on the left) and then tape it up normally, like so (one piece of tape should suffice, as there’s essentially nothing inside the boxes).

Insert beads in the other side of the box and tape that up too, and you have your first boxtet.

In the next post we’ll see what we can build with them.

Update: At the Golden Gate STEM Fair, some participant(s) figured out a better way to construct a Boxtet.

04 Apr

Octahedron Too

So when I was doing the math for the styrofoam-dowel tetrahedron, I noticed that locating the holes

Materials Tools
12 3/16″ dowels thumbtacks
6 4″ closed-cell
styrofoam balls
thread, wire,
or thin twist-tie
optional markers ruler
drill with 9/64″ bit

necessary for making a regular octahedron should be easy too. Naturally, having done the theory, it’s hard to resist actually building the thing. The materials are exactly the same as for the tetrahedron, just the quantities are different. In fact, you can re-use two holes from each of the balls you made for the tetrahedron.

Then you have to measure out two different lengths of thread or twist tie, tied from one shaft of a thumbtack to another. The first is 2.1 inches, just like before; that’s the length of the sides of the square of holes we’re going to drill. The second is 3.15 inches, for the diagonal of the square. (If that value is ringing bells in your brain, you are absolutely right: if you chase down all of the math that went into this, we’re going for exactly π inches from pin to pin here, but the accuracy of this process is way below 1/100 of an inch, so even 3 1/8″ is good enough, for example.)

For each ball, you start with two arbitrary holes separated by the shorter distance (which can be previously used holes). Then you scratch (appropriate arcs of) circles of each of the two radii from each of those two holes. They should intersect in pairs (the closer arc to one hole with the farther arc from the other) to create four points for drilling arranged in a square on the surface of the sphere. Here’s a picture of the two thumbtack setups of the two different lengths, and one ball with the scratches in place.

Once you’ve drilled all four holes in each of the balls (less any holes you might be re-using), it’s time to assemble. I recommend making two triangles first (one pictured on the right), ensuring that all pairs of unused holes point upward. Then use the remaining six dowels to insert in the remaining holes of one of the triangles, leaving six free ends up in the air.

Finally, flip over the other triangle and connect it as the top face, producing the final octahedron:

Theoretically, exactly the same procedures could be employed to make a section of the oct-tet lattice, but that would require a lot of scratching and drilling…