[NTG-context] How to define an array of pens

Otared Kavian otared at gmail.com
Mon Jun 22 09:17:31 CEST 2020


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


More information about the ntg-context mailing list