import graph3; size(7.5cm); currentprojection=perspective(camera=(4,4,7),up=Z); path3[] p=reverse(unitcircle3)^^scale3(0.5)*unitcircle3; draw(surface(p,planar=true),red,render(merge=true)); draw(surface(shift(Z)*p,planar=true),red,render(merge=true)); path[] g=reverse(unitcircle)^^scale(0.5)*unitcircle; for(path gi : g) draw(extrude(gi,Z),lightgray); limits((0,0,0),1.5*(X+Y)+2Z); xaxis3("$x$",Arrow3()); yaxis3("$y$",Arrow3()); zaxis3("$z$",Arrow3());