Unfolding

Author

Eric W. Weisstein
August 16, 2022

This notebook downloaded from http://mathworld.wolfram.com/notebooks/Polyhedra/Unfolding.nb.

For more information, see Eric's MathWorld entry http://mathworld.wolfram.com/Unfolding.html.

©2022 Wolfram Research, Inc. except for portions noted otherwise

UnfoldPolyhedron

Tetrahedron

Graphics[{EdgeForm[Black],FaceForm[LightYellow],UnfoldPolyhedron[PolyhedronData["Tetrahedron","Polyhedron"]]}]

PolyhedronData["Tetrahedron","NetCount"]

Table[Graphics[{EdgeForm[Black],FaceForm[LightYellow],UnfoldPolyhedron[PolyhedronData["Tetrahedron","Polyhedron"]]}],{10}]

UnfoldPolytope package

Additional Authors

Portions from 
“Unfolding 3-dimensional Convex Polytopes”
By Makoto Namiki and Komei Fukuda

Initialization

<<ExtraPackages`UnfoldPolytope`

Syntax

Options for the function UnfoldPolytope:

OutputFile->"filename"

One can obtain the resulting cordinates of faces after unfolding. Default is "/dev/null".

ExactComputation-> True or False

In order to save time for computation, we employ the approximate computation. If one need to compute exactly, this option is needed. Default is False.

Embedding-> True or False

This option gives 2D-Graphics primitive also for unfoldings and 2D cordinates if one employ "OutputFile" option. Default is False.

InternalGraphics-> True or False

This option gives internal graphics during unfolding.

Tree-> "BFST" or "DFST"

If one employs "BFST", one can unfold polytopes along with the breadth first search tree. "DFST" means depth first search tree. Unfoldings with "DFST" tends to be long shaped. The default is "BFST".

See the following example.

vertices = {{0,0,0}, {1,0,0},{0,1,0},{0,0,1}};

faces = vertices[[#]]& /@ {{1, 2, 3}, {1, 3, 4}, 
                           {1, 4, 2}, {2, 4, 3}};

UnfoldPolytope[faces,OutputFile->"stdout",
					 ExactComputation->True,
					 Embedding->True,
					 Tree->"DFST"];

Animation

movie=Show[#,PlotRange->{{-3,3},{-3,3},{-5,5}}]&/@UnfoldPolytopeAnimation[Polyhedron[Dodecahedron]]

Show[GraphicsArray[Partition[movie,4,4,{1,1},{}]],GraphicsSpacing->-.2]

Archimedean

Show[GraphicsArray[
Partition[
UnfoldPolytope/@Polyhedron/@Archimedeans,
4,4,{1,1},{}]
]]//Timing

Archimedean Duals

Show[GraphicsArray[
Partition[
UnfoldPolytope/@Polyhedron/@ArchimedeanDuals,
4,4,{1,1},{}]
]]//Timing

Platonic

Show[GraphicsArray[UnfoldPolytope/@Polyhedron/@Platonics]]

UnfoldPolytope[Polyhedron[Cube]][[1]]

Kepler-Poinsot

Great Icosahedron

UnfoldPolytope[Polyhedron[GreatIcosahedron]]//Timing

Small Stellated Dodecahedron

UnfoldPolytope[SmallStellatedDodecahedron]

Miscellaneous

Boat

Show/@UnfoldPolytopeAnimation[Polyhedron[Boat]]

Szilassi

Show[Graphics3D[SzilassiPolygons]]

UnfoldPolytope[SzilassiPolygons]

Namiki's Counterexamples

Here is one self-overlapping unfolding of this polytope.

A question arises naturally.  Is this example  minimal?  (Minimal in the sence of number of faces.)   The answer is no.  Here is a minimal example which is a long tetrahedron.

Unfolding Identical for Two Convex Polyhedra

a={0,0,0};
b={4,0,0};
c={2,2*Sqrt[3],0};
d={(87+5*Sqrt[249])/28,(29*Sqrt[3]+5*Sqrt[83])/28,(-25+5*Sqrt[249])/70};
e={0,0,10};
f={-23/12,71*Sqrt[3]/36,Sqrt[71/27]/2};
g={0,-4/Sqrt[3],2*Sqrt[71/3]};

V1={a,b,c,d,e};
V2={a,b,c,f,g};

Show[Graphics3D[{Point/@V1,Table[Text[ToString[i],V1[[i]]],{i,Length[V1]}]}]]

WriteLiveForm["unfold1.m",Show[NonIntersectingPolygons[Graphics3D[Polygon[V1[[#]]]&/@{{1,2,3},{1,2,5},{1,3,5},{2,4,5},{3,4,5},{2,3,4}}]],Boxed->False]]

V1[[#]]&/@{{1,2,3},{1,2,5},{1,3,5},{2,4,5},{3,4,5},{2,3,4}}//N

UnfoldPolytope[V1[[#]]&/@{{1,2,3},{1,2,5},{1,3,5},{2,4,5},{3,4,5},{2,3,4}},Embedding->True]

Show[Graphics3D[{Point/@V2,Table[Text[ToString[i],V2[[i]]],{i,Length[V2]}]}]]

WriteLiveForm["unfold2.m",Show[NonIntersectingPolygons[Graphics3D[Polygon[V2[[#]]]&/@{{1,2,3},{1,3,4},{5,1,2},{5,2,3},{5,3,4},{5,1,4}}]],Boxed->False]]

UnfoldPolytope[V2[[#]]&/@{{1,2,3},{1,3,4},{5,1,2},{5,2,3},{5,1,4},{5,3,4}},Embedding->True]