Printing the impossible…in 3D

In light of my last post, I began thinking about other shapes I could 3D print using Shapeways. Since my last piece was somewhat flat, I decided to go for a more volumetric structure this time, and I was especially taken by the idea of a shape that links with itself. But I wanted to achieve this with a model made of one piece instead of a chain with jangling disconnected pieces — to create a seemingly impossible object with one contiguous ladder-like structure.

How might I create something like this? I was surfing YouTube one day and I came across this puppy:

This is the kind of structure I would like to make. Other people have also made linked mobius torus structures with varying materials:

  

I would like mine to be based on this shape but look more interesting. Like most problems I try to solve in mathematics, trying to make something more interesting usually is the same as trying to generalize it. When I try to generalize (say the concept of an equilateral triangle), I look for the following criteria:

  1. Is there a quantity inherent to the situation at hand that can be increased? (The triangle has three sides, but what would shapes look like with more than three sides?)
  2. Is there a constraint being imposed that we can remove to allow more interesting behavior? (What would it look like if each side need not be the same length?)
  3. Is there a context that the object is inherently using in its existence that can be modified? (The triangle is flat, but what if we allowed the triangle to live on a curved surface like a sphere?)

I began my design by constructing the basic shape with Mathematica. This consisted of a essentially toroidal shape given by the following parameterization:

However, I wanted the cross-section to be hexagonal, so this would mean I would need my parameter v to be discrete; I would need six samples in a full 2π rotation. On the other hand, my parameter u would also need to be discrete; I wanted to have 22 individual links joining across the piece. I wrote a little Mathematica program that would take my parameterization and would in turn write a “.txt” file to my hard drive. By changing the extension of this file to “.obj”, I obtained a three dimensional toroidal shape with a hexagonal crossection. However, this wasn’t exactly what I wanted. I needed to add a twist to the whole thing, akin to how one would add a twist in a mobius strip. However, since the crossection is hexagonal, we apply a 60˚ rotation as opposed to a 180˚ rotation. This corresponds to each side of the hexagonal structure meeting with its neighbor when the two ends of the strip meet. The next step was to open the result up in TopMod to see what it all looked like.

Notice the wrinkle in the face loop close to the front! This is understandable; I began with a torus, and performed a twist on the vertices appropriately to create the rotation. But if you start with a standard belt of paper, you can’t expect to twist it without breaking and end up with a mobius strip! Consequently, all of that twisting had to “pile up” somewhere, and this is exactly where I will cut each wrinkled edge, and reapply the edges appropriately. This creates a perfectly and evenly twisted mobius torus. The changes in this procedure are shown with semi-transparent regions; look closely and you’ll see the wrinkles vanish!

Now that we have a perfect mobius twist base, I used TopMod’s wireframe modelling mode to create a wireframe:

 Then I deleted the crossbeams and put in my own crossbeams, which went diagonally across instead of around the perimeter to create a sort of linking effect. I decided that the most natural way to do this would be to rotate the crossbeams cyclically as shown in the figure. First, I would place a beam between corners 1 and 4, then from 2 to 5, then from 3 to 6. At this point I would repeat, laying down another beam from 1 to 4.

Once I was through with that business, I decided that it didn’t look quite organic enough, so I wrote a separate Mathematica program that would take an arbitrary 3D model and warp it according to a mathematical function. I wanted my shape to look less like a standard torus and more like a melted one (Dali style). Without getting too technical, this involved taking the model, projecting every vertex down to the torus’s “base circle” (the closest point on the circle going around the torus) then warping this base circle, carrying all of the projections with it, and then exploding the vertices back outward again via a rotated basis to account for the rotation that had taken place in the warping map. The result of all of this mess was good enough for me to render using Blender, a free, open source 3D content creation suite:

After finally having a result that I liked (on my first try I realized that my first model had an error with the cyclic pattern of bridges), I couldn’t contain myself, so I immediately uploaded my model to Shapeways to have it printed in “Winter Red Strong and Flexible,” and a couple weeks later my model arrived via UPS!

Here is a video of my model spinning to reveal the geometry more clearly. The trick is that there is a fine fishing line being used to hold up the model from the ceiling.

An experiment in additive manufacturing

For a while I have been considering making 3D printed objects with interesting patterns and shapes, especially after seeing the work of Nervous System, which produces jewelry and other useful items modeled with algorithms (including reaction-diffusion):

 

My friend Britta and I were thinking about ideas for what I should make, and consequently what service I should use. We decided on Shapeways, a personalized fabrication service capable of printing 3D parts. They charge according to amount of material, so it made sense to produce something very small and light. Britta commissioned a reaction-diffusion necklace, inspired by the necklace shown above. Since I already had some working Mathematica code for generating reaction-diffusion systems, I modified the parameters slightly to create worm-like shapes that would interlock as much as possible, as the necklace would have to be made from a single connected component so it would not fall apart.

I was determined to produce this necklace in the most unusual and perverse way possible. I used Mathematica, Photoshop, and Blender to produce a 3D model of a small, flat object suitable for wearing. Here is an image of the resulting pattern:

Invariably, the result was not made of only one piece, so I broke the image into connected components using Photoshop’s paintbucket tool:

I chose the one that was both the most interesting and also of the best dimensions. I leave it as an exercise for the reader to determine which component I chose. After isolating this component in Photoshop, I saved the image as a black and white JPEG and imported it back into Mathematica, where I wrote a small program to use the darkness of each pixel to determine by how much to extrude the 3D object at that point. 

My first attempts generated objects that were much too large or small, but finally after much labor, I managed to come up with something that was not rejected by Shapeways. I came up with this one, 3.3 inches wide and eligible for printing:

Very vermicular. Britta and I chose the material called “White, Strong, & Flexible” since its price, strength, robustness and appearance sounded good for a practical first-try object.

I ordered it from Shapeways (along with two more copies so that we reached the $25 minimum), but a couple weeks later I received an email saying that the model could not be printed because some elements were too thin. Frustrating! I emailed a Shapeways representative, and we figured out that some of the “neighboring” tubes had thin membranes connecting them when they got too close to one another — these were thinner than the machine’s tolerance.

I fixed my model, resubmitted it, and we waited two more weeks. And one very exciting day, I received a small box containing the objects and gave one to Britta. She bought some waxed white cord and tied a couple knots to make the necklace:

Success! Some of my friends have been complaining that it is a bit too flat compared to the possibilities of 3D printing, so I am determined to continue my 3D modeling adventure. I already ordered the Shapeways materials sample kit which will allow me to explore what kinds of materials are available for printing, as well as giving me something to play with until I decide what to make next.

Visualizing the magnetic fields of “buckyballs”

You can think of a magnetic field as a collection of invisible fibers that fill space. These fibers are produced and deformed by magnets, and these invisible lines represent how other magnets placed inside the lines will experience forces from the magnets that originally produced these fields. The forces can be modeled with simple vector calculus because the magnets can be treated as dipoles.

I have 216 small spherical metal balls containing rare earth magnets, called “buckyballs” in stores. I decided to look at some of the simplest modular structures that can be formed with the buckyballs: 

Here is my visualization of the “fibers” of the smallest triangle formable:

The two by two square formed with four buckyballs:

The triangle used to build a buckyball “icosahedron” or ball-shaped object:

And the hexagon module used to build a snowflake: 

Other people also enjoy making complex shapes with buckyball magnets, such as these examples:

There are a lot more on Flickr.

The mice problem: more on curves of pursuit

This drawing is titled “Drawn Entirely With Straight Lines”, and it has some interesting geometric properties. I’ll explain how it works.

First, we can mentally break the hexagon shape into smaller modules:

Each equilateral triangle region is identical, and they are reflections of each other. If you placed this hexagon inside of a kaleidoscope, this pattern would repeat infinitely in all directions.

The imaginary curves that are visible in the picture are closely related to the mice problem, which is a special kind of pursuit problem (like what we saw in my tractrix post). The mice problem goes like this: Three mice are initially sitting at the corners of an equilateral triangle. All at once, each of the mice begin crawling with equal speed directly toward the mouse on their right. What is the path of each mouse?

This is an animation of the path of the rodents (not made by me):

Suppose that the rats periodically and simultaneously leave droppings to mark their path. Again, each triple of simultaneous droppings forms an equilateral triangle. What would this look like? I used Mathematica’s Graphics function to illustrate it:

In this animation, the rodents leave droppings more frequently as their collision becomes more imminent (perhaps in eager anticipation of their meeting). The rodents always form an equilateral triangle, which means that the path that they take is also symmetrical — it is a simultaneous rotation and scaling (shrinking) of the triangles. Here is another animation of this effect:

It is precisely the rotation/scale symmetry that allows this gif to loop seamlessly.

But why do the lines curve like that? The angle between the direction a rat is aimed relative to the center of the triangle remains fixed throughout, and the resulting kind of curve is a logarithmic spiral. If you really use your imagination, as a regular screw can sink into wood, a screw with this logarithmic shape could be theoretically used to enlarge/scale something.

Anyway, here is a quick sketch with pencil and paper I made using the mouse algorithm with step size remaining constant (constant dropping rate):

I also did a similar diagram in Mathematica, again with the triangles more dense toward the center to emphasize the symmetry. That is, if each triangle were rotated and scaled the right amount, it would look identical, except with either an extra or a missing outer triangle.

There is a sculpture in San Francisco that looks like a three-dimensional icosahedral illustration of the mice problem (it’s called Icosaspirale, by Charles Perry). This time, each triangular module hides a similar scale/rotation symmetry, except now in three dimensions, with the center of dilation not lying on the plane of the largest triangle, but instead somewhere between the center of the triangle and the center of the icosahedron. It is really remarkable what kind of astounding visual effects can be generated by imposing various symmetries!

Mathematically defined Easter eggs

Mathematical equations are always used to make predictions and carry out proofs. I wanted to break this trend and explore the ways that equations could be used qualitatively to describe art — in particular, how they can be used to paint Easter Eggs. Using Mathematica, I created a three-dimensional egg shape via the parameterization via a perturbation of a sphere (c=0.2=,b=1.65):   

This surface has similar geometry to an egg, but is lackluster. At this point, it still has meshlines and a generic default color assigned by Mathematica. The eggs need some more spice. I decided I wanted to color them like Easter Eggs, but the constraint I imposed on myself was that the colored patterns would need to be created directly from mathematical functions inside of Mathematica. Each function would go from the surface of the surface of the sphere into the real numbers, and therefore could be thought of as a simple function of two variables, u and v. The output of this function could then be mapped to a color to represent the desired color at that point.

The first mathematical pattern that immediately came to mind for me was the SphericalHarmonicY function. This function is used for solving Laplace’s equation in spherical coordinates, so it already has a natural setting in our egg shape which has the same basic structure as a sphere. I then chose a color scheme that fit well with the pattern I had created. Here is an example of my Spherical Harmonics egg painted with the gradient “BlueGreenYellow”:

Thankfully, there were no problems matching up edges on the rectangle [0,2π]x[0,π], because the Spherical Harmonics are made especially for spheres. At this point, I couldn’t help but try changing parameters on the eggs to obtain different patterns. For instance, one such parameter represents the number of blobs of color going from the top to bottom of the egg. The other parameter represents how many blobs go all the way around the equator. By changing these parameters, you can obtain very different looking eggs, especially when you make one parameter much larger than the other to create “slits” of color. You can see an orange version of these Spherical Harmonics in the bottom picture in the orange-colored egg on the very left of the image. You can see that I cranked up the number of blobs of color I required to fit from north pole to south pole in that one.

At this point, I decided I needed to get a little bit more creative. Using predefined functions like SphericalHarmonicY was fun and all, but it also left me somewhat unsatiated. I began playing around with spirals, and here is one such example of an array of spirals with alternating handedness all over the sphere.

The first think I noticed about the egg is the spirals, but if you look directly down on this model from the north or the south pole, you will see a four-petaled flower. What I find interesting about this activity is that it requires not only artistic creativity, but also a familiarity with the behavior of mathematical functions so that one can define an egg that resembles the image one had in ones mind before beginning the project. However, unlike this visually attractive egg, the mathematical coloring equation is no where near as elegant. Ignoring various rescaling done to account for the desired input range to specify the colors, the mathematical equation that I used to generate this pattern was:

All together, I made eleven Mathematically colored eggs that I considered worthy of keeping. The most difficult one was probably the Patriotic Star Egg shown in the bottom right corner. It required several heavy-duty functions working together to make the repeated star print like Floor, Mod, ArcTan, Abs, and Max. (I won’t do you the disservice of posting the entire function used.) Probably my favorite eggs are the two African Zig-Zag Eggs.

Polyhedron lanterns

I went to a Mexican restaurant and saw these cool lamps in the shape of polyhedra (albeit not platonic solids). The shape is some kind of stellated rhombicuboctahedron, although it is not a “true” one, for two reasons: first, the stellation does not occur by simply extending faces to a point (the point is formed farther than then intersection of faces), and second, only the square shaped faces are stellated on the rhombicuboctahedron.

I really liked them, so I located a version for sale and gave one to my mother as a gift. The website calls them Moravian stars. Here is the lamp on our table:

My friend has found Stellated Dodecahedron lamps in Santa Barbara:

 

Unfortunately it’s hard to find a similar lamp in icosahedron form, but there’s an IKEA lamp that is based on the icosahedron shape.