Re: [NTG-context] How to define an array of pens
On 22/06/20 01:17, Otared Kavian wrote: for j = -1 step 1 until 1 : MyPens[j] := pencircle scaled 2pt ; % I would like to say here (2+j) pt endfor MyPens[j] := pencircle scaled (2+j)*pt ; pt is just a variable, and one can write 2pt implicitly implying the multiplication, but must explicitly write (2+j)*pt to parse correctly. Alan ___ 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 ___
Re: [NTG-context] How to define an array of pens
Thanks Taco! I added this and Hans' explanations to the wiki: https://wiki.contextgarden.net/variable_color but could not set a better title for that page such as « Variable arrays of colors, pens, paths ». Best regards: Otared > On 22 Jun 2020, at 09:28, Taco Hoekwater wrote: > > > >> On 22 Jun 2020, at 09:17, Otared Kavian wrote: >> >> Hi Hans, >> >> After learning from you how to define an array of colors and paths, I would >> like to know how is it possible to define a variable pen size. >> In the following working example below, I would like to replace >> >> MyPens[j] := pencircle scaled 2pt ; >> >> by something like >> >> MyPens[j] := pencircle scaled (2+j) pt ; > > MyPens[j] := pencircle scaled ((2+j)*pt); > > “pt” is just a multiplier variable in MetaPost. there is an > implied multiplication operation, but that only works in > bare-number cases. That is why you need > > (2+j)*pt > > The outer parentheses are to prevent MetaPost from interpreting > your line as > > (pencircle scaled (2+j)) * pt; > > Best wishes, > Taco > > > ___ > 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 > ___ ___ 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 ___
Re: [NTG-context] How to define an array of pens
> On 22 Jun 2020, at 09:17, Otared Kavian wrote: > > Hi Hans, > > After learning from you how to define an array of colors and paths, I would > like to know how is it possible to define a variable pen size. > In the following working example below, I would like to replace > > MyPens[j] := pencircle scaled 2pt ; > > by something like > > MyPens[j] := pencircle scaled (2+j) pt ; MyPens[j] := pencircle scaled ((2+j)*pt); “pt” is just a multiplier variable in MetaPost. there is an implied multiplication operation, but that only works in bare-number cases. That is why you need (2+j)*pt The outer parentheses are to prevent MetaPost from interpreting your line as (pencircle scaled (2+j)) * pt; Best wishes, Taco ___ 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 ___
[NTG-context] How to define an array of pens
Hi Hans, After learning from you how to define an array of colors and paths, I would like to know how is it possible to define a variable pen size. In the following working example below, I would like to replace MyPens[j] := pencircle scaled 2pt ; by something like MyPens[j] := pencircle scaled (2+j) pt ; but this does not work (neither do (2+j)*pt). Is it possible to specify the pen size according to the value of j, without using a structure like if j == -1 : MyPens[j] := pencircle scaled 1pt ; elseif j == 0 : MyPens[j] := pencircle scaled 2pt ; else : MyPens[j] := pencircle scaled 3pt ; fi (In my real example I have more than three values for j). %% begin example-array.tex \startMPpage string MyColors[] ; path MyPaths [] ; pen MyPens[] ; for j = -1 step 1 until 1 : MyPens[j] := pencircle scaled 2pt ; % I would like to say here (2+j) pt endfor MyPaths[-1] := (-1.5cm,1.5cm) -- (1.5cm,1.5cm) ; MyColors[-1] := "magenta" ; MyPaths[0] := (-2cm,2cm) -- (2cm,-2cm) ; MyColors[0] := "darkyellow" ; MyPaths[1] := fullcircle scaled 3cm ; MyColors[1] := "darkred" ; for j = -1 step 1 until 1 : draw MyPaths[j] withpen MyPens[j] withcolor MyColors[j] ; endfor \stopMPpage %% end example-array.tex Best regards: Otared ___ 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 ___