2
$\begingroup$

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!

$\endgroup$
4
  • 3
    $\begingroup$ Please post the Mathematica code. $\endgroup$ Commented Dec 20, 2022 at 9:25
  • $\begingroup$ 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. $\endgroup$ Commented Dec 20, 2022 at 13:05
  • $\begingroup$ 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. $\endgroup$ Commented Dec 20, 2022 at 23:28
  • 1
    $\begingroup$ Your surface consists of 4-sided polygons in 3D? If yes, how do you define the "midpoint" of these elements? $\endgroup$ Commented Dec 21, 2022 at 13:20

1 Answer 1

1
$\begingroup$

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

$\endgroup$
1
  • $\begingroup$ Thanks so much! $\endgroup$ Commented Dec 22, 2022 at 4:33

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.