Showing posts tagged art

Creating curves with straight lines

Here is a video I recently made in response to Vi Hart’s great doodling game video. You take a curve, put dots evenly spaced (or however you want) along the line, and connect dots some predefined number apart. You can do this with any curve you want, but some results are more interesting than others. In some of the shapes, I highlighted the limiting envelope curve that is generated by the shapes. Enjoy!

And here is part of the video in gif form:

A recycled rhombicosidodecahedron

My friend Cody drinks a lot of Red Juice. When bought from Costco, two 96 fluid ounce bottles of Red Juice come paired like this:

That red connector between the bottles creates a handle for easy transportation. Most people dispose of these connectors and consume the Red Juice with the help of friends. Cody manages to drink this quantity of juice in a few days and sets the connectors aside, initially out of laziness but soon building a collection of them.

One day Cody asked me what the coolest kind of polyhedron was that one could build with 121 edges. Well, the rhombicosidodecahedron can be built with 120 same-sized edges. I had no idea what Cody had in mind  I expected he had obtained some kind of polyhedral construction kit — but instead he responded with a photo of his large collection of Red Juice connectors. After seeing the photo, I was genuinely worried for Cody’s well-being and what his dentist might have to say. But my concern for Cody’s health was soon outweighed by my excitement to begin the construction of a new rhombicosidodecahedron made from these edges!

What is a rhombicosidodecahedron?

A rhombicosidodecahedron is made of triangular (20), square (30), and pentagonal (12) faces. This animated gif (from Wikipedia) demonstrates the construction of one. First imagine placing a small explosive charge at the center of an icosahedron made by gluing triangles together — when the charge explodes, the faces blow outward. Then freeze time at the moment the shared edge of two neighboring triangles separates to a distance equal to one side of these triangles. Now connect these edges up again to form squares joining the triangles. At the same time, you will create 12 pentagons coming from where the vertices of the triangles used to be. The resulting solid is a rhombicosidodecahedron, and it is therefore no coincidence that it has the same number of triangles as the icosahedron, the same number of pentagons as the dodecahedron (the icosahedron’s evil arch-enemy), and the same number of squares as the number of edges on either of these polyhedra.

How many edges do we need?

Let’s find the number of connectors required to build such a structure, with the connectors acting as edges in the design.

  • 20 triangular faces (from icosahedron)
  • 12 pentagonal faces (from dodecahedron)
  • E squares, where E is the number of edges on either the dodecahedron or the icosahedron. Sometimes I forget this, but it can be obtained by Euler’s formula:

\( \chi=V-E+F=2,\)

where \(\chi\) is the “Euler characteristic”, which is 2 for all convex polyhedra. This means that the number of edges for either the icosahedron or the dodecahedron is

\(E=12+20-2=30.\)

So both the dodecahedron and the icosahedron have 30 edges, so the rhombicosidodecahedron also has 30 squares. Then the number of edges on the rhombicosidodecahedron can be computed by adding the total number of edges belonging to each face:

\(12\times 5+20\times 3+30\times 4=240,\)

but we have actually counted the edges exactly twice, since each edge is counted from both of the neighboring faces. This tells us that the rhombicosidodecahedron has 120 edges. Another way to compute the number of faces without needing Euler’s formula at all is to notice that every edge is a neighbor to either a pentagon and a square or a triangle and a square. So right away, the number of edges must be equal to

\(12\times 5+20\times 3=120,\)

which gives the same answer. In order to have a collection of 120 connectors, Cody must have consumed 240 Red Juices, since each connector holds two bottles. This comes down to about 180 gallons of juice. Granted, he has been collecting for quite some time now.

An interesting property of the rhombicosidodecahedron is that each vertex connects exactly four edges. I’ll talk about this later.

How to build the rhombicosidodecahedron?

While discussing our plan of attack, Cody brought up a concern: because these connectors would be stacked at the circular part that holds the neck of the bottle, some Red Juice connectors would stack in asymmetrical ways. That is, a particular connector might be stacked third-out from the center on one side, but only the first-out on the other side. Aside from the poor aesthetics of angled connections, this would lead to asymmetries in the final product, as some connectors would be skewed and therefore not extending their true distance. A mathematical question comes to mind: is it possible to connect these in such a way that there isn’t any warping? Above is an illustration of a single vertex, showing which layer each connector occupies. If one of these connectors is on a different layer on a neighboring vertex, there will be warping.

My solution to this problem was to reduce it to another common mathematical problem: edge coloring. Since each vertex has exactly four edges radiating from it, we can ask if there is a way to color the edges of the rhombicosidodecahedron with exactly four colors in such a way that no two colors are adjacent. In this way, each of the four colors represents one of the four layers. It is tempting at this point to exclaim that it can certainly be done according to the four color theorem, but unfortunately we cannot apply that immediately here, because we are coloring edges and not vertices of a graph. We could also try to use Vizing’s Theorem, which states that the chromatic index of a graph is either \(\Delta\) or \(\Delta+1\), where \(\Delta\) is the largest vertex degree of the graph. Unfortunately, this does not help us here, since our maximum vertex degree is already four, so we cannot say right away whether we can color our graph with only four edges.

I decided that since I would end up needing a constructive solution anyway, I might as well find one. I began with a planar projection of the rhombicosidodecahedron (as seen on the right), beginning from the center and working my way outward.

Occasionally, I would come to an edge where I simply could not give it any color; all of my four colors were already taken by neighboring edges. At this point, I would just decide on a color for the new edge, and fix whichever edge was now conflicting. After fixing this edge, there would be exactly one other edge with a problem. This created a cascading effect that was relatively managable because the number of areas did not branch off exponentially. I continued following the chain reaction, edge by edge, until the problem got pushed off to the frontier of the area on which I had been working, at which point there were no more problems remaining. It was then safe to continue. After a bit of tedious work, I was happy to find that the entire graph was properly colored, and no edges remained. I was left with this:

At this point, I couldn’t help but make a 3D model of this, so it would be easier to see how this wrapped onto the polyhedron:

The construction process

Finally Cody visited me and remembered to bring the Red Juice connectors. We purchased some cable ties to hold it all together.

Success!

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.

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.