Expandable circular table
Sándor Kabai
The top of a circular table is divided into sectors. You can move them away from the center and then raise insets into the gaps.
In[]:=
​​Manipulate[​​w=0.1;​​n=6;​​u=0.5/Cos[Pi/n/2];​​segment1=RevolutionPlot3D[{x,0},{x,0,1},{f,-Pi/n,Pi/n},MeshNone,BoundaryStyleBlack][[1]];​​segment2=RevolutionPlot3D[{x,0,w},{x,0,1},{f,-Pi/n,Pi/n},MeshNone,BoundaryStyleBlack][[1]];​​face1=Polygon[{{0,0,0},{0,0,w},{Cos[Pi/n],Sin[Pi/n],w},{Cos[Pi/n],Sin[Pi/n],0}}];​​face2=Polygon[{{0,0,0},{0,0,w},{Cos[Pi/n],-Sin[Pi/n],w},{Cos[Pi/n],-Sin[Pi/n],0}}];​​edge=ParametricPlot3D[{Sin[x],Cos[x],v},{x,Pi/2-Pi/n,Pi/2+Pi/n},{v,0,w},MeshNone][[1]];​​handle={RGBColor[0.3,0.4,0.2],ParametricPlot3D[{Sin[x],Cos[x],v},{x,0,2Pi},{v,0,-0.12},MeshNone][[1]]};​​leg=Cylinder[{{0,0,-1},{0,0,-0.12}},0.2];​​base={RGBColor[0.3,0.8,0.6],Cylinder[{{0,0,-1},{0,0,-1.1}},0.6]};​​support={RGBColor[0.3,0.2,0.4],RevolutionPlot3D[{x,-0.12},{x,0.2,1},{f,0,2Pi},MeshNone,BoundaryStyleBlack][[1]]};​​​​insert={Specularity[0.3],RGBColor[0.8,0.8,0.4],Table[Rotate[Translate[Polygon[{​​{uCos[Pi/n],-uSin[Pi/n],0},​​{uCos[Pi/n]+u-0.02,-uSin[Pi/n],0},​​{uCos[Pi/n]+u-0.02,uSin[Pi/n],0},​​{uCos[Pi/n],uSin[Pi/n],0},​​{0,0,0}}],​​{tr,0,flush}],i2Pi/n+tr2Pi/n/u,{0,0,1}],{i,n}]};​​​​star={Specularity[0.3],RGBColor[1,0.6,0.4],Translate[Table[Rotate[Polygon[{​​{0,0,-w},​​{0.5,-0.5Tan[Pi/n/2],-w},​​{1,0,-w},​​{0.5,0.5Tan[Pi/n/2],-w}​​}],i2Pi/n/2+Pi/n/2,{0,0,1}],{i,2n}],{0,0,2flush}]};​​​​full={Specularity[0.4],RGBColor[0.8,0.7,0.5],Table[Rotate[Translate[{segment1,segment2,face1,face2,edge},{tr,0,0}],i2Pi/n+trPi/n/u,{0,0,1}],{i,n}]};​​jack=Cylinder[{{0,0,-0.4},{0,0,-0.13+2flush}},0.1];​​​​Graphics3D[{support,handle,jack,base,leg,star,insert,full},BoxedFalse,SphericalRegionTrue,ImageSize380,ViewAngle0.08,ViewPoint{3,-10,6},PlotRange{{-1.6,1.6},{-1.6,1.6},{-1.6,1}}],​​{{tr,0.5176,"rotate to extend"},0,0.5176},​​{{flush,0,"raise inserts"},0,w},TrackedSymbolsTrue]
Out[]=
​
rotate to extend
raise inserts