------------------------- 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 -------------------------