Re: [NTG-context] Drawing oriented paths in MetaFun

2005-11-16 Thread Hans Hagen

Giuseppe Bilotta wrote:


Wednesday, November 16, 2005 Giuseppe Bilotta wrote:

 


Does MetaFun provide some macro to draw oriented paths? I
would like it to basically add a small arrow *in the middle*
of the path? Such a macro
   



 


draworiented somepath somespecs ;
   



 


would have to act like
   



 


drawarrow firsthalf(somepath) somespecs ;
draw secondhalf(somepath) somespecs ;
   



 


Is it available already, or should I roll my own?
   




Hm. I came up with

def draworiented expr c =
 path _c_ ; _c_ := c ;
 do_draworiented
enddef ;

def do_draworiented text t =
 draw _c_ t ;
 drawarrow subpath(0, length(_c_)/2) of _c_ ;
enddef;

which works, although I have to do

draworiented (reverse p1)

Is there an easy way to have it work with

draworiented reverse p1 ?

 

add another step (do_do_) , first pick up 'reverse p1' as expression, 
save that in a path variable, and then pick up the text


Hans

___
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context


Re: [NTG-context] Drawing oriented paths in MetaFun

2005-11-16 Thread Hans Hagen

Giuseppe Bilotta wrote:


Does MetaFun provide some macro to draw oriented paths? I
would like it to basically add a small arrow *in the middle*
of the path? Such a macro

draworiented somepath somespecs ;

would have to act like

drawarrow firsthalf(somepath) somespecs ;
draw secondhalf(somepath) somespecs ;

Is it available already, or should I roll my own?

 


it's there; watch out, i just added a scaling option

\starttext

\setupcolors[state=start]

\startMPpage

vardef arrowheadonpath (expr p, s) =
 save autoarrows ; boolean autoarrows ; autoarrows := true ;
 set_ahlength(scaled ahfactor) ; % added
 arrowhead p if s<1 : cutafter (point (s*arclength(p)+.5ahlength) on p) fi
enddef ;

path p ; p := (0,0)--(10cm,10cm) ;

draw p withcolor red ;
ahfactor := 5 ; % default is 2.5
fill arrowheadonpath(p,.5) withcolor blue ; % try .25

currentpicture := currentpicture xsized (10cm) ;
\stopMPpage

\stoptext

___
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context


Re[2]: [NTG-context] Drawing oriented paths in MetaFun

2005-11-16 Thread Giuseppe Bilotta
Wednesday, November 16, 2005 Giuseppe Bilotta wrote:

> Wednesday, November 16, 2005 Giuseppe Bilotta wrote:

>> Does MetaFun provide some macro to draw oriented paths? I
>> would like it to basically add a small arrow *in the middle*
>> of the path? Such a macro

>> draworiented somepath somespecs ;

>> would have to act like

>> drawarrow firsthalf(somepath) somespecs ;
>> draw secondhalf(somepath) somespecs ;

>> Is it available already, or should I roll my own?


> Hm. I came up with

> def draworiented expr c =
>   path _c_ ; _c_ := c ;
>   do_draworiented
> enddef ;

> def do_draworiented text t =
>   draw _c_ t ;
>   drawarrow subpath(0, length(_c_)/2) of _c_ ;
> enddef;
 
> which works, although I have to do

> draworiented (reverse p1)

> Is there an easy way to have it work with

> draworiented reverse p1 ?


Oh sorry it works ... however, it traces half of the curve
twice. So I came up with the next:

def draworiented expr c =
  path _c_ ; _c_ := c ;
  do_draworiented
enddef ;

def do_draworiented text t =
  drawarrow subpath(0, length(_c_)/2) of _c_ t ;
  draw subpath(length(_c_)/2, length(_c_)) of _c_ t ;
enddef;
 
This still isn't perfect, but it works. It needs a little
tuning so that the arrow is more centered, and of course it
could be improved to put the arrow at any arbitrary point on
the path.

-- 
Giuseppe "Oblomov" Bilotta

___
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context


Re: [NTG-context] Drawing oriented paths in MetaFun

2005-11-16 Thread Giuseppe Bilotta
Wednesday, November 16, 2005 Giuseppe Bilotta wrote:

> Does MetaFun provide some macro to draw oriented paths? I
> would like it to basically add a small arrow *in the middle*
> of the path? Such a macro

> draworiented somepath somespecs ;

> would have to act like

> drawarrow firsthalf(somepath) somespecs ;
> draw secondhalf(somepath) somespecs ;

> Is it available already, or should I roll my own?


Hm. I came up with

def draworiented expr c =
  path _c_ ; _c_ := c ;
  do_draworiented
enddef ;

def do_draworiented text t =
  draw _c_ t ;
  drawarrow subpath(0, length(_c_)/2) of _c_ ;
enddef;
 
which works, although I have to do

draworiented (reverse p1)

Is there an easy way to have it work with

draworiented reverse p1 ?

-- 
Giuseppe "Oblomov" Bilotta

___
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context


[NTG-context] Drawing oriented paths in MetaFun

2005-11-16 Thread Giuseppe Bilotta
Does MetaFun provide some macro to draw oriented paths? I
would like it to basically add a small arrow *in the middle*
of the path? Such a macro

draworiented somepath somespecs ;

would have to act like

drawarrow firsthalf(somepath) somespecs ;
draw secondhalf(somepath) somespecs ;

Is it available already, or should I roll my own?

-- 
Giuseppe "Oblomov" Bilotta

___
ntg-context mailing list
ntg-context@ntg.nl
http://www.ntg.nl/mailman/listinfo/ntg-context