![[truncated tetrahedrons, octahedrons, and icosahedrons]](http://www.csharphelper.com/howto_wpf_3d_truncated_triangles.png)
The post Make a truncated cube in WPF and C# explained how to make truncated cubes. The key methods were MakeTruncatedSolidCornerMesh, which creates new faces created by removing corners, and MakeTruncatedSolidFaceMesh, which creates faces representing the original cube’s faces with the corners removed. See that example for an explanation.
Those same methods also work with other solids. (Actually just complex solids. As they’re currently written, they would incorrectly orient new faces created by cutting off concave corners.)
The only thing we need to think about for this example is how to set the parameter frac that determines how much of the edges adjacent to a corner are removed.
If frac = 0.0, the solid is unchanged. The leftmost row in the picture shows that type of solid for the tetrahedron, octahedron, and icosahedron.
If frac = 0.5, the new faces representing the removed corners touch. Because the new faces shared edges with the original faces with their corners removed, all of the solid’s edges have the same length and the result is an archimedean solid. The rightmost row in the picture shows those solids.
The remaining question is, “What value of frac between 0.0 and 0.5 will also give edge lengths that are the same?” Fortunately this calculation is really easy if the solid has triangular sides.
Because the triangles are equilateral, if you cut off a corner the resulting triangle in the corner is also equilateral. That means its base and sides have the same lengths. To make the edges in the new solid all have the same length, you just need to make them 1/3rd of the original side lengths, as shown in Figure 1. That means the value frac should be 1/3.
This example does just that. It draws tetrahedrons, octahedrons, amd icosahedrons with frac equal to 0, 1/3, and 0.5.
That’s all there is to it. The fact that the original solid’s sides are equilateral triangles makes this easy.



