The post Make truncated tetrahedrons, octahedrons, and icosahedrons in WPF and C# explains how you can make various truncated platonic solids. The techniques described in an even earlier post still truncate the solids correctly. The only trick is figuring out what value of `frac` to use to make the resulting edge lengths the same so you get an archimedian solid.

Those techniques still work when you make truncated dodecahedrons. As before, the interesting part is calculating the value of `frac` that gives you an archimedean solid. In the picture at the top of this post, the solid on the left has `frac` equal to 0.0 and the solid on the right has `frac` equal to 0.5. We only need to calculate `frac` for the remaining solid in the middle.

The calculation for truncated dodecahedrons is trickier than the one for solids with triangular faces (which are pretty trivial), which of course makes it more fun!

First take a look at the dodecahedron’s face (which is a pentagon) shown Figure 1. The angles in the middle of the pentagon must add up to 360°. Because all of the interior triangles have the same side lengths, they are similar so their angles must be the same. That means the inner angle must be 360° / 5 = 72° as shown in the figure.

Next the angles in the upper right triangle must add up to 180°. Because the triangle’s two dashed sides have the same length, their opposite angles labeled θ must be the same. That means they must each be (180° – 72°) / 2 = 54°.

Now consider Figure 2, which shows a pentagon after chopping its corners off in blue. The little triangle at the top has the 54° angle labeled. Because that is a right triangle, its other corner must measure 180° – 54° = 36°.

That means the length of the side adjacent to that angle has length `A·Cos(36°)`, where `A` is the side length we’re trimming off while removing the corners. Then the length of the new edge created by removing a corner is twice that length or `2·A·Cos(36°)`.

To make the new edges equal to the reduced length of the original edges we need . Rearranging to solve for `A` gives:

By definition, `A = frac·S`. Substituting that into the previous equation and solving for `frac` gives:

The solid in the middle in the picture at the top of this post was created using that value for `frac`. If you look closely, you can see that the edge lengths are the same.

## About RodStephens

Rod Stephens is a software consultant and author who has written more than 30 books and 250 magazine articles covering C#, Visual Basic, Visual Basic for Applications, Delphi, and Java.