-------------------------

to main ; Antif_a by Olga
3d_frame
sphc -100 -85 30 3 draw 200 3
end

to draw :size :level
repeat 3[side :size :level rt 120]
end

to side :size :level
if :level<1[fd :size stop]
side :size/3 :level-1 rt  60
side :size/3 :level-1 lt 120
side :size/3 :level-1 rt  60
side :size/3 :level-1
end

to procs
ed[main draw side procs]
end
-------------------------

to main ; Arrowh_a by Olga
3d_frame
setpc 6 do 200 6
end

to do :size :level
sp -100 -82
seth ifelse 0=remainder :level 2 [90][30]
draw :size :level 60
end

to draw :size :level :dir
if :level<1[fd :size stop]
draw :size/2 :level-1 -:dir rt :dir
draw :size/2 :level-1  :dir rt :dir
draw :size/2 :level-1 -:dir
end

to procs
ed[main do draw procs]
end
-------------------------

to main ; c_sqrs_a by Olga
3d_frame
sphc -32 -32 0 6 draw 4 64 5
end

to draw :sides :size :level
if :level<1[stop]
repeat :sides[shape :size rt 360/:sides]
pu fill_it pd
end

to shape :size
fd .75*:size rt 180
draw :sides :size/2 :level-1
rt 180 fd .25*:size
end

to fill_it
rt 90-180/:sides fd :size/2
setfc :level fill
bk :size/2 lt 90-180/:sides
end

to procs
edit [main draw shape fill_it procs]
end
-------------------------

to main ; Sierp1_a by Olga
3d_frame
setpc 6 do 196 4
end

to do :range :level
pu setxy -:range*/2 .5*size :range :level pd
draw size :range :level :level
end

to draw :size :level
a :size :level
seth  90 fd :size b :size :level
seth 180 fd :size c :size :level
seth -90 fd :size d :size :level
seth 0 fd :size
end

to size :range :level
if :level=0 [op :range]
if :level=1 [op :range/5]
op :range/(13+16*((power 2 :level-2)-1))
end

to a :size :level
if :level<1[stop]
a :size :level-1
seth 90 fd :size b :size :level-1
seth 0 fd :size rt 90 fd :size
d :size :level-1
seth  0 fd :size a :size :level-1
end

to b :size :level
if :level<1[stop]
b :size :level-1
seth 180 fd :size c :size :level-1
seth  90 fd :size rt 90 fd :size
a :size :level-1
seth  90 fd :size b :size :level-1
end

to c :size :level
if :level<1[stop]
c :size :level-1
seth -90 fd :size d :size :level-1
seth 180 fd :size rt 90 fd :size
b :size :level-1
seth 180 fd :size c :size :level-1
end

to d :size :level
if :level<1[stop]
d :size :level-1
seth 0 fd :size
a :size :level-1
seth -90 fd :size rt 90 fd :size
c :size :level-1
seth -90 fd :size d :size :level-1
end

to procs
ed[main do draw size a b c d procs]
end
-------------------------

to main ; Sierp2_a by Olga
3d_frame
setpc 6 do 198 4
end

to do :range :level
pu setxy -:range*/2 .5*size :range :level pd
draw size :range :level :level
end

to draw :size :level
a :size :level
seth  90 fd :size b :size :level
seth 180 fd :size c :size :level
seth -90 fd :size d :size :level
seth 0 fd :size
end

to size :range :level
if :level=0 [op :range]
op :range/((power 2 :level+1)-1+(sqrt 2)*((power 2 :level)-1))
end

to a :size :level
if :level<1 [stop]
a :size :level-1
seth 90 fd :size b :size :level-1
seth 45 fd :size d :size :level-1
seth  0 fd :size a :size :level-1
end

to b :size :level
if :level<1 [stop]
b :size :level-1
seth 180 fd :size c :size :level-1
seth 135 fd :size a :size :level-1
seth  90 fd :size b :size :level-1
end

to c :size :level
if :level<1 [stop]
c :size :level-1
seth  -90 fd :size d :size :level-1
seth -135 fd :size b :size :level-1
seth  180 fd :size c :size :level-1
end

to d :size :level
if :level<1 [stop]
d :size :level-1
seth   0 fd :size a :size :level-1
seth -45 fd :size c :size :level-1
seth -90 fd :size d :size :level-1
end

to procs
ed[main do draw size a b c d procs]
end
-------------------------

to main ; Spfill_a by Olga
3d_frame
sphc -96 -94 45 3 draw 136 4 90
end

to draw :size :level :dir
if :level<1[fd :size rt :dir fd :size stop]
draw :size/2 :level-1 -:dir rt :dir
draw :size/2 :level-1  :dir lt :dir
draw :size/2 :level-1  :dir rt :dir
draw :size/2 :level-1 -:dir
end

to procs
ed[main draw procs]
end
-------------------------

to main ; Star_a by Olga
3d_frame
setpc 6 do 190 3
end

to do :size :level
sph -:size*sin 18 -88 -18
repeat 5[fd :size*(gr-1) rt 72]
seth 18 shape :size :level
end

to shape :size :level
if :level<1[stop]
fd :size/(1+gr) rt 36
shape :size/(1+gr) :level-1
lt 36 fd gr*:size/(1+gr) rt 144
repeat 4[fd :size rt 144]
end

to gr ; Golden Ratio
op(1+sqrt 5)/2
end

to procs
ed[main do shape gr procs]
end
-------------------------

to main ; Sqrs_a by Olga
3d_frame
sphc -80 -80 0 4 do 160 .46 4 4
end

to do :a :factor :n :level
if :level<1[stop]
repeat :n[do :factor*:a :factor :n :level-1
         fd :a rt 360/:n ]
end

to procs
ed[main do procs]
end
-------------------------

to main ; Hexa_a by Olga
3d_frame
sphc -81/2 -70 -30 4 do 81 .33 6 4
end

to do :a :factor :n :level
if :level<1 [stop]
repeat :n[do :factor*:a :factor :n :level-1
         fd :a rt 360/:n ]
end

to procs
ed[main do procs]
end
-------------------------

to main ; Carpet_a by Olga
3d_frame
sphc -41 -41 0 3 do 81 3
end

to do :size :level
repeat 4[shape :size :level rt 90]
end

to shape :size :level
if :level<1[fd :size stop]
shape :size/3 :level-1 lt 90
shape :size/3 :level-1 rt 90
shape :size/3 :level-1 rt 90
shape :size/3 :level-1
shape :size/3 :level-1 rt 90
shape :size/3 :level-1 rt 90
shape :size/3 :level-1 rt 90
pu fd :size/3 pd
shape :size/3 :level-1
end

to procs
ed[main do shape procs]
end
-------------------------

to main ; Octos_a by Olga
3d_frame
sphc -35 -13 0 3 do 27 3
end

to do :size :level
if :level<1[stop]
repeat 8[shape :size :level rt 180 fd :size/3 rt 360/8]
end

to shape :size :level
fd 2*:size/3
rt 180
do :size/3 :level-1
end

to procs
ed[main do shape procs]
end
-------------------------

to main ; Cross_a by Olga
3d_frame
sphc -22 -22 0 3 do 45 3
end

to do :size :level
repeat 4[shape :size :level rt 90]
end

to shape :size :level
if :level<1[fd :size stop]
shape :size/3 :level-1 lt 90
shape :size/3 :level-1 lt 90
shape :size/3 :level-1 rt 90
shape :size/3 :level-1 rt 90
shape :size/3 :level-1 lt 90
shape :size/3 :level-1 rt 90
shape :size/3 :level-1 rt 90
shape :size/3 :level-1 lt 90
shape :size/3 :level-1 rt 90
shape :size/3 :level-1 rt 90
shape :size/3 :level-1 lt 90
shape :size/3 :level-1 lt 90
shape :size/3 :level-1
end

to procs
ed[main do shape procs]
end
-------------------------