MetaPost image of a cylinder, with dimensions and axes specified. Embedded in a TeX document, viewed with gv, rasterized via screenshot, saved as PNG with The Gimp, and compressed with optipng.
% this MetaPost script generates a PostScript file, which is then included in a
% TeX document. if you want to generate EPS from this, you'll have to uncomment
% the following line. (and probably do a couple more things, to boot.)
%prologues := 1;
def cylinder =
begingroup;
save pmax,dmax,persp,persp_nt,arr;
save harrtop,harrbot,rarrlft,rarrrt;
save p,d;
save axisprotrusion;
save xax,yax,zax;
pmax = 3; dmax = 0;
persp_nt = 0.3;
persp = persp_nt*u;
arr = 0.2u; % how far to offset the arrows from the diagram
axisprotrusion = 1u; % how far do the axes protrude?
pair harrtop,harrbot,rarrlft,rarrrt; % endpoints for arrows
path p[],d[]; % original, dotted
pair xax[],yax[],zax[]; % x,y,z are taken; these are for the axes
% solid paths
p0 = (-1u,-1u)--(-1u,1u);
p1 = (1u,-1u)--(1u,1u);
p2 = fullcircle scaled u xscaled 2 yscaled (2*persp_nt) shifted (0,1u);
p3 = halfcircle scaled u xscaled 2 yscaled (2*persp_nt) rotated 180 shifted (0,-1u);
% dashed paths
d0 = halfcircle scaled u xscaled 2 yscaled (2*persp_nt) shifted (0,-1u);
% endpoints of dimension arrows
harrtop = (-1u-arr,1u);
harrbot = (-1u-arr,-1u);
rarrlft = (0,1u);
rarrrt = (1u,1u);
{{Information |Description=MetaPost image of a cylinder, with dimensions and axes specified. Embedded in a TeX document, viewed with gv, rasterized via screenshot, saved as PNG with The Gimp, and compressed with optipng. |Source=en.wikipedia.org |Date=unk