Re: [NTG-context] Code that run in Metapost but not in starMPcode enviroment

2015-02-01 Thread Hans Hagen

On 2/1/2015 3:31 PM, Akira Kakuto wrote:

Interestingly it seems to work in mkii, probably because
mkii calls external metafun:


Sorry,  I didn't notice explanation by Hans.


The problem with variables in metapost is that they are global by 
default (unless 'save'd in a group or vardef). This means that one can 
best explicitly declare variables that are used. Of course one can also 
use a dedicated instance.


Hans

-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
 | 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 / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___

Re: [NTG-context] Code that run in Metapost but not in starMPcode enviroment

2015-02-01 Thread Akira Kakuto

Interestingly it seems to work in mkii, probably because
mkii calls external metafun:


Sorry,  I didn't notice explanation by Hans.

Best,
Akira

___
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___

[NTG-context] Code that run in Metapost but not in starMPcode enviroment

2015-02-01 Thread Akira Kakuto

What is wrong with this code?


Interestingly it seems to work in mkii, probably because
mkii calls external metafun:

context --pdftex --passon=--shell-escape test.tex

test.pdf is attached.

Best,
Akira


test.pdf
Description: Adobe PDF document
___
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___

Re: [NTG-context] Code that run in Metapost but not in starMPcode enviroment

2015-02-01 Thread Hans Hagen

On 2/1/2015 12:29 PM, DesdeChaves wrote:


I'm trying to draw some random arrows using Metapost. For that I use a
piece of code from fpast that in found at stackexchange


Unfortunately this code does not work in context (request for a solution
)
because the freelabel() function. If I disable it the result is the
expected.
What is wrong with this code?


\starttext

\startMPcode
numeric u, nb_vectors, wd;
u := 1cm; % unit length
nb_vectors := 20; wd = .5;
boolean intersect; pair random_origin; color random_color; path
candidate, random_vector[];
%
vardef bb(expr p) =
   save orig, extr; pair orig, extr; orig = point 0 of p; extr = point 1
of p;
   pair v,w; v = wd*unitvector(extr-orig)*u; w = v rotated 90;
   (orig - v + w) -- (extr + v + w) -- (extr + v - w) -- (orig - v - w)
-- cycle
enddef;
%

   pickup pencircle scaled 2bp;


  numeric i ;
  i = 1 ;


   i = 1;


or

 i := 1 ; % never assume variable is not set global (such is mp)


   forever:
 exitunless (i <=  nb_vectors);
 intersect := false;
 random_length := u*(2+uniformdeviate(1));
 random_angle := uniformdeviate(359);
 random_origin := u*(uniformdeviate(wd*nb_vectors),
uniformdeviate(wd*nb_vectors));
 random_color := (uniformdeviate(1), uniformdeviate(1),
uniformdeviate(1));
 candidate := random_origin -- (random_origin +
random_length*dir(random_angle));
 j := 1;
 forever:
   exitif (j = i) or (intersect = true);
   if bb(random_vector[j]) intersectiontimes bb(candidate) <>  (-1, -1):
 intersect := true;
   fi;
   j := j+1;
 endfor;
 if intersect = false:
   random_vector[i] = candidate;
   drawarrow candidate withcolor random_color;
   freelabel(btex $v$ etex, point .5 of candidate, point .5 of
candidate + dir (random_angle + 90));
   i := i+1;
 fi;
   endfor;
\stopMPcode


\stoptext


___
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___




--

-
  Hans Hagen | PRAGMA ADE
  Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com
 | 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 / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___

[NTG-context] Code that run in Metapost but not in starMPcode enviroment

2015-02-01 Thread DesdeChaves
I'm trying to draw some random arrows using Metapost. For that I use a
piece of code from fpast that in found at stackexchange


Unfortunately this code does not work in context (request for a solution
)
because the freelabel() function. If I disable it the result is the
expected.
What is wrong with this code?


\starttext

\startMPcode
numeric u, nb_vectors, wd;
u := 1cm; % unit length
nb_vectors := 20; wd = .5;
boolean intersect; pair random_origin; color random_color; path candidate,
random_vector[];
%
vardef bb(expr p) =
  save orig, extr; pair orig, extr; orig = point 0 of p; extr = point 1 of
p;
  pair v,w; v = wd*unitvector(extr-orig)*u; w = v rotated 90;
  (orig - v + w) -- (extr + v + w) -- (extr + v - w) -- (orig - v - w) --
cycle
enddef;
%

  pickup pencircle scaled 2bp;
  i = 1;
  forever:
exitunless (i <=  nb_vectors);
intersect := false;
random_length := u*(2+uniformdeviate(1));
random_angle := uniformdeviate(359);
random_origin := u*(uniformdeviate(wd*nb_vectors),
uniformdeviate(wd*nb_vectors));
random_color := (uniformdeviate(1), uniformdeviate(1),
uniformdeviate(1));
candidate := random_origin -- (random_origin +
random_length*dir(random_angle));
j := 1;
forever:
  exitif (j = i) or (intersect = true);
  if bb(random_vector[j]) intersectiontimes bb(candidate) <>  (-1, -1):
intersect := true;
  fi;
  j := j+1;
endfor;
if intersect = false:
  random_vector[i] = candidate;
  drawarrow candidate withcolor random_color;
  freelabel(btex $v$ etex, point .5 of candidate, point .5 of candidate
+ dir (random_angle + 90));
  i := i+1;
fi;
  endfor;
\stopMPcode


\stoptext
___
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://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___