Another common command in \MP{} is the |fill| command. This is used to
fill closed paths (or cycles). In order to construct a cycle, |cycle|
may be appended to the path declaration. For example,
\begin{lstlisting}[style=MP]
path p;
p := z1{right}..z2{dir 45}..{up}z3--cycle;
fill p withcolor red;
draw p;
\end{lstlisting}
produces \autoref{fig:fill}. Notice that |p| is essentially the same
curved path as in \autoref{fig:draw1} with the additional piece that
connects |z3| back to |z1| with a line segment using |--cycle|.
Just as it is necessary to fill closed paths, it may also be necessary
to \textit{unfill} closed paths. For example, the annulus in
\autoref{fig:annulus1} can be constructed by
\begin{lstlisting}[style=MP]
color bbblue;
bbblue := (3/5,4/5,1);
path p,q;
p := fullcircle scaled (2*54);
q := fullcircle scaled (2*27);
fill p withcolor bbblue;
unfill q;
draw p;
draw q;
\end{lstlisting}
The |fullcircle| path is a built-in path that closely
approximates a circle in \MP{} with diameter 1\,bp traversed
counter-clockwise. This path is not exactly a circle since it is
parameterized by a B\'{e}zier curve and not by trigonometric functions;
however, visually it is essentially indistinguishable from an exact
circle.
Notice that |p| is a |fullcircle| of radius 54\,bp (3/4\,in) and |q| is
a |fullcircle| of radius 27\,bp (3/8\,in). The annulus is constructed
by filling |p| with the baby blue color |bbblue| and then unfilling |q|.
The |unfill| command above is equivalent to
\begin{lstlisting}[style=MP]
fill q withcolor background;
\end{lstlisting}
where |background| is a built-in color which is |white| by default.
Often the |unfill| command appears to be the natural method for
constructing figures like \autoref{fig:annulus1}. However, the |fill|
and |unfill| commands in \autoref{fig:annulus1} can be replaced by
\begin{lstlisting}[style=MP]
fill p--reverse q--cycle withcolor bbblue;
\end{lstlisting}
\begin{figure}
\begin{withattachment}{annulus.mp}
\centering
\includegraphics{annulus-2.mps}
\end{withattachment}
\caption{Avoiding an \texttt{unfill}}
\label{fig:annulus2}
\end{figure}
The path |p--reverse q--cycle| travels around |p| in a counter-clockwise
directions (since this is the direction that |p| traverses) followed by
a line segment to connect to |q|. It then traverses clockwise around
|q| (using the |reverse| operator) and finally returns to the starting
point along a line segment using |--cycle|. This path is illustrated in
\autoref{fig:annulus2}. One reason for using this method to construct
the annulus as opposed to the |unfill| command is to ensure
\textit{proper transparency} when placing the figure in an external
document with a non-white background. If the former method is used and
the annulus is placed on a non-white background, say magenta, then the
result is \autoref{fig:annulus3}.
It may be desired to have the interior of |q| be magenta instead of
|white|. This could be accomplished by redefining |background|;
however, the latter method described above is a much simpler solution.