vardef grid(expr p, grid_unit) = save llx, lly, urx, ury; (llx, lly) = llcorner p - (bboxmargin, bboxmargin); (urx, ury) = urcorner p + (bboxmargin, bboxmargin); image( for x = 1 + floor(llx / grid_unit) upto floor(urx / grid_unit): draw (x * grid_unit, lly) -- (x * grid_unit, ury); endfor for y = 1 + floor(lly / grid_unit) upto floor(ury / grid_unit): draw (llx, y * grid_unit) -- (urx, y * grid_unit); endfor if (llx < 0) and (lly < 0) and (urx > 0) and (ury > 0): draw fullcircle scaled 3; % show origin if in range fi ) enddef;