Hi, On Sun, May 12, 2024 at 6:24 PM Fabrice Couvreur < fabrice1.couvreur@gmail.com> wrote: > > With Okular, it works ! Very good. You can still try the thing below: \startluacode local exp = math.exp local N = 1000 local xstep = 1.6/N local ystep = 1.8/N local xmin = 0.3 local ymin = 0.4 local function f(x,y) local x = xstep*x - xmin local y = ystep*y - ymin local z = x + exp(-60*x) - y if z > 0 then return '1' else return '0' end end potrace.setbitmap("mybitmap", potrace.contourplot(N,N,f)) \stopluacode \startMPpage[offset=1dk] path p ; p := lmt_potraced [ stringname = "mybitmap", value = "1", tolerance = 0.1, threshold = 0.2, optimize = true, ] ; p := p xsized 10cm ; draw p withpen pencircle scaled 5 withcolor "darkblue" ; drawpoints p withcolor "orange" ; drawpointlabels p ; p := subpath(6,19) of p ; draw p withpen pencircle scaled 3 withcolor "yellow" ; \stopMPpage Another thing, Hans added nocycle, so you can write your loop if you want to use it as something like def compute_curve(suffix f)(expr xmin, xmax, xinc) = for x=xmin step xinc until xmax: (x,f(x)) .. endfor nocycle ; enddef; Then you do not need to think about the first and/or last point separately.