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.
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},MeshNone,BoundaryStyleBlack][[1]];segment2=RevolutionPlot3D[{x,0,w},{x,0,1},{f,-Pi/n,Pi/n},MeshNone,BoundaryStyleBlack][[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},MeshNone][[1]];handle={RGBColor[0.3,0.4,0.2],ParametricPlot3D[{Sin[x],Cos[x],v},{x,0,2Pi},{v,0,-0.12},MeshNone][[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},MeshNone,BoundaryStyleBlack][[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},BoxedFalse,SphericalRegionTrue,ImageSize380,ViewAngle0.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},TrackedSymbolsTrue]
Out[]=

