Re: [NTG-context] Drawing oriented paths in MetaFun
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
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
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
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
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