# How do I divide a polyhedra along the midpoints of edges and faces?

I have a polyhedra-like graph I want to make the polyhedra (or polyhedra-like surface) of. It looks to be a truncated octahedron, except there's extra vertices in the middle of every edge and face. The face midpoints are connected to the edge midpoints, and the edge midpoints are connected to the vertices of the original edge.

I'd like a function to do this connected-midpoints operation on any generic polyhedra I pass in.

For example, if I give it a UniformPolyhedron[Entity["Polyhedron", "TruncatedOctahedron"]], I would get the shape above. If I give it a Cube[] I would get something like I note that it's not a "proper" polyhedra, so if Mathematica just won't let it be constructed, that's a fine answer too.

Thanks!

• Please post the Mathematica code. Dec 20, 2022 at 9:25
• Welcome to the Mathematica Stack Exchange. Kindly stay responsive to comments and provide Mathematica code as has been requested so that you can be assisted further. Thanks.
– Syed
Dec 20, 2022 at 13:05
• The code for how I created the 3d-graph above is here: gist.github.com/vjackson725/a950fc6b043191d466de67f7a49d4714. However, I note that I do not think it's material to my question, which is how to slice up a generic polyhedra at its midpoints. Dec 20, 2022 at 23:28
• Your surface consists of 4-sided polygons in 3D? If yes, how do you define the "midpoint" of these elements? Dec 21, 2022 at 13:20

Apply twice TruncatedPolyhedron and then DualPolyhedron like so:

UniformPolyhedron[Entity["Polyhedron", "TruncatedOctahedron"]];
DualPolyhedron[TruncatedPolyhedron[TruncatedPolyhedron[%, 0.5], 0.5]];
Graphics3D /@ {%%, %}

Cube[];
DualPolyhedron[TruncatedPolyhedron[TruncatedPolyhedron[%, 0.5], 0.5]];
Graphics3D /@ {%%, %}

Tetrahedron[];
DualPolyhedron[TruncatedPolyhedron[TruncatedPolyhedron[%, 0.5], 0.5]];
Graphics3D /@ {%%, %}

Icosahedron[];
DualPolyhedron[TruncatedPolyhedron[TruncatedPolyhedron[%, 0.5], 0.5]];
Graphics3D /@ {%%, %} If you want it to be displayed in the form of Graph3D you can do so like this:

UniformPolyhedron[Entity["Polyhedron", "TruncatedOctahedron"]];
DualPolyhedron[TruncatedPolyhedron[TruncatedPolyhedron[%, 0.5], 0.5]];
UndirectedEdge @@@
Union[Sort /@ Flatten[Partition[#, 2, 1, 1] & /@ %[], 1]];
Graph3D[%, 