Taco,
I have something that works. Thanks for hanging in there with me.
%output=pdf
\setupcolors[state=start]
\definecolor[gridlines][s=0.7]
\startMPinclusions
color gridlines; gridlines:=\MPcolor{gridlines};
vardef create_grid(expr xxmin,xxmax,xxscl,yymin,yymax,yyscl,uux,uuy)=
for k=xxmin step xxscl until xxmax:
draw (xmin*uux,k*uuy)--(xmax*uux,k*uuy) withcolor \MPcolor
{gridlines};
draw (k*uux,ymin*uuy)--(k*uux,ymax*uuy) withcolor \MPcolor
{gridlines};
endfor;
enddef;
vardef create_axes (expr xxmin,xxmax,yymin,yymax,uux,uuy) (text
xlbl,ylbl) =
textextoffset:=3pt;
picture p; p:=textext.rt(xlbl); p:=p shifted (1.05*xxmax*ux,0);
picture q; q:=textext.top(ylbl); q:=q shifted (0,1.05*yymax*uy);
drawdblarrow (1.05*xxmin*uux,0)--(1.05*xxmax*uux,0);
draw p;
drawdblarrow (0,1.05*yymin*uuy)--(0,1.05*yymax*uuy);
draw q;
enddef;
vardef drawf(expr xxmin,xxmax,yymin,yymax,uux,uuy,n)=
path p; p:=(xxmin,f(xxmin));
numeric dx; dx=(xxmax-xxmin)/n;
for x=xmin step dx until xxmax:
p:=p--(x,f(x));
endfor;
p:=p--(xxmax,f(xxmax));
path cpath;
cpath:=(xxmin,yymin)--(xxmax,yymin)--(xxmax,yymax)--(xxmin,yymax)--
cycle;
p:=p cutbefore cpath;
p:=reverse p;
p:=p cutbefore cpath;
p:=p xyscaled (uux,uuy);
drawdblarrow p withcolor blue;
enddef;
\stopMPinclusions
\starttext
\startMPpage
%initialize function
vardef f(expr x)=
x*x
enddef;
%initialize window parameters
numeric xmin, xmax, xscl, ymin, ymax, yscl;
xmin:=-5;
xmax:=5;
xscl:=1;
ymin:=-5;
ymax:=5;
yscl:=1;
%initialize number of points
numeric num_points;
num_points:=100;
%initialize dimensions of image
numeric width, height;
width=3in;
height=3in;
%initialize scale
numeric ux, uy;
(xmax-xmin)*ux=width; (ymax-ymin)*uy=height;
%create the grid
create_grid(xmin,xmax,xscl,ymin,ymax,yscl,ux,uy);
%create the axes
create_axes(xmin,xmax,ymin,ymax,ux,uy)("$x$")("$y$");
%draw the function
drawf(xmin,xmax,ymin,ymax,ux,uy,num_points);
\stopMPpage
\stoptext
%%% Local Variables:
%%% mode: conTeXt-en
%%% End: