ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* [NTG-context] Metapost limitation ?
@ 2024-05-12 13:57 Fabrice Couvreur
  2024-05-12 15:26 ` [NTG-context] " Hans Hagen
  0 siblings, 1 reply; 6+ messages in thread
From: Fabrice Couvreur @ 2024-05-12 13:57 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 2470 bytes --]

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

          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

[-- Attachment #1.2: Type: text/html, Size: 3686 bytes --]

[-- Attachment #2: Type: text/plain, Size: 511 bytes --]

___________________________________________________________________________________
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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [NTG-context] Re: Metapost limitation ?
  2024-05-12 13:57 [NTG-context] Metapost limitation ? Fabrice Couvreur
@ 2024-05-12 15:26 ` Hans Hagen
  2024-05-12 15:36   ` Fabrice Couvreur
  0 siblings, 1 reply; 6+ messages in thread
From: Hans Hagen @ 2024-05-12 15:26 UTC (permalink / raw)
  To: ntg-context

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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [NTG-context] Re: Metapost limitation ?
  2024-05-12 15:26 ` [NTG-context] " Hans Hagen
@ 2024-05-12 15:36   ` Fabrice Couvreur
  2024-05-12 15:48     ` Hans Hagen
  0 siblings, 1 reply; 6+ messages in thread
From: Fabrice Couvreur @ 2024-05-12 15:36 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 4594 bytes --]

Sorry for the comment !
I use Evince

Le dim. 12 mai 2024 à 17:30, Hans Hagen <j.hagen@xs4all.nl> 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
>
> ___________________________________________________________________________________
>

[-- Attachment #1.2: Type: text/html, Size: 6785 bytes --]

[-- Attachment #2: Type: text/plain, Size: 511 bytes --]

___________________________________________________________________________________
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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [NTG-context] Re: Metapost limitation ?
  2024-05-12 15:36   ` Fabrice Couvreur
@ 2024-05-12 15:48     ` Hans Hagen
  2024-05-12 16:21       ` Fabrice Couvreur
  0 siblings, 1 reply; 6+ messages in thread
From: Hans Hagen @ 2024-05-12 15:48 UTC (permalink / raw)
  To: ntg-context

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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [NTG-context] Re: Metapost limitation ?
  2024-05-12 15:48     ` Hans Hagen
@ 2024-05-12 16:21       ` Fabrice Couvreur
  2024-05-12 17:36         ` Mikael Sundqvist
  0 siblings, 1 reply; 6+ messages in thread
From: Fabrice Couvreur @ 2024-05-12 16:21 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 1133 bytes --]

With Okular, it works !

Le dim. 12 mai 2024 à 17:55, Hans Hagen <j.hagen@xs4all.nl> 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
>
> ___________________________________________________________________________________
>

[-- Attachment #1.2: Type: text/html, Size: 2173 bytes --]

[-- Attachment #2: Type: text/plain, Size: 511 bytes --]

___________________________________________________________________________________
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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [NTG-context] Re: Metapost limitation ?
  2024-05-12 16:21       ` Fabrice Couvreur
@ 2024-05-12 17:36         ` Mikael Sundqvist
  0 siblings, 0 replies; 6+ messages in thread
From: Mikael Sundqvist @ 2024-05-12 17:36 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 1405 bytes --]

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.

[-- Attachment #1.2: Type: text/html, Size: 1897 bytes --]

[-- Attachment #2: Type: text/plain, Size: 511 bytes --]

___________________________________________________________________________________
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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-05-12 17:36 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-05-12 13:57 [NTG-context] Metapost limitation ? Fabrice Couvreur
2024-05-12 15:26 ` [NTG-context] " Hans Hagen
2024-05-12 15:36   ` Fabrice Couvreur
2024-05-12 15:48     ` Hans Hagen
2024-05-12 16:21       ` Fabrice Couvreur
2024-05-12 17:36         ` Mikael Sundqvist

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).