ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* Hand Style Sketching in Metapost
@ 2021-05-20 18:58 Jeroen
  2021-05-20 19:05 ` Aditya Mahajan
  0 siblings, 1 reply; 3+ messages in thread
From: Jeroen @ 2021-05-20 18:58 UTC (permalink / raw)
  To: mailing list for ConTeXt users


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

I have the following working example with hatching. This works fine, but
when I uncomment the sketching commands, no figure is rendered. Is the
mp-sketch macro still working?


\starttext

\startMPcode


input hatching;

%input mp-sketch;


%sketchypaths;

%sketch_amount := 2bp;


u := 1cm;

path circle;

circle = fullcircle scaled 4u;

hatchfill circle withcolor (45, 5mm, -.5bp);

draw circle;


\stopMPcode

\stoptext

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

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

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

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

* Re: Hand Style Sketching in Metapost
  2021-05-20 18:58 Hand Style Sketching in Metapost Jeroen
@ 2021-05-20 19:05 ` Aditya Mahajan
  2021-05-21 19:46   ` Jeroen
  0 siblings, 1 reply; 3+ messages in thread
From: Aditya Mahajan @ 2021-05-20 19:05 UTC (permalink / raw)
  To: mailing list for ConTeXt users

[-- Attachment #1: Type: text/plain, Size: 291 bytes --]

On Thu, 20 May 2021, Jeroen wrote:

> I have the following working example with hatching. This works fine, but
> when I uncomment the sketching commands, no figure is rendered. Is the
> mp-sketch macro still working?

Seems to be working here with LMTX ver. 2021.04.29. See attached.

Aditya

[-- Attachment #2: Type: application/pdf, Size: 59398 bytes --]

[-- Attachment #3: Type: application/x-tex, Size: 311 bytes --]

[-- Attachment #4: Type: text/plain, Size: 3680 bytes --]

%D \module
%D   [       file=mp-sketch.mp
%D        version=2021.05.13
%D          title=\CONTEXT\ \METAPOST\ graphics,
%D       subtitle=Sketch drawing,
%D         author=Aditya Mahajan,
%D           date=\currentdate,
%D      copyright={Aditya Mahajan}]

%D This metapost module is inspired by a TeX.SE question:
%D http://tex.stackexchange.com/q/39296/323
%D
%D I thought that it would be fun to implement a similar feature in MetaPost.
%D
%D To use this package in MetaPost:
%D
%D \starttyping
%D    input mp-sketch;
%D    
%D    beginfig(1)
%D      sketchypaths; % Make draw and fill sketchy
%D      ...
%D      naturalizepaths; % Restore the value of draw and fill
%D      ...
%D    endfig
%D \stoptyping
%D
%D The code is heavily inspired by Hans Hagen's Metafun macros.
%D
%D The macro \type{sketchypaths} is modeled after \type{visualizepaths} from
%D \filename{mp-tool}.

def sketchypaths =
    let draw = sketchdraw ;
    let fill = sketchfill ;
enddef ;

%D Check if \filename{mp-tool} is loaded
if not known context_tool :
  let normaldraw = draw;
  let normalfill = fill;

  def naturalizepaths =
      let fill = normalfill ;
      let draw = normaldraw ;
  enddef ;
fi

%D The variable \type{sketch_amount} determines the amount of randomness in the
%D drawing
numeric sketch_amount; sketch_amount := 0.75bp;

%D The variable \type{sketch_passes} determines the number of times the path
%D is drawn
numeric sketch_passes; sketch_passes := 1;

%D Based on \type{randomized}. Assumes p is path:
numeric sketch_segments; sketch_segments := 20;

primarydef p sketchrandomized s = (
    if path p :
        for t = 0 step 1/sketch_segments until 1-1/sketch_segments : 
            ((point       (t*arclength(p))                     on p) randomshifted s) .. controls
            ((postcontrol (t*arclength(p))                     on p) randomshifted s) and
            ((precontrol  ((t+1/sketch_segments)*arclength(p)) on p) randomshifted s) ..
        endfor
        if cycle p :
            cycle
        else :
            ((point arclength(p) on p) randomshifted s)
        fi
    else :
        p
    fi
) enddef ;


%D The macro \type{sketchdraw} draws the randomized path. The 
%D \type{expr} ... \type{text} trick is copied from the definition of 
%D \type{drawarrow}
def sketchdraw expr p =
   do_sketchdraw(p)
enddef;

def do_sketchdraw(expr p) text t =
  if (path p) :
      for i = 1 upto max(1,sketch_passes) :
        normaldraw p 
                   sketchrandomized sketch_amount 
                   withtransparency ("multiply", 1/max(1,sketch_passes))
                   t ;
      endfor;
  else :
      normaldraw p t;
  fi
enddef;

%D The macro \type{sketchfill} randomizes the path before filling it.
def sketchfill expr p =
  do_sketchfill(p)
enddef ;

def do_sketchfill(expr p) text t =
  if (path p) :
      for i = 1 upto max(1,sketch_passes) :
        normalfill p 
                   randomized sketch_amount 
                   withtransparency ("multiply", 1/max(1,sketch_passes))
                   t ;
      endfor;
  else :
      normalfill p t;
  fi
enddef;

endinput;

% Modified example from
% http://tex.loria.fr/prod-graph/zoonekynd/metapost/metapost.html

beginfig(1)
  pair A,B,C,O;
  A=(0,0); B=(3cm,0); C=(1cm,2cm);

  O - 1/2[B,C] = whatever * (B-C) rotated 90;
  O - 1/2[A,B] = whatever * (A-B) rotated 90;

  sketchypaths;
  sketch_amount := 5bp;
  draw A--B--C--cycle;

  draw O withpen pencircle scaled 4bp;

  sketch_amount := 2bp;
  draw fullcircle scaled 2abs(O-A) shifted O;
endfig

[-- Attachment #5: Type: text/plain, Size: 493 bytes --]

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

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

* Re: Hand Style Sketching in Metapost
  2021-05-20 19:05 ` Aditya Mahajan
@ 2021-05-21 19:46   ` Jeroen
  0 siblings, 0 replies; 3+ messages in thread
From: Jeroen @ 2021-05-21 19:46 UTC (permalink / raw)
  To: mailing list for ConTeXt users


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

I have updated LMTX and indeed seems to be working now

Thanks

Op do 20 mei 2021 om 21:05 schreef Aditya Mahajan <adityam@umich.edu>:

> On Thu, 20 May 2021, Jeroen wrote:
>
> > I have the following working example with hatching. This works fine, but
> > when I uncomment the sketching commands, no figure is rendered. Is the
> > mp-sketch macro still working?
>
> Seems to be working here with LMTX ver. 2021.04.29. See attached.
>
>
> Aditya___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to
> the Wiki!
>
> maillist : ntg-context@ntg.nl /
> http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
>
> ___________________________________________________________________________________
>

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

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

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

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

end of thread, other threads:[~2021-05-21 19:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-20 18:58 Hand Style Sketching in Metapost Jeroen
2021-05-20 19:05 ` Aditya Mahajan
2021-05-21 19:46   ` Jeroen

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).