You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							590 lines
						
					
					
						
							13 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							590 lines
						
					
					
						
							13 KiB
						
					
					
				
								%!
							 | 
						|
								% vasarely
							 | 
						|
								% Elizabeth D. Zwicky
							 | 
						|
								% zwicky@sgi.com
							 | 
						|
								/vasarelysave save def	% prevent residual side effects
							 | 
						|
								%
							 | 
						|
								% Inspired by Vasarely's experiments with tilting circles and squares
							 | 
						|
								% (for instance "Tlinko" and "Betelgeuse"
							 | 
						|
								
							 | 
						|
								%% circles
							 | 
						|
								/part { circle } def /nnrand false def
							 | 
						|
								%% squares
							 | 
						|
								% /part { ngon } def /nn 4 def /nnrand false def
							 | 
						|
								%% random polygons
							 | 
						|
								% /part { ngon } def /nnrand true def
							 | 
						|
								%% random stars (not my favorite on this program)
							 | 
						|
								% /part { nstar } def /nnrand true def 
							 | 
						|
								
							 | 
						|
								%% tilt the base shape a random amount?
							 | 
						|
								/twist false def
							 | 
						|
								% /twist true def
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/rainbow false def
							 | 
						|
								%% To make rainbows
							 | 
						|
								% /rainbow true def 
							 | 
						|
								%% Set this to 1 to go through a full range of colors
							 | 
						|
								/rainrange .25 def
							 | 
						|
								
							 | 
						|
								% number of different designs per page
							 | 
						|
								/inheight 2 def
							 | 
						|
								/inwidth 2 def
							 | 
						|
								% number of repeats in a design
							 | 
						|
								/xtimes 10 def
							 | 
						|
								/ytimes 16 def
							 | 
						|
								
							 | 
						|
								%% This sets the relationship between the two hues: comptwo is maximum contrast
							 | 
						|
								/colorway {comptwo} def
							 | 
						|
								%% monochrome comptwo harmtwo harmfour freecolor compthree closeharm
							 | 
						|
								%% origcolor
							 | 
						|
								
							 | 
						|
								%% This sets the brightness and saturation of the colors; vivid makes
							 | 
						|
								%% them both bright
							 | 
						|
								/colorfam {vivid} def
							 | 
						|
								%% vivid jewel intense medium pastel free orig contrast
							 | 
						|
								%% medjewel medvivid vivpastel medpastel
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								%% Only experts below this point!
							 | 
						|
								
							 | 
						|
								usertime srand
							 | 
						|
								/seed rand def
							 | 
						|
								
							 | 
						|
								/starcompensate false def
							 | 
						|
								/constroke 1 def
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/circle {
							 | 
						|
								  /radius radius 1.33 mul def
							 | 
						|
								  currentpoint /herey exch def /herex exch def
							 | 
						|
								   herex herey radius 0 360 arc
							 | 
						|
								} def 
							 | 
						|
								
							 | 
						|
								/ngon{ % polygon of n sides, n determined by nn
							 | 
						|
								  nside 2 div radius rmoveto
							 | 
						|
								   nn cvi {
							 | 
						|
								         nside neg 0 rlineto
							 | 
						|
								         360 360 nn div sub neg rotate
							 | 
						|
								       } repeat
							 | 
						|
								  closepath
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/nstar{ % star of n points, n determined by nstarslider
							 | 
						|
								  /radius radius 1.33 mul def
							 | 
						|
								  currentpoint /herey exch def /herex exch def
							 | 
						|
								   0 radius rmoveto
							 | 
						|
								       90 nstarangle 2 div add  neg rotate 
							 | 
						|
									nn cvi {nstarside 0 rlineto
							 | 
						|
									    180 180 nstarangle 2 mul sub sub neg rotate
							 | 
						|
									    nstarside 0 rlineto
							 | 
						|
									    180 180 360 nn div sub nstarangle 2 mul sub sub  rotate
							 | 
						|
									} repeat
							 | 
						|
								        90 nstarangle 2 div add  rotate
							 | 
						|
									closepath
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/nstarangle {180 360 nn div sub 3 div}  def
							 | 
						|
								/nstarside { 
							 | 
						|
								   2 
							 | 
						|
								     radius
							 | 
						|
								        1 
							 | 
						|
								          180 nn div 
							 | 
						|
								          sin 
							 | 
						|
								        div 
							 | 
						|
								     div 
							 | 
						|
								   mul 
							 | 
						|
								   nstarangle sin 
							 | 
						|
								   mul
							 | 
						|
								   180 
							 | 
						|
								     nstarangle 2 mul
							 | 
						|
								   sub 
							 | 
						|
								   sin 
							 | 
						|
								   div 
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/nside { 
							 | 
						|
								   2 
							 | 
						|
								   radius
							 | 
						|
								   360 nn div 2 div tan
							 | 
						|
								   mul
							 | 
						|
								   mul  
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/tan { /alpha exch def
							 | 
						|
								  alpha sin
							 | 
						|
								  1 alpha sin dup mul sub sqrt
							 | 
						|
								  div
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/pastel {
							 | 
						|
								   /backbright  high def
							 | 
						|
								   /backsat medlow def
							 | 
						|
								   /fillbright  high def
							 | 
						|
								   /fillsat medlow def
							 | 
						|
								   /eobright  high def
							 | 
						|
								   /eosat medlow def
							 | 
						|
								   constroke 0 eq {
							 | 
						|
								     /strokebright  high def
							 | 
						|
								     /strokesat medlow def
							 | 
						|
								   }
							 | 
						|
								   {
							 | 
						|
								      /strokebright  low def
							 | 
						|
								      /strokesat  high def
							 | 
						|
								   } ifelse
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/jewel {
							 | 
						|
								   /fillbright  med def
							 | 
						|
								   /fillsat  high def
							 | 
						|
								   /backbright  med def
							 | 
						|
								   /backsat  high def
							 | 
						|
								   /eobright  med def
							 | 
						|
								   /eosat  high def
							 | 
						|
								   constroke 0 eq {
							 | 
						|
								     /strokebright  medlow def
							 | 
						|
								     /strokesat  high def
							 | 
						|
								   }
							 | 
						|
								   {
							 | 
						|
								     /strokebright  high def
							 | 
						|
								     /strokesat  medlow def
							 | 
						|
								  } ifelse
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/vivid {
							 | 
						|
								   /fillsat 1 def
							 | 
						|
								   /fillbright  high def
							 | 
						|
								   /eosat 1 def
							 | 
						|
								  /eobright  high def
							 | 
						|
								   /backsat 1 def
							 | 
						|
								   /backbright  high def
							 | 
						|
								   constroke 0 eq {
							 | 
						|
								     /strokesat 1 def
							 | 
						|
								     /strokebright  high def
							 | 
						|
								   }
							 | 
						|
								   { 
							 | 
						|
								     /strokesat  high def
							 | 
						|
								     /strokebright  medlow def
							 | 
						|
								   } ifelse
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/free {
							 | 
						|
								   /fillsat  anyrand   def
							 | 
						|
								   /fillbright  anyrand def
							 | 
						|
								   /eosat anyrand def
							 | 
						|
								   /eobright anyrand def
							 | 
						|
								   /backsat  anyrand  def
							 | 
						|
								   /backbright  anyrand def
							 | 
						|
								   /strokesat  anyrand def
							 | 
						|
								     /strokebright  anyrand def
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/contrast {
							 | 
						|
								  /sat medhigh def
							 | 
						|
								  /bright rand 2 mod 0 eq {medhigh} {medlow} ifelse def 
							 | 
						|
								  /backsat  sat def
							 | 
						|
								  /backbright  bright def
							 | 
						|
								  /eosat  sat def
							 | 
						|
								  /eobright  1 bright sub def
							 | 
						|
								  /fillsat  sat def
							 | 
						|
								  /fillbright  bright def
							 | 
						|
								  /strokebright rand 2 mod def
							 | 
						|
								  /strokesat  rand 2 mod def
							 | 
						|
								
							 | 
						|
								} def
							 | 
						|
								/medium {
							 | 
						|
								  /backsat  med def
							 | 
						|
								  /backbright  med def
							 | 
						|
								  /eosat  med def
							 | 
						|
								  /eobright  med def
							 | 
						|
								  /fillsat  med def
							 | 
						|
								  /fillbright  med def
							 | 
						|
								  /strokebright med def
							 | 
						|
								  /strokesat  med def
							 | 
						|
								
							 | 
						|
								} def
							 | 
						|
								/intense {
							 | 
						|
								  /backsat  high def
							 | 
						|
								  /backbright  med def
							 | 
						|
								  /eosat  high def
							 | 
						|
								  /eobright  high def
							 | 
						|
								  /fillsat  high def
							 | 
						|
								  /fillbright  med def
							 | 
						|
								  /strokebright high def
							 | 
						|
								  /strokesat  high def
							 | 
						|
								
							 | 
						|
								} def
							 | 
						|
								/orig {
							 | 
						|
								  /backsat  rand 99 mod 55 add 100 div def
							 | 
						|
								  /backbright  rand 99 mod 35 add 100 div def
							 | 
						|
								  /eosat  rand 77 mod 22 add 100 div def
							 | 
						|
								  /eobright  90 rand 75 mod sub 15 add 100 div def
							 | 
						|
								  /fillsat  100 rand 90 mod sub 100 div def
							 | 
						|
								  /fillbright  100 rand 45 mod sub 20 add 100 div def
							 | 
						|
								  /strokebright 100 rand 55 mod sub 100 div def
							 | 
						|
								  /strokesat  100 rand 85 mod sub 100 div def
							 | 
						|
								
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/medjewel {
							 | 
						|
								  /alt rand 2 mod def
							 | 
						|
								  /backsat alt 0 eq {high} { med} ifelse def
							 | 
						|
								  /fillsat alt 0 eq {med} {high} ifelse def
							 | 
						|
								  /eosat alt 0 eq {high} {med} ifelse def
							 | 
						|
								  /backbright med def
							 | 
						|
								  /fillbright med def
							 | 
						|
								  /eobright med def
							 | 
						|
								   constroke 0 eq {
							 | 
						|
								     /strokebright  medlow def
							 | 
						|
								     /strokesat  high def
							 | 
						|
								   }
							 | 
						|
								   {
							 | 
						|
								     /strokebright  high def
							 | 
						|
								     /strokesat  medlow def
							 | 
						|
								  } ifelse
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/medvivid {
							 | 
						|
								  /alt rand 2 mod def
							 | 
						|
								  /backsat alt 0 eq {1} { med} ifelse def
							 | 
						|
								  /fillsat alt 0 eq {med} {1} ifelse def
							 | 
						|
								  /eosat alt 0 eq {1} {med} ifelse def
							 | 
						|
								  /backbright alt 0 eq {high} {med} ifelse def
							 | 
						|
								  /eobright alt 0 eq {high} {med} ifelse def
							 | 
						|
								  /fillbright alt 0 eq {med} {high} ifelse def
							 | 
						|
								   constroke 0 eq {
							 | 
						|
								     /strokesat 1 def
							 | 
						|
								     /strokebright  high def
							 | 
						|
								   }
							 | 
						|
								   { 
							 | 
						|
								     /strokesat  high def
							 | 
						|
								     /strokebright  medlow def
							 | 
						|
								   } ifelse
							 | 
						|
								} def
							 | 
						|
								/vivpastel {
							 | 
						|
								   /backlight rand 2 mod def
							 | 
						|
								   /backsat backlight 0 eq {medlow} {1} ifelse def
							 | 
						|
								   /eosat backlight 0 eq {medlow} {1} ifelse def
							 | 
						|
								   /fillsat backlight 0 eq {1} {medlow} ifelse def
							 | 
						|
								   /fillbright  high def
							 | 
						|
								   /backbright  high def
							 | 
						|
								   /eobright  high def
							 | 
						|
								   constroke 0 eq {
							 | 
						|
								     /strokesat 1 def
							 | 
						|
								     /strokebright  high def
							 | 
						|
								   }
							 | 
						|
								   { 
							 | 
						|
								     /strokesat  high def
							 | 
						|
								     /strokebright  medlow def
							 | 
						|
								   } ifelse
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/medpastel {
							 | 
						|
								   /alt rand 2 mod def
							 | 
						|
								   /backsat alt 0 eq {medlow} {med} ifelse def
							 | 
						|
								   /eosat alt 0 eq {medlow} {med} ifelse def
							 | 
						|
								   /fillsat alt 0 eq {med} {medlow} ifelse def
							 | 
						|
								   /fillbright alt 0 eq { high }  {med} ifelse def
							 | 
						|
								   /backbright alt 0 eq {med} { high } ifelse def
							 | 
						|
								   /eobright alt 0 eq {med} { high } ifelse def
							 | 
						|
								   constroke 0 eq {
							 | 
						|
								     /strokebright  high def
							 | 
						|
								     /strokesat medlow def
							 | 
						|
								   }
							 | 
						|
								   {
							 | 
						|
								      /strokebright  low def
							 | 
						|
								      /strokesat  high def
							 | 
						|
								   } ifelse
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/maxcon {
							 | 
						|
								     rand 2 mod 1 eq {
							 | 
						|
									/backsat 0 def
							 | 
						|
									/backbright 0 def
							 | 
						|
									/eosat 0 def
							 | 
						|
									/eobright 0 def
							 | 
						|
									/fillsat 0 def
							 | 
						|
									/fillbright 1 def
							 | 
						|
									/strokebright 1 def
							 | 
						|
									/strokesat 0 def
							 | 
						|
								     }
							 | 
						|
								     {
							 | 
						|
									/backsat 0 def
							 | 
						|
									/backbright 1 def
							 | 
						|
									/eosat 0 def
							 | 
						|
									/eobright 1 def
							 | 
						|
									/fillsat 0 def
							 | 
						|
									/fillbright 0 def
							 | 
						|
									/strokebright 0 def
							 | 
						|
									/strokesat 0 def
							 | 
						|
								     }
							 | 
						|
								     ifelse
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/monochrome {
							 | 
						|
								   /fillhue hue closevary def
							 | 
						|
								   /strokehue hue closevary def
							 | 
						|
								   /eohue hue closevary def
							 | 
						|
								   /backhue hue def
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/blackandwhite {
							 | 
						|
									/fillhue 1 def
							 | 
						|
									/eohue 0 def
							 | 
						|
									/backhue 0 def
							 | 
						|
									/strokehue 1 def
							 | 
						|
								} def
							 | 
						|
									
							 | 
						|
								
							 | 
						|
								/freecolor {
							 | 
						|
								   /fillhue anyrand def
							 | 
						|
								   /strokehue anyrand def
							 | 
						|
								   /eohue anyrand def
							 | 
						|
								   /backhue anyrand def
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/purple {
							 | 
						|
								  /fillhue rand 15 mod 80 add 100 div def
							 | 
						|
								  /backhue rand 15 mod 80 add 100 div def
							 | 
						|
								  /strokehue rand 15 mod 80 add 100 div def
							 | 
						|
								  /eohue rand 15 mod 80 add 100 div def
							 | 
						|
								  /backhue rand 15 mod 80 add 100 div def
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/comptwo {
							 | 
						|
								  /fillhue hue closevary def
							 | 
						|
								  /strokehue hue .5 add dup 1 gt {1 sub} if def
							 | 
						|
								  /backhue strokehue def
							 | 
						|
								  /eohue strokehue closevary def
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/compthree {
							 | 
						|
								  /backhue hue def
							 | 
						|
								  /strokehue hue 1 3 div add dup 1 gt {1 sub} if closevary  def
							 | 
						|
								  /fillhue strokehue closevary def
							 | 
						|
								  /eohue hue 1 3 div sub dup 1 lt { 1 add} if closevary def
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/origcolor {
							 | 
						|
								  /backhue hue def
							 | 
						|
								  /strokehue 
							 | 
						|
								     hue 1000 mul cvi 3 mod dup 1 eq
							 | 
						|
									          {hue closevary}
							 | 
						|
									          {2 eq
							 | 
						|
								                    {rand 999 mod 1000 div} 
							 | 
						|
								                    {hue .5 add dup 1 gt {1 sub} if }
							 | 
						|
								                    ifelse
							 | 
						|
								                   }
							 | 
						|
										ifelse def
							 | 
						|
								  /fillhue hue 1000 mul cvi 3 mod dup 1 eq 
							 | 
						|
											{hue closevary}
							 | 
						|
								                        {2 eq
							 | 
						|
								  			  {rand 999 mod 1000 div} 
							 | 
						|
								                          {hue .5 add dup 1 gt {1 sub} if }
							 | 
						|
								                         ifelse
							 | 
						|
								                        }
							 | 
						|
										ifelse 
							 | 
						|
								  def
							 | 
						|
								  /eohue hue 1000 mul cvi 2 mod 1 eq 
							 | 
						|
											{hue closevary}
							 | 
						|
											{rand 999 mod 1000 div}
							 | 
						|
										ifelse def
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/harmtwo {
							 | 
						|
								  /fillhue hue closevary def
							 | 
						|
								  /backhue hue def
							 | 
						|
								  /strokehue hue .2 add dup 1 gt {1 sub} if closevary def
							 | 
						|
								  /eohue strokehue closevary def
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/harmfour {
							 | 
						|
								  /fillhue hue closevary def
							 | 
						|
								  /backhue hue .1 add dup 1 gt {1 sub} if def 
							 | 
						|
								  /strokehue hue .2 add dup 1 gt {1 sub} if closevary def
							 | 
						|
								  /eohue hue .1 sub dup 1 lt {1 add} if closevary def
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/closeharm {
							 | 
						|
								  /fillhue hue def
							 | 
						|
								  /backhue hue .05 add dup 1 gt {1 sub} if closevary def 
							 | 
						|
								  /strokehue hue .1 add dup 1 gt {1 sub} if closevary def
							 | 
						|
								  /eohue hue .05 sub dup 0 lt {1 add} if closevary def
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/high {100 rand 25 mod sub 100 div } def
							 | 
						|
								/med { rand 33 mod 33 add 100 div } def
							 | 
						|
								/medhigh {100 rand 50 mod sub 100 div } def
							 | 
						|
								/medlow {rand 50 mod 100 div } def
							 | 
						|
								/low { rand 25 mod  100 div} def
							 | 
						|
								/anyrand { rand 100 mod 100 div } def
							 | 
						|
								/closevary {rand 70 mod rand 100 mod sub 1000 div add} def
							 | 
						|
								
							 | 
						|
								%rainbow 
							 | 
						|
								%  {/colorfill {fillhue 1 1 sethsbcolor fill} def}
							 | 
						|
								  /colorfill {fillhue fillsat fillbright sethsbcolor fill } def
							 | 
						|
								%ifelse
							 | 
						|
								/colorstroke {strokehue strokesat strokebright sethsbcolor stroke } def
							 | 
						|
								/eocolorfill {eohue eosat eobright sethsbcolor eofill } def
							 | 
						|
								/backfill{ backhue backsat backbright sethsbcolor fill } def
							 | 
						|
								
							 | 
						|
								/xstep { xrange xtimes 1 sub div x 1 sub mul } def
							 | 
						|
								/ystep { yrange ytimes 1 sub div y 1 sub mul} def
							 | 
						|
								
							 | 
						|
								/functionarray [
							 | 
						|
								 {sin abs}
							 | 
						|
								 {sin } 
							 | 
						|
								 {cos  }
							 | 
						|
								 {cos abs}
							 | 
						|
								 {sin dup mul  }
							 | 
						|
								 {cos dup mul  }
							 | 
						|
								 {sin abs sqrt }
							 | 
						|
								 {cos abs sqrt }
							 | 
						|
								] def
							 | 
						|
								
							 | 
						|
								/range { /top exch def /bottom exch def /number exch def
							 | 
						|
								% number is between -1 and 1
							 | 
						|
								 /rangesize top bottom sub def
							 | 
						|
								 number 1 add 2 div
							 | 
						|
								 % number is now between 0 and 1
							 | 
						|
								 rangesize mul
							 | 
						|
								 bottom add
							 | 
						|
								 } def
							 | 
						|
								
							 | 
						|
								/drawone {
							 | 
						|
								    /radius 
							 | 
						|
								      width height lt {width 3 div} {height 3 div} ifelse
							 | 
						|
								    def
							 | 
						|
								    seed srand
							 | 
						|
								    0 0 moveto 
							 | 
						|
								    /origmatrix  [ 0 0 0 0 0 0 ] currentmatrix def 
							 | 
						|
								    [ % xstep  function ystep function2 add .4 1.3 range
							 | 
						|
									1
							 | 
						|
								      ystep function xstep function add -.25 .25 range
							 | 
						|
								      ystep function3 xstep function2 add -.5 .5 range
							 | 
						|
								%      xstep  function4 ystep function mul .4 1.3 range
							 | 
						|
									1
							 | 
						|
								     0 
							 | 
						|
								     0
							 | 
						|
								      ]
							 | 
						|
								    concat
							 | 
						|
								    twist {twistdeg rotate} if
							 | 
						|
								    part colorfill
							 | 
						|
								    origmatrix setmatrix
							 | 
						|
								    rainbow
							 | 
						|
								      {/fillhue fillhue rainrange xtimes ytimes mul div add dup 1 gt {1 sub} if def}
							 | 
						|
								    if
							 | 
						|
								
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								/notdrawone {
							 | 
						|
								  seed srand
							 | 
						|
								  twist {/twistdeg rand 360 mod def} if
							 | 
						|
								  nnrand {/nn rand 6 mod 3 add def} if
							 | 
						|
								  /x1 rand width 3 div cvi mod width 8 div add  def
							 | 
						|
								  /y1 rand height 3 div cvi mod height 8 div add def
							 | 
						|
								  rand 3 mod dup 1 eq 
							 | 
						|
								    {pop /x2 rand width 2 div cvi mod def
							 | 
						|
								     /y2 rand height 2 div cvi mod def}
							 | 
						|
								    { 2 eq 
							 | 
						|
								       {/x2 y1 def /y2 x1 def}
							 | 
						|
								       {/x2 y1 width mul height div def /y2 x1 height mul width div def}
							 | 
						|
								      ifelse
							 | 
						|
								    }
							 | 
						|
								  ifelse
							 | 
						|
								  /radius width height gt {width} {height} ifelse  2.5   div def
							 | 
						|
								  /stripe rand width 10 div cvi  mod 2 add def
							 | 
						|
								  starcompensate { /stripe stripe 2 mul def /radius radius 10 nn div  mul def } if
							 | 
						|
								  /i 1 def
							 | 
						|
								  /repeats radius stripe div cvi 1 add def
							 | 
						|
								  /nnincr 1 def
							 | 
						|
								  repeats {
							 | 
						|
								   colorvary {colorfam colorway} if
							 | 
						|
								    /i i 1 add def
							 | 
						|
								    /radius radius stripe sub def
							 | 
						|
								    
							 | 
						|
								  } repeat
							 | 
						|
								} def
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								/page {
							 | 
						|
								 clippath pathbbox /ury exch def /urx exch def /lly exch def /llx exch
							 | 
						|
								def
							 | 
						|
								/pagewidth urx llx sub 36 72 mul min def
							 | 
						|
								/pageheight ury lly sub 36 72 mul min def
							 | 
						|
								0 0 moveto 
							 | 
						|
								 llx lly translate
							 | 
						|
								   /outerwidth
							 | 
						|
								     pagewidth inwidth div
							 | 
						|
								   def
							 | 
						|
								   /outerheight
							 | 
						|
								     pageheight inheight div
							 | 
						|
								   def
							 | 
						|
								   /width
							 | 
						|
								     outerwidth xtimes div
							 | 
						|
								   def
							 | 
						|
								   /height
							 | 
						|
								     outerheight ytimes div
							 | 
						|
								   def
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								 
							 | 
						|
								 /size
							 | 
						|
								   width height gt {width} {height} ifelse
							 | 
						|
								 def
							 | 
						|
								  inwidth {
							 | 
						|
								     inheight {
							 | 
						|
								      
							 | 
						|
								        /seed rand def
							 | 
						|
								        /hue rand 999 mod 1000 div def
							 | 
						|
								        colorway colorfam
							 | 
						|
								        /x 1 def /y 1 def   
							 | 
						|
								    nnrand {/nn rand 6 mod 3 add def} if
							 | 
						|
								    /twistdeg rand 360 mod  def
							 | 
						|
								
							 | 
						|
								  /function functionarray rand functionarray length mod get def
							 | 
						|
								  /function2 functionarray rand functionarray length mod get def
							 | 
						|
								  /function3 functionarray rand functionarray length mod get def
							 | 
						|
								  /function4 functionarray rand functionarray length mod get def
							 | 
						|
								
							 | 
						|
								/xrange [ 90 180 270 360 180 360 ]  rand 6 mod get def
							 | 
						|
								/yrange [ 90 180 270 360 180 360 ] rand 6 mod get  def
							 | 
						|
								            initclip
							 | 
						|
									    newpath
							 | 
						|
								            0 0 moveto
							 | 
						|
								            outerwidth 0 rlineto
							 | 
						|
								            0 outerheight rlineto
							 | 
						|
								            outerwidth neg 0 rlineto
							 | 
						|
									backfill
							 | 
						|
								
							 | 
						|
								        xtimes {
							 | 
						|
								           ytimes{ 
							 | 
						|
									    /y y 1 add def
							 | 
						|
								            width 2 div height 2 div translate
							 | 
						|
								            drawone
							 | 
						|
								            width 2 div neg height 2 div neg translate
							 | 
						|
									    0 height translate
							 | 
						|
								           } repeat
							 | 
						|
								
							 | 
						|
								         /y 1 def
							 | 
						|
								         /x x 1 add def
							 | 
						|
								         width height ytimes mul neg translate
							 | 
						|
								 
							 | 
						|
								        } repeat
							 | 
						|
								        
							 | 
						|
								        width xtimes mul neg  outerheight translate
							 | 
						|
								      } repeat
							 | 
						|
								      outerwidth outerheight inheight mul neg translate
							 | 
						|
								   } repeat
							 | 
						|
								  
							 | 
						|
								 } def
							 | 
						|
									
							 | 
						|
								page
							 | 
						|
								clear cleardictstack
							 | 
						|
								vasarelysave restore
							 | 
						|
								% Per page independence description in the PLRM Section 3.7.3, showpage follows restore
							 | 
						|
								showpage
							 |