aUCBLogo Demos and Tests / linetest


to linetest
   
cs ht setScreenColor 0 
;   norefresh
   
setUpdateGraph false
   
n=int 200*2200/mips
   
x=Array n
   
ox=Array n
   
v=Array n
   
c=Array n
   
repeat n
   
[   x.repcount=List 400*(rnd-0.5400*(rnd-0.5)
      
v.repcount=List 5*(rnd-0.55*(rnd-0.5)
      
c.repcount=hsb 360*repcount/1 1
   
]
   
ox=x+0   ; to create the same structure as in x, so that we can use xcopy and x+=v
   
i=0
   
spur=false
   
pr [SPACE toggles cleaning]
   
t=0
   
forever
   
[;   t0=timefine
      
if key? 
      
[   ch=readchar
         
if ch==char 27 [stop]
         
if ch=="\  [spur=not spur]
      
]
      
xcopy "ox x      ; copy only the values (no new nodes are made)
      
x+=v         ; dito
      
repeat n
      
[   if (maxnorm x.repcount) > 298
         
[   if (abs first x.repcount) > 298
            
[   _setFirst v.repcount  -first v.repcount
            
]
            
if (abs first bf x.repcount) > 298
            
[   _setFirst bf v.repcount  -last v.repcount
            
]
         
]
      
]
      
if not spur [clean]
      
line x c
      
updateGraph
      
gc
   
;   t = (i*t + timefine-t0)/(i+1)
   ;   ct (pr 1/t "frames/sec)
   ;   i+=1
   
]
end