[NTG-context] Re: Metapost limitation ?
Hi, On Sun, May 12, 2024 at 6:24 PM Fabrice Couvreur < fabrice1.couvr...@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. ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___
[NTG-context] Re: Metapost limitation ?
With Okular, it works ! Le dim. 12 mai 2024 à 17:55, Hans Hagen a écrit : > On 5/12/2024 5:36 PM, Fabrice Couvreur wrote: > > Sorry for the comment ! > > I use Evince > so how about okular or mupdf > > - >Hans Hagen | PRAGMA ADE >Ridderstraat 27 | 8061 GH Hasselt | The Netherlands > tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl > - > > > ___ > If your question is of interest to others as well, please add an entry to > the Wiki! > > maillist : ntg-context@ntg.nl / > https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl > webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) > archive : https://github.com/contextgarden/context > wiki : https://wiki.contextgarden.net > > ___ > ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___
[NTG-context] Re: Metapost limitation ?
On 5/12/2024 5:36 PM, Fabrice Couvreur wrote: Sorry for the comment ! I use Evince so how about okular or mupdf - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl - ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___
[NTG-context] Re: Metapost limitation ?
Sorry for the comment ! I use Evince Le dim. 12 mai 2024 à 17:30, Hans Hagen a écrit : > On 5/12/2024 3:57 PM, Fabrice Couvreur wrote: > > Hi, > > When I want to draw the curve which corresponds to n=60 (blue curve), it > > doesn't seem possible: I don't understand. > > Thanks > > Fabrice > > > > \startMPpage[offset=1DK] > > > >numeric u; > >u = 6cm; > > > >interim linejoin := mitered; > >interim ahangle := 30; > > > >path xx, yy; > >xx = ( (-0.3,0) -- 1.4 right) scaled u; > >yy = ( (-0.1,0) -- 1.8 right) rotated 90 scaled u; > > > >def compute_curve(suffix f)(expr xmin, xmax, xinc) = > >((xmin,f(xmin)) > >for x=xmin+xinc step xinc until xmax: > > .. (x,f(x)) > >endfor) > >enddef; > > > > > >for i = 1 upto 4: > > > >vardef f(expr x) =x+exp(-i*x) enddef; > > > >path curve; > > > >curve = compute_curve(f,-0.4,1.4,0.0001) scaled u; > > > >draw curve; > > > >endfor; > > > >vardef f(expr x) =x+exp(-6*x) enddef; > > > >path curve; > > > >curve = compute_curve(f,-0.4,1.4,0.0001) scaled u; > > > >draw curve; > > > >vardef f(expr x) =x+exp(-15*x) enddef; > > > >path curve; > > > >curve = compute_curve(f,-0.4,1.4,0.0001) scaled u; > > > >draw curve; > > > > > >vardef f(expr x) =x+exp(-60*x) enddef; > > > >path curve; > > > >curve = compute_curve(f,-0.4,1.4,0.0001) scaled u; -> not > > drawn > > best put a comment before the ->>> > > >draw curve withcolor blue; > > > > > >drawarrow (0,0) -- (u,0) withpen pencircle scaled 1.5bp; > >drawarrow (0,0) -- (0,u) withpen pencircle scaled 1.5bp; > > > > > >label.urt("A",(0,1u)); > > > >draw xx; > >draw yy; > > > >draw (1u,0) -- (1u,1.8u); > > > > > >label.llft("0",(0,0)); > > > > vardef mark_y_axis(expr value, name) = > > save p; pair p; p = value * u * up; > > draw (left--right) scaled 1 shifted p; > > label.lft(name, p shifted 2 left); > >enddef; > > > >for a = 1 upto 1: > > mark_y_axis(a, ""); > >endfor > > > > mark_y_axis(1, "$1$"); > > > > > > vardef mark_x_axis(expr value, name) = > > save p; pair p; p = value * u * right; > > draw (up--down) scaled 1 shifted p; > > label.bot(name, p shifted 2 down); > > enddef; > > > > for a = 1 upto 1: > > mark_x_axis(a, ""); > > endfor > > > > mark_x_axis(1, "$1$"); > > > > > >path rectangle; > >rectangle = (-0.3u,-0.4u) -- (1.3u,-0.4u) -- (1.3u,-0.4u) -- > > (1.3u,1.4u) -- (-0.3u,1.4u)--cycle; > > > >clip currentpicture to rectangle; > > \stopMPpage > > > your exp usage: > >exp(-60*-0.4) > > if you see what huge numbers come out of that, like > > -51.006602 11100558579.857309 l > -50.989594 11034154639.123087 l > -50.972586 10968147929.149401 l > -50.955579 10902536073.687559 l > -50.938571 10837316710.703716 l > > you could imagine a viewer crapping out on that because no matter what > one clips it still is 'kind of drawn', so what viewer do you use? > > Hans > > - >Hans Hagen | PRAGMA ADE >Ridderstraat 27 | 8061 GH Hasselt | The Netherlands > tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl > - > > > ___ > If your question is of interest to others as well, please add an entry to > the Wiki! > > maillist : ntg-context@ntg.nl / > https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl > webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) > archive : https://github.com/contextgarden/context > wiki : https://wiki.contextgarden.net > > ___ > ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___
[NTG-context] Re: Metapost limitation ?
On 5/12/2024 3:57 PM, Fabrice Couvreur wrote: Hi, When I want to draw the curve which corresponds to n=60 (blue curve), it doesn't seem possible: I don't understand. Thanks Fabrice \startMPpage[offset=1DK] numeric u; u = 6cm; interim linejoin := mitered; interim ahangle := 30; path xx, yy; xx = ( (-0.3,0) -- 1.4 right) scaled u; yy = ( (-0.1,0) -- 1.8 right) rotated 90 scaled u; def compute_curve(suffix f)(expr xmin, xmax, xinc) = ((xmin,f(xmin)) for x=xmin+xinc step xinc until xmax: .. (x,f(x)) endfor) enddef; for i = 1 upto 4: vardef f(expr x) =x+exp(-i*x) enddef; path curve; curve = compute_curve(f,-0.4,1.4,0.0001) scaled u; draw curve; endfor; vardef f(expr x) =x+exp(-6*x) enddef; path curve; curve = compute_curve(f,-0.4,1.4,0.0001) scaled u; draw curve; vardef f(expr x) =x+exp(-15*x) enddef; path curve; curve = compute_curve(f,-0.4,1.4,0.0001) scaled u; draw curve; vardef f(expr x) =x+exp(-60*x) enddef; path curve; curve = compute_curve(f,-0.4,1.4,0.0001) scaled u; -> not drawn best put a comment before the ->>> draw curve withcolor blue; drawarrow (0,0) -- (u,0) withpen pencircle scaled 1.5bp; drawarrow (0,0) -- (0,u) withpen pencircle scaled 1.5bp; label.urt("A",(0,1u)); draw xx; draw yy; draw (1u,0) -- (1u,1.8u); label.llft("0",(0,0)); vardef mark_y_axis(expr value, name) = save p; pair p; p = value * u * up; draw (left--right) scaled 1 shifted p; label.lft(name, p shifted 2 left); enddef; for a = 1 upto 1: mark_y_axis(a, ""); endfor mark_y_axis(1, "$1$"); vardef mark_x_axis(expr value, name) = save p; pair p; p = value * u * right; draw (up--down) scaled 1 shifted p; label.bot(name, p shifted 2 down); enddef; for a = 1 upto 1: mark_x_axis(a, ""); endfor mark_x_axis(1, "$1$"); path rectangle; rectangle = (-0.3u,-0.4u) -- (1.3u,-0.4u) -- (1.3u,-0.4u) -- (1.3u,1.4u) -- (-0.3u,1.4u)--cycle; clip currentpicture to rectangle; \stopMPpage your exp usage: exp(-60*-0.4) if you see what huge numbers come out of that, like -51.006602 11100558579.857309 l -50.989594 11034154639.123087 l -50.972586 10968147929.149401 l -50.955579 10902536073.687559 l -50.938571 10837316710.703716 l you could imagine a viewer crapping out on that because no matter what one clips it still is 'kind of drawn', so what viewer do you use? Hans - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl - ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl webpage : https://www.pragma-ade.nl / https://context.aanhet.net (mirror) archive : https://github.com/contextgarden/context wiki : https://wiki.contextgarden.net ___