Welcome to MakerHome




We've completed our yearlong print-a-day project!
All new material is now at Hacktastic: www.mathgrrl.com


Sunday, March 9, 2014

Day 195 - Disdyakis Dodecahedron

The Disdyakis Dodecahedron is a convex Catalan solid with a lot of cool properties, including:
But the main reason we printed this particular polyhedron today is because it looks cool, kind of like the frame of an Octahedron with fancy asterisks added to its faces:



Settings: MakerWare custom profile described in Day 194, on a Replicator 2.

Technical notes:  Here's the fun part. (Warning: When a mathematician says that, it means that they are about to spend a long time talking your ear off about something.) The yellow model above isn't the first Disdyakis Dodecahedron we printed. When we followed the modeling procedure used to create yesterday's Pentagonal Hexecontahedron, we got the much smaller red model shown in the front of this photo:


Clearly, next to the open, delicate Pentagonal Hexecontahedron shown in blue, the red Disdyakis Dodecahedron is too small and dense; we need to scale up the model.  There are two things to consider here: First of all, we have to scale the model before we create the wireframe, or else the edge thickness will increase as the model gets larger - and we want the edges to look the same in all of our polyhedron models. Second of all, although we could try to eyeball a satisfying scale for the new polyhedron, it would be much better to have some kind of consistent scaling factor that we could apply to all of our polyhedron models. And that's a math problem!

Let's walk through the problem. We want to print a set of polyhedra that look like a matching set, even though they will have many different types of faces and vertex degrees. All the initial scaling rules we thought of had problems. For example, we could insist that every model has the same smallest edge length. Not a bad idea, and might make things look pretty consistent, right? Well, it happens that this is exactly what Mathematica does, and since we used Mathematica to get the original polyhedral form for our models, the blue and red polyhedra already have this property! If you look at the picture you can see that the edge length on the red model is actually the same as the shortest edge length on the blue model. Here's another possible rule: Make all triangles the same sizes in all models, and make all pentagons the same proportionally larger size, and so on. Once again, this is already the case for the red and blue models, but the red one is somehow far more dense. One more: what if we let the area of the smallest face be the constant? Well, then models that involve pentagons and hexagons are going to look a lot different than models that involve triangles and hexagons. Nothing is working and we are starting to feel more than a little dense for not seeing the answer. Welcome to mathematics!

Wait... DENSE. Density is the key. And what is causing the density here is the amount of the surface area of the polyhedra that is used by the wireframe. Although our model has some extra material at the vertices, the wireframe is essentially made up of the edges of the polyhedron. So what we want to look at is the ratio of the area taken up by the edges to the surface area of the polyhedron. Since all of the edges have the same width, let's focus on their lengths. We can ask Mathematica to find the edge lengths that occur in the Disdyakis Dodecahedron with this command:

N[PolyhedronData["DisdyakisDodecahedron", "EdgeLengths"]]
Output: {1., 1.33771, 1.6306}

Since we can see from the model that these three edge lengths each occur once on every face, the average edge length is:

length = (1 + 1.33771 + 1.6306)/3
Output: 1.32277

We also need to know how many edges are in the model:

edges = PolyhedronData["DisdyakisDodecahedron", "EdgeCount"]
Output: 72

As well as the surface area of the model:

surface = N[PolyhedronData["DisdyakisDodecahedron", "SurfaceArea"]]
Output: 32.0667

From these pieces we'll construct our scaling factor. We'll take the product of length and edges to represent the amount of the polyhedron covered in wireframe (up to some constant multiple based on the width of the edges; let's ignore that for now), and look at the ratio of that product with the surface area. One last thing, though: Since we are going to use this scaling factor to linearly scale the model in each direction, and the ratio we are computing has to do with surface area, we should take the square root of the ratio to get the scaling factor:

scalefactor = Sqrt[(length*edges/surface)] 
Output: 1.72338

Now here's the really cool part. We thought that we'd have to multiply this scaling factor by some constant to account for the width of the edges, until we realized that yesterday's print of the blue Pentagonal Hexecontahedron had exactly the look and density that we wanted. So we calculated the scaling factor for that model and it came out to be... wait for it...

Output: 0.980345

In other words, just about 1. Close enough that we can pretend it is equal to 1. This means that relative to our nice airy Pentagonal Hexecontahedron model, our Disdyakis Dodecahedron model should be scaled up by a linear factor of about 1.72338. To get today's yellow model this is exactly what we did, adding the scaling in the MeshLab file conversion step:

Filters/Normals, Curvature, and Orientation --> Scale --> enter scaling factor 

Note number 1: Usually when I say "we" I really mean "I", since that is how math people talk for some reason and I can't shake it. But today "we" is really a plural, as my husband Phil was a great sounding board and suggestion-factory for this scaling problem. Thank you Phil!

Note number 2: I apologize for falling behind on this blog, once again. I knew this post would be a doozy so was procrastinating, and also, life and stuff. The good news is that while I was procrastinating I printed about ten more polyhedra wireframes, so I'll have lots to share with you very soon.