English: prologues := 2;
% input metaobj.mp;
beginfig(1);
numeric u;
u := 1cm;
path pp;
defaultscale := .5;
pp := unitsquare xscaled u yscaled 1.5u;
fill pp withcolor .8white;
draw pp;
pair ppl, ppr;
ppl := (ulcorner pp + llcorner pp)/2;
ppr := (urcorner pp + lrcorner pp)/2;
path qq[];
qq1 := subpath (0.5, 3.5) of (fullcircle scaled u);
qq2 := qq1;
qq1 := (qq1 rotated 90 yscaled 1.5) shifted ppl;
qq1 := qq1 shifted (-.5u, 0);
drawarrow qq1;
label.llft("M", (point (length(qq1)) of qq1));
qq2 := (qq2 rotated -90 yscaled 1.5) shifted ppr ;
qq2 := qq2 shifted (.5u, 0);
drawarrow qq2;
label.urt("M+dM", (point (length(qq2)) of qq2));
path rr[];
rr1 := ppl - (.25u, .75u) -- ppl - (.25u, -.75u);
drawarrow rr1;
label.ulft("V+dV", (point 1 of rr1));
rr2 := ppr - (-.25u, -.75u) -- ppr - (-.25u, .75u);
drawarrow rr2;
label.lrt("V", (point 1 of rr2));
path ll; ll := ulcorner pp + (0, .25u) -- urcorner pp + (0, .35u);
for i=0 upto 4:
pair ip, fp;
ahangle := 25;
ip := (point (i * .25) of ll);
xpart fp = xpart ip;
ypart fp = ypart ulcorner pp;
drawarrow ip -- fp;
endfor;
draw ll;
label.top("q(x)", center ll);
draw ppl - (0, 1.25u) -- ppl - (0, u);
draw ppr - (0, 1.25u) -- ppr - (0, u);
drawdblarrow ppl - (0, 1.125u) -- ppr - (0, 1.125u);
label.top("dx", (center pp - (0, 1.125u)));
currentpicture := currentpicture scaled 3;
currentpicture := currentpicture shifted -llcorner currentpicture;
endfig;
end;