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$
    – cvgmt
    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$
    – Syed
    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$
    – V. Jackson
    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$ 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$
    – V. Jackson
    Dec 22, 2022 at 4:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.