3D Printing for the Visually Impaired

This project was neither Math nor Art, but it called on a lot of the skills I developed doing both, so I thought it appropriate to write about here.

Last June I was contacted by our Office of Student Affairs about a student who would be joining us in the Fall. The student is visually impaired, and they asked if I could create a relief map of the campus to help guide her.

After a few conversations, I realized there were a few important design constraints:

  1. The map had to be small enough in all three dimensions to fit in a backpack. In particular, that meant fairly shallow relief.
  2. It had to be large enough that the individual features could be easily detected by touch.
  3. The map should only include relevant details of the campus, or it would get too cluttered: only buildings, paths, and roads were necessary.
  4. Somehow this project shouldn’t take a lot of MY time. They weren’t paying me anything, and no one knew how useful the finished product was going to be to the student.

The last criterion was the most important. I could spend hours individually modeling each building, but that really wasn’t necessary.  So I had to think about other solutions…

I started by asking our Office of Communications for a simple line drawing of the campus, including only the relevant features. Here’s what they gave me:vectormap

Next, I was able to import this into Rhino3D, and automatically extract the outlines of each feature. It only took about an hour or two to raise each outline to a different height in the z-direction, and make them 3-dimensional. I made the heights correspond to the type of object, rather than any kind of representation of reality. So all buildings were one height, roads another, paths a third, etc. I was hoping that would provide enough tactile information to distinguish between them. With much more time I could have added textures (e.g. make grassy areas rough), but that didn’t seem necessary at this point. Here’s the finished digital model:


I realized the buildings were going to need labels. I thought about adding braille on top of each building, but that was going to take way too much time. After some internet searching, I discovered this braille label maker:

Screen Shot 2016-03-19 at 8.04.13 AM

So I ordered it, and showed the people at the Office of Communications how to use it to manually add labels. I’m sure that was labor intensive, but I didn’t end up having to deal with it. It’d be worth incorporating braille in the digital model if we were going to make these things on a regular basis, but as I said above, it wasn’t clear how useful the finished product was going to be, or if and when the college would admit another visually impaired student.

The finished map was printed at Shapeways.com. Here it is! If you look closely you can see braille labels on a few of the buildings. The whole thing is 10″ by 11″, and about one-third of an inch high, so it slips easily in a backpack between books.


I was recently told that it got used by the student extensively. It helped guide her around to the point she memorized the paths to take, which was exactly its purpose. Success!

3D Printing for the Visually Impaired

A Plurality of Polyhedra

A little over a year ago (February, 2015) I was contacted by Los Angles artist Clare Graham about making some models. He had become interested in the illustrations of polyhedra in the 1509 book De Divina Proportione, by Luca Pacioli. What’s significant about these  illustrations is that they were done from woodcuts by Leonardo da Vinci. Many of them represented the first depictions of polyhedra which allowed one to easily see their internal structure.

Screen Shot 2016-03-11 at 1.25.18 PM

Da Vinci made 61 illustrations for the book. About half of these are solid polyhedra, and half are the more open, skeletal designs like the one in the image above. He also included three solids that are not polyhedra at all: a sphere, cone, and cylinder.

After a few months of going back and forth with Clare about decisions on size, material, finish, etc, I set to work reproducing these. Each one took anywhere between 30 seconds and 3 or 4 hours to design.


Here’s how I did it. First, I installed the “Polyhedra” plug-in for Rhino3D. Most of the polyhedra I needed had already been programmed by the author of this plug-in, so all I had to do was type in the name of the shape I wanted. There was a little work to do to translate the latin names to the modern nomenclature, but most of that was fairly easy to guess. To create the open designs, I simply used the “extract wireframe” command to get the edges of each polyhedron, and then the “pipe” command to thicken them.

The solids were trickier. Each model was printed at Shapeways.com. Since they charge by volume, a large solid piece would be extremely expensive. So I made each one hollow with a removable tip that could be glued in later.


To get a tight fit for gluing, I chamfered the edges of each glue-in piece. It took a few hours of playing to figure out an efficient way to do this, but eventually I came up with a method that took under 5 minutes per model. The tricky part was getting the exact same chamfer on both parts to be glued.

A few of the da Vinci designs were not in the “Polyhedra” plug-in. Most of those were stellated versions of some of the polyhedra I did have access to, so I wrote a custom Grasshopper script to stellate any input polyhedron. If anyone out there is interested in that, I’d be happy to share it.

After the models arrived in a big box, I glued all of the solids together with super-glue. The Shapeways “White, Strong, and Flexible” plastic is notorious for picking up smudge
IMG_5107marks, so I thought they should also be sealed. After hours of internet searching I discovered “Pledge Floor Care Finish”, which is basically a clear acrylic sealer. This worked OK, but the next time I do something like this I’m going to try a penetrating stone tile sealer. (I just used one brand on some Saltillo tile I installed in my home, and was really impressed!) Here they are arranged on some plastic in my office, ready to be sprayed with sealer.

Finally, I handed the finished models over to Clare, who has them arranged in a  beautiful glass case in his gallery in Eagle Rock. (Apologies for the crappy quality iPhone 4S picture!)




All of these models can be purchased here at Shapeways. There’s a modest $10 mark-up fee that would go to me if you buy one there, but if you have just a little knowledge of Rhino (or any CAD package) you could also make them yourself in very little time and save that.

A Plurality of Polyhedra

Apollonian Gaskets with Grasshopper

My son and I were recently watching Vi Hart’s wonderful “Doodling in Math Class” Video on Infinity Elephants. Around 1:30 in the video she starts talking about how to draw an Apollonian Gasket in a triangle:

Screen Shot 2016-03-04 at 2.04.59 PM

This got me wondering about how to code this object. It’s not a new challenge. Lot’s of people have done it. You can even search Shapeways to find some amazing 3-D printed, 3-dimensional versions. But I couldn’t find much info on how its done. I did find an old discussion here where they were wondering how to do the same thing. (Nothing really useful there, except some nice references to hyperbolic Geometry-specifically a little paper by David Dumas-with a dead link to a program written by Curt McMullen.)

I’ll use Python when I have to, but my preferred method of construction is with the visual programming language Grasshopper, a plug-in for the CAD program Rhinoceros3D.  Clearly, the object I was trying to replicate is fractal, which means recursion is going to be unavoidable. That’s easy enough in Python, but it sucks in Grasshopper. The only way I know to do recursion in Grasshopper is with a 3rd party component. I think there are multiple options. The one I use is called “Hoopsnake.” It does the job, but for this kind of thing it’s extremely slooowwww. That’s OK, because to replicate the drawing in Vi’s video, I’m only going to do about 5 iterations.

It took a bit of experimenting, but eventually I got it down to a surprisingly small Grasshopper definition. The key was to use the CircleTanTanTan component, which automatically finds the circle that is tangent to three different input curves. For the Grasshopper savvy out there, here’s my definition:

Screen Shot 2016-03-04 at 2.17.06 PM

Here’s what it produces….

Screen Shot 2016-03-04 at 1.55.35 PM

…exactly what I wanted!!

Screen Shot 2016-03-04 at 2.35.06 PM


Once I had that, it wasn’t hard to make all kinds of designs. Here are some Apollonian Spheres.




I even experimented with an Apollonian Pocket Watch Design!

Screen Shot 2016-03-04 at 2.53.01 PM

Apollonian Gaskets with Grasshopper