2

I have a polyhedra-like graph I want to make the polyhedra (or polyhedra-like surface) of.

target polyhedra graph

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 midpoint cut cube

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!

Rudy Potter
  • 2,553
  • 8
  • 20
V. Jackson
  • 131
  • 4
  • 3
    Please post the Mathematica code. – cvgmt Dec 20 '22 at 09: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 '22 at 13:05
  • The code for how I created the 3d-graph above is here: https://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. – V. Jackson Dec 20 '22 at 23:28
  • 1
    Your surface consists of 4-sided polygons in 3D? If yes, how do you define the "midpoint" of these elements? – Ulrich Neumann Dec 21 '22 at 13:20

1 Answers1

1

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 /@ {%%, %}

enter image description here

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] & /@ %[[2]], 1]];
Graph3D[%, 
 VertexCoordinates -> (Thread[
    Range[Length[%%[[1]]]] -> (Normalize /@ %%[[1]])])]

enter image description here

azerbajdzan
  • 15,863
  • 1
  • 16
  • 48