aUCBLogo Demos and Tests / fractal_tiling


to fractal_tiling
 
ct cs ht setpensize 0.3
 
updategraph 
 
setFillTolerance 0.3
; disableLineSmooth 
 ;setfc rgb 1 1 0
 
setpc rgb 0 0 0
 
backc=rgb 1 1 1 
 
let[[size 200]
     
[(sqrt (4-2*sqrt 2))/2]
      
[n0 10]]
 
pu bk :size/2
 
localmake "k0 1
 
tile n0  :size (list (list pos Heading))
 
make "k0 -1
 
home  pu bk :size/2
 
tile n0  :size (list (list pos Heading))
end
 
to tile :n :size :list1 [:k :k0][:list2 []]
 
if :n==[stop]
 
setfc rgb n/n0*0.95  0
 
if empty? :list1[(tile :n-:size/sqrt 2  :list2 0-:k [] ) stop]
 
;(show "list1 :list1)
 
local [posn posn1make "posn first :list1
 
pu setpos first :posn seth last :posn
 
;comment[ 
 
make "posn1 list pos heading
   
rt :k*22.5 fd :size*:f
   
if or not pixel == rgb 1 1 1 (signum xcor) == 0-:k0
   
[setpos first :posn1 seth last :posn1
  
(tile :n :size bf :list1 :k :list2 stop]
 
setpos first :posn1 seth last :posn1
  
;]
; Tesselation
; [ 
   
pd fd :size rt :k*135
   
make "list2  fput list pos heading :list2
   
fd :size/sqrt rt :k*90
   
make "list2  fput list pos heading :list2
   
fd :size/sqrt rt :k*135
; ]
 
pu
 
rt :k*22.5 fd :size*:f  
; setfc HSB 360*:n/10 1 1
; setpc backc
; fill
; (fill FILL_SURFACE) 
; (fill FILL_SMALL)
; (fill FILL_SMALL_SURFACE)
 
(fill FILL_SMALL_TOLERANT) 
; (fill FILL_SMALL_SURFACE_TOLERANT)
 ;setpc 0 
; updategraph 
 
(tile :n :size bf :list1 :k :list2 )
end