# Asymptote

Asymptote is a LaTeX-integrated graphics package like Metapost. It claims to be Metapost's successor, so it should have a cleaner syntax and better support.

There are good tutorials here and here. This example shows how to embed Asymptote code in LaTeX, with a more thorough introduction here. You may also want to look at the asyfig package (also on CTAN).

The full documentation is here.

## Simple 3D example

Here is a simple graphic I made for my E&M class. Note that 3D perspective is simple with the ‘three’ module.

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);