% Figures 2-7 from _MetaPlot, MetaContour, and Other Collaborations
% with METAPOST_, preprint version, given at the Practical TeX 2004
% conference.
prologues:=0;
input metaplot % MetaPlot macros
% capillary.mp and capillary2.mp are both produced as output of the
% program capillary.cc. The relevant parameters in the program
% (lines 29-30) are:
%
% For capillary.mp:
% double theta = pi/4.0;
% double d = 1.0;
%
% For capillary2.mp:
% double theta = pi/6.0;
% double d = 1.0;
input capillary % capillary plot object
input capillary2 % capillaryb plot object
% Figure 2: The capillary surface, in its unadorned form as plot
% object elements scaled to 2.0in by 0.75in.
plot_instantiate(plotA, capillary)
plotA.pageleft = 0.0;
plotA.pagebottom = 0.0;
plotA.pagewidth = 2.0in;
plotA.pageheight = 0.75in;
beginfig(2)
draw plotA.plot(fplot) withcolor 0.85white;
draw plotA.plot(lplot) withpen pencircle scaled 1pt;
endfig;
% Figure 3: The capillary surface, with equal y and z scales, a page
% height of 0.75in, and appropriate annotations.
plot_instantiate(plotB, capillary)
plotB.pageleft = 0.0;
plotB.pagebottom = 0.0;
plotB.pageheight = 0.75in;
plot_setequalaxes(plotB);
beginfig(3)
draw plotB.plot(fplot) withcolor 0.85white;
linecap := butt;
pickup pencircle scaled 1pt;
% z-axis (vertical)
z1 = (plotB.pageleft, plotB.pagebottom);
z2 = (plotB.pageleft, plotB.pagetop + 0.1in);
% y-axis (horizontal)
z3 = (plotB.pageleft, plot_ypageloc(plotB,0.0));
z4 = (plotB.pageright + 0.1in,
plot_ypageloc(plotB,0.0));
drawarrow z1 -- z2;
label.top(btex $z$ etex, z2);
drawarrow z3 -- z4;
label.rt(btex $y$ etex, z4);
pickup pencircle scaled 0.25pt;
% Label for contact angle
z5 = plotB.plot(contactpoint);
z6 = z5 + 0.24in
* dir(-90 + capillary.contactangle);
z7 = z5 + 0.18in
* dir(-90 + 0.5*capillary.contactangle);
draw z5 -- z6;
label(btex $\theta$ etex, z7);
endfig;
% Figure 4: The capillary surface with parameters and page height as
% in Figure 3, but with $\theta = \pi/6$.
plot_instantiate(plotC, capillaryb)
plotC.pageleft = 0.0;
plotC.pagebottom = 0.0;
plotC.pageheight = 0.75in;
plot_setequalaxes(plotC);
beginfig(4)
draw plotC.plot(fplot) withcolor 0.85white;
linecap := butt;
pickup pencircle scaled 1pt;
% z-axis (vertical)
z1 = (plotC.pageleft, plotC.pagebottom);
z2 = (plotC.pageleft, plotC.pagetop + 0.1in);
% y-axis (horizontal)
z3 = (plotC.pageleft, plot_ypageloc(plotC,0.0));
z4 = (plotC.pageright + 0.1in,
plot_ypageloc(plotC,0.0));
drawarrow z1 -- z2;
label.top(btex $z$ etex, z2);
drawarrow z3 -- z4;
label.rt(btex $y$ etex, z4);
pickup pencircle scaled 0.25pt;
% Label for contact angle
z5 = plotC.plot(contactpoint);
z6 = z5 + 0.24in
* dir(-90 + capillaryb.contactangle);
z7 = z5 + 0.18in
* dir(-90 + 0.5*capillaryb.contactangle);
draw z5 -- z6;
label(btex $\theta$ etex, z7);
endfig;
% Figure 5: Two capillary surfaces, as in Figure 3 and Figure 4, showing
% the difference in the curves as a result of varying $\theta$.
plot_instantiate(plotD, capillary)
plotD.pageleft = 0.0;
plotD.pagebottom = 0.0;
plotD.pageheight = 0.75in;
plot_setequalaxes(plotD);
plot_instantiate(plotE, capillaryb)
plot_zpageloc(plotD, 0.0, 0.0)
= plot_zpageloc(plotE, 0.0, 0.0);
plot_zpageloc(plotD, 1.0, 1.0)
= plot_zpageloc(plotE, 1.0, 1.0);
beginfig(5)
linecap := butt;
pickup pencircle scaled 1pt;
draw plotD.plot(fplot) withcolor 0.85white;
draw plotE.plot(lplot) dashed evenly
withpen pencircle scaled 0.5pt;
% z-axis (vertical)
z1 = (plotD.pageleft, plotD.pagebottom);
x2 = plotD.pageleft;
y2 = max(plotD.pagetop, plotE.pagetop) + 0.1in;
% y-axis (horizontal)
z3 = (plotD.pageleft, plot_ypageloc(plotD,0.0));
x4 = max(plotD.pageright, plotE.pageright) + 0.1in;
y4 = plot_ypageloc(plotD,0.0);
drawarrow z1 -- z2;
label.top(btex $z$ etex, z2);
drawarrow z3 -- z4;
label.rt(btex $y$ etex, z4);
endfig;
end
% Figure 6: A repeat of Figure 5, with simple grid labels added.
beginfig(6)
linecap := butt;
pickup pencircle scaled 1pt;
draw plotD.plot(fplot) withcolor 0.85white;
draw plotE.plot(lplot) dashed evenly
withpen pencircle scaled 0.5pt;
% z-axis (vertical)
z1 = (plotD.pageleft, plotD.pagebottom);
x2 = plotD.pageleft;
y2 = max(plotD.pagetop, plotE.pagetop) + 0.1in;
% y-axis (horizontal)
z3 = (plotD.pageleft, plot_ypageloc(plotD,0.0));
x4 = max(plotD.pageright, plotE.pageright) + 0.1in;
y4 = plot_ypageloc(plotD,0.0);
drawarrow z1 -- z2;
label.top(btex $z$ etex, z2);
drawarrow z3 -- z4;
label.rt(btex $y$ etex, z4);
x5 = plotD.pageleft;
x6 = x4;
y5 = y6 = plotD.pagebottom;
draw plot_xtickscale(plotD)(
z5, z6, 0.08in, 0.06in, down,
0.0, 1.0, "%3f")
withpen pencircle scaled 0.5pt;
y7 = plotD.pagebottom;
y8 = y2;
x7 = x8 = plotD.pageleft;
draw plot_ytickscale(plotD)(
z7, z8, 0.08in, 0.06in, left,
0.0, 0.5, "%3f")
withpen pencircle scaled 0.5pt;
endfig;
% Figure 7: A repeat of Figure 5 again, with more advanced grid labels.
beginfig(7)
linecap := butt;
pickup pencircle scaled 1pt;
draw plotD.plot(fplot) withcolor 0.85white;
draw plotE.plot(lplot) dashed evenly
withpen pencircle scaled 0.5pt;
% z-axis (vertical)
z1 = (plotD.pageleft, plotD.pagebottom);
x2 = plotD.pageleft;
y2 = max(plotD.pagetop, plotE.pagetop) + 0.1in;
% y-axis (horizontal)
z3 = (plotD.pageleft, plot_ypageloc(plotD,0.0));
x4 = max(plotD.pageright, plotE.pageright) + 0.1in;
y4 = plot_ypageloc(plotD,0.0);
drawarrow z1 -- z2;
label.top(btex $z$ etex, z2);
drawarrow z3 -- z4;
label.rt(btex $y$ etex, z4);
x5 = plotD.pageleft;
x6 = x4 - 0.1in;
y5 = y6 = plotD.pagebottom - 0.06in;
draw plot_xtickscale(plotD)(
z5, z6, 0.08in, 0.06in, down,
0.5, 1.0, "%3f")
withpen pencircle scaled 0.5pt;
draw plot_xtickscale(plotD)(
z5, z6, 0.08in, 0.06in, down,
0.0, 1.0, "")
withpen pencircle scaled 0.5pt;
draw plot_xtickscale(plotD)(
z5, z6, 0.04in, 0.06in, down,
0.0, 0.1, "")
withpen pencircle scaled 0.5pt;
y7 = y4;
y8 = y2 - 0.1in;
x7 = x8 = plotD.pageleft - 0.06in;
draw plot_ytickscale(plotD)(
z7, z8, 0.08in, 0.06in, left,
0.0, 0.5, "%3f")
withpen pencircle scaled 0.5pt;
draw plot_ytickscale(plotD)(
z7, z8, 0.04in, 0.06in, left,
0.0, 0.1, "")
withpen pencircle scaled 0.5pt;
endfig;
end