aUCBLogo Demos and Tests / polyfilltest


to polyfilltest
   
aa 6 20 300
end

to aa :n :size :radius
   
; :n  number of sides of polygon
   ; :size side length of polygon
   ; :radius radius of circle
   
white=rgb 1 1 1
   
cs pu ht setpc 0
   
local[theta phi p_radius]
   
disls
   
setps [2 2]
   
make "theta 360/:n
   
make "phi (90-:theta/2)
   
make "p_radius :size/(2*cos :phi)
   
pd circle radius pu
   
rt 180-:phi fd :p_radius lt 180-:phi
   
tile 1
   
ifelse Key? 
   
[   ignore readChar print [Stopped.]
   
]
   
[   print [Finished.]
   
]
end

to poly :dir_
   
local "p
   
pd
   
(repeat :n
   
[fd :size lt :dir_*:theta])
   
pu
   
setfc ifelse :dir_<0[2][4]      ;problem with color value;  replace with rgb values?
   
make "p list pos heading
   
lt :dir_*:phi fd :p_radius (fill FILL_SMALL)
;   updateGraph
   
setpos first :p seth last :p
end

to probe? :dir_
   
local [p c]
   
make "p list pos heading
   
lt :dir_*:phi fd :p_radius
   
make "c  (and  pixel==white :radius>norm pos)  ;problem with color value
   
setpos first :p seth last :p
   
op :c
end

to tile :dir_
   
ifelse probe? :dir_ [poly :dir_][stop]
   
repeat :n
   
[   tile -1*:dir_
      
fd :size lt :dir_*:theta
      
if Key? [stop]
   
]
end