import three; real u = 1cm; currentprojection=perspective(50u,-20u,0); path3 cir = unitcircle3; path3 cyl[] = cir ^^ (shift((0,0,1))*cir) ^^ (0,1,0)--(0,1,1) ^^ (0,-1,0)--(0,-1,1); currentpen = blue; for (int i; i < cyl.length; i+=1) draw(yscale3(5)*rotate(-90,(1,0,0))*scale3(u)*cyl[i]); currentpen = red; for (int i; i < cyl.length; i+=1) draw(yscale3(5)*rotate(90,(1,0,0))*scale3(u)*cyl[i]); currentpen = black; label("$\rho_a$", (0,2.5u,0)); label("$\rho_c$", (0,-2.5u,0)); draw((0,-1u,0)--(0,1u,0), Arrow3); label("$I$", (0, 1u,0), E); label("$A$", (0, -5.5u, 0)); draw((0,-5u,-u)--(0,-5u,u)); label("$d$", (0, -4.9u /*hack*/, 0), W); draw((0,-5u,-1.1u)--(0,0,-1.1u), Arrows3); label("$l$, $R_c$, $V_c$", (0, -2.5u,-1.1u), S); draw((0,5u,-1.1u)--(0,0,-1.1u), Arrows3); label("$l$, $R_a$, $V_a$", (0, 2.5u,-1.1u), S); draw((0,-5u,1.1u)--(0,5u,1.1u), Arrows3); label("$R_T$, $V_T$", (0, 0,1.1u), N);