Faced space filling polyhedra with 54 faces​
​by Sándor Kabai
The essential idea is to divide each hexagonal face of a truncated octahedron, and then modify the triangles until the Escher polyhedron is obtained. Between the two limit positions an infinite number of space filling polyhedra is produced while the square faces of truncated octahedron form rhombuses. When the ratio of diagonals of rhombuses equals to the golden ration, then the rhombuses coincide with the faces of a rhombic triacontahedron.
In[]:=
Dynamic[Manipulate[​​f=1.618;​​bet=ArcTan[1/f];​​cub=GraphicsComplex[PolyhedronData["Cube","VertexCoordinates"],Polygon[PolyhedronData["Cube","FaceIndices"]]];​​cubn=Scale[cub,1.618];​​cubv=cub[[1]];​​cube=GraphicsComplex[PolyhedronData["Cube","VertexCoordinates"],Line[PolyhedronData["Cube","FaceIndices"]]];​​cubtube={Yellow,Scale[cub/.PolygonTube,2f]};​​cube8=Scale[Map[Translate[cube,#]&,cubv],f];​​​​rt=GraphicsComplex[PolyhedronData["RhombicTriacontahedron","VertexCoordinates"],Polygon[PolyhedronData["RhombicTriacontahedron","FaceIndices"]]];​​rtn=Scale[Rotate[Rotate[rt,bet,{0,1,0}],Pi/2,{0,0,1}],1.2];​​rtfr=ee=Normal[rtn]/.p:Polygon[__](p/.pts:{{_?NumericQ,_,_},__}Module[{cent,innervtx},cent=Mean[pts];​​innervtx={1-perf,perf}.{#,cent}&/@pts;​​Join[pts,pts[[{1}]],innervtx,innervtx[[{1}]]]])//#&;​​​​vA={f,-f,0};vB={f,0,0};vC={f,0,f};vD={f,-f,f};vE={0,0,0};​​vF={0,0,f};vG={0,-f,f};vH={0,-f,0};vO={f/2,-f/2,f/2};​​vAB={f,-1/f-a,0};vBC={f,0,1-a};vCF={1/f+a,0,f};​​vFG={0,-1+a,f};vGH={0,-f,1/f+a};vHA={1-a,-f,0};​​c1=Polygon[{vA,vAB,vBC,vC,vD}];c1s=Polygon[{vAB,vBC,vB}];​​c2=Polygon[{vE,vB,vBC,vCF,vF}];c2s=Polygon[{vBC,vC,vCF}];​​c3=Polygon[{vE,vH,vGH,vFG,vF}];c3s=Polygon[{vG,vFG,vGH}];​​c4=Polygon[{vD,vG,vGH,vHA,vA}];c4s=Polygon[{vH,vHA,vGH}];​​c5=Polygon[{vC,vCF,vFG,vG,vD}];c5s=Polygon[{vF,vFG,vCF}];​​c6=Polygon[{vE,vB,vAB,vHA,vH}];c6s=Polygon[{vA,vHA,vAB}];​​t1=Polygon[{vAB,vBC,vO}];t2=Polygon[{vO,vBC,vCF}];​​t3=Polygon[{vO,vCF,vFG}];t4=Polygon[{vO,vFG,vGH}];​​t5=Polygon[{vO,vGH,vHA}];t6=Polygon[{vO,vHA,vAB}];​​spFG={Green,Sphere[vFG,0.1]};​​spGH={Yellow,Sphere[vGH,0.1]};​​spHA={RGBColor[0.3,0.8,1],Sphere[vHA,0.1]};​​spO={RGBColor[1,0.4,0.5],Sphere[vO,0.1]};​​u1=Translate[{spO,spFG,spGH,spHA,c1s,c2,c3,c4s,c5s,c6,t1,t2,t3,t4,t5,t6},{0,-0,0}];​​right={spO,spFG,spGH,spHA,c1,c2s,c3s,c4,c5,c6s,t1,t2,t3,t4,t5,t6};​​u2=Translate[Rotate[{right},-Pi,{0,1,0},{0.809,-0.809,0.809}],{0,1.618,0}];​​u34=Translate[Rotate[{u1,u2},Pi,{0,0,1}],{0,0,0}];​​u5678=Translate[Rotate[{u1,u2,u34},Pi,{1,0,0}],{0,0,0}];​​k54={u1,u2,u34,u5678};​​​​g=Graphics3D[{u1,cube8,cubtube,If[u,u5678,{}],If[v,{u2,u34},{}],Red,If[rts,rtfr,{}]},BoxedFalse,SphericalRegionTrue,ViewPoint{-2,-4,2},PlotRange2,ImageSize400],​​{{a,0,"shift vertices"},0.19,-0.618},​​{{u,False,"bottom"},{True,False},ImageSize->Tiny,ControlPlacementLeft},​​{{v,False,"top"},{True,False},ImageSize->Tiny,ControlPlacementLeft},​​{{rts,False,"rt"},{True,False},ImageSize->Tiny,ControlPlacementLeft},​​{{perf,0.2,"perf"},0.1,0.99,ImageSize->Tiny,ControlPlacementLeft},​​​​TrackedSymbols{a,u,v,rts}]]
Out[]=
​
shift vertices
bottom
top
rt
perf