----------------------------- to main ; Fern by Bill Beaumont with thanks to Bill Kerr 3d_frame sphc -30 -94 0 2 draw 305 end to draw :size if :size<5[stop] fd :size/25 ; trunk lt 80 draw :size*.3 ; left branch rt 82 fd :size/25 rt 80 draw :size*.3 ; rite branch lt 78 draw :size*.9 ; spine lt 2 bk :size/25 lt 2 bk :size/25 end to procs ed[main draw procs] end ----------------------- to main ; Tree 3d_frame sp 0 -45 do 75 4 bk 40 end to do :size :level if :level<1[setpc 4 label "* setpc 2 stop] lt 25 fd :size do .5*:size :level-1 bk :size ; left branch rt 20 fd .6*:size do .6*:size :level-1 bk .6*:size ; scnd branch rt 25 fd .5*:size do .6*:size :level-1 bk .5*:size ; thrd branch rt 25 fd .5*:size do .6*:size :level-1 bk .5*:size ; rite branch lt 45 end to procs ed[main do procs] end --------------------- to main ; Stars 3d_frame sph 18 -30 -15 draw 25 4 end to draw :size :level if :level<1[stop] repeat 6[shape] end to shape setpc 7-:level fd :size rt 90 fd :size rt 30 draw :size/2 :level-1 lt 180 end to procs ed[main draw shape procs] end ------------------------ to main ; Peano 3d_frame sphc 92 -92 0 6 draw 6 90 5 end to draw :size :ang :level if :level<1[stop] lt :ang draw :size -:ang :level-1 fd :size rt :ang draw :size :ang :level-1 fd :size draw :size :ang :level-1 rt :ang fd :size draw :size -:ang :level-1 lt :ang end to procs ed[main draw procs] end --------------------- to main ; Dragons 3d_frame dragons end to dragons for[i 1 4][ sph 0 0 :i*90 setpc :i dragon 9 90 4] end to dragon :level :turn :size if :level<1[fd :size stop] dragon :level-1 90 :size rt :turn dragon :level-1 -90 :size end to procs ed[main dragons dragon procs] end ----------------------------- to main ; Bush 3d_frame sp -20 -85 bush 60 11 end to bush :size :level if :level<1[stop] setpc 1+random 7 fd :size rt 75 bush :size/1.5 :level-1 lt 90 bush :size/1.5 :level-1 rt 15 bk :size end to procs ed[main bush procs] end ------------------------- to main ; Tris 3d_frame sphc -98 -86 30 15 do 195 6 end to do :size :level if :level<1[stop] repeat 3[shape rt 120] fill_it end to shape do :size/2 :level-1 fd :size end to fill_it setfc 7-:level rt 30 pu fd .6*:size fill bk .6*:size pd lt 30 end to procs ed[main do shape fill_it procs] end ------------------------- to main ; Disks 3d_frame sphc -19 -11 0 6 do 22 3 end to do :size :level if :level<1[stop] repeat 6[draw rt 60] end to draw fd :size rt 60 fd :size bk :size arch lt 60 rt 180 do :size :level-1 rt 180 end to arch rt 180 setpc 4 arc 121 3*:size/4 arc 121 :size/4 lt 180 setpc 6 fill_it end to fill_it setfc heading+1 pu rt 60 fd :size/2 fill bk :size/2 lt 60 pd end to procs ed[main do draw arch fill_it procs] end -------------------- to main ; Chess by Yehoshua Yelin 3d_frame sphc -80 -80 0 4 chess 160 4 end to chess :size :level if :level<1[stop] repeat 4[draw] fill_it end to draw fd :size rt 90 chess :size/2 :level-1 end to fill_it setfc ifelse memberp heading[0 180][1][6] pu rt 45 fd 5 fill bk 5 lt 45 pd end to procs ed[main chess draw fill_it procs] end -------------------- to main ; GingerMan 3d_frame pu draw 0 -.9 end to draw :x :y setxy :x+8 :y+8 setpixel 4 draw 17-:y+abs :x :x end to procs ed[main draw procs] end -------------------- to main ; Lattice 3d_frame sphc 6 14 0 [130 130 130] draw 19 9 3 sphc 7 14 0 [170 170 170] draw 19 9 3 sphc 8 14 0 [255 255 255] draw 19 9 3 end to draw :long :wide :count repeat 6[shape :long :wide :count rt 60] end to shape :long :wide :count if :count<1[stop] repeat 2[fd :long rt 120 fd :wide rt 60] lt 120 draw :long :wide :count-1 rt 120 fd :wide lt 120 fd :long end to procs ed[main draw shape procs] end -------------------- to main ; Lasvegas 3d_frame sphc -7 -20 0 3 draw 10 4 end to draw :size :level if :level<1[stop] repeat 3[shape rt 120] fill_it end to shape fd :size lt 60 fd :size rt 60 fd :size rt 180 draw :size :level-1 rt 180 draw :size :level-1 end to fill_it setfc 4 pu rt 22 fd 4 fill bk 4 lt 22 pd end to procs ed[main draw shape fill_it procs] end -------------------- to main ; Sixes 3d_frame sph 48 -83 -90 draw 96 4 end to draw :size :level if :level<1[stop] repeat 3[shape rt 60] fill_it end to shape pu rt 60 fd 4 lt 60 pd draw :size/2-3 :level-1 setpc 7 pu rt 60 bk 4 lt 60 pd fd :size rt 60 fd :size end to fill_it setfc 7-:level pu rt 60 fd 2 fill bk 2 lt 60 pd end to procs ed[main draw shape fill_it procs] end -------------------- to main ; Sqr 3d_frame sp -88 -88 repeat 4[draw 0 lt 90] end to draw :size if :size>86[move stop] move pu rt 90 fd 4 lt 90 pd draw :size+4 pu rt 90 fd 4 lt 90 pd move end to move setpc 1+remainder :size 15 fd :size bk :size end to procs ed[main draw move procs] end -------------------- to main ; Triangs 3d_frame sphc 0 -84 -30 14 do 128 5 end to do :size :level if :level<1[stop] repeat 3[shape rt 120] fill_it end to shape fd .75*:size rt 180 do .5*:size :level-1 rt 180 fd .25*:size end to fill_it pu rt 30 fd :size/2 setfc 3+2*:level fill bk :size/2 lt 30 pd end to procs ed[main do shape fill_it procs] end -------------------- to main ; Grill 3d_frame setpensize[3 3]setpc 1 do 21 4 setpensize[1 1]setpc 3 do 21 4 do 21 4 end to do :size :level if :level<1[stop] repeat 4[draw rt 90] end to draw arc2 90 :size lt 90 do :size :level-1 rt 180 arc2 90 :size lt 90 end to procs ed[main do draw procs] end -------------------- to main ; Circles 3d_frame sph -58 19 18.6 draw 60 4 end to draw :size :level if :level=0[stop] repeat 4[shape rt 90] end to shape setpensize se :level :level setpc 7-:level arc2 90 :size lt 90 draw :size/2 :level-1 end to procs ed[main draw shape procs] end -------------------- to main ; Penrose by Mike Sandy setpc 1 pu draw 50 4 end to draw :size :level localmake "ang 36 localmake "tau (1+sqrt 5)/2 bk :size*:tau rt 2*:ang ;small :size :level ;large :size :level pent :size :level end to pent :l :n if :n=0 [pu stop] ;; draw central pattern repeat 5[lt :ang large :l :n rt :ang fd :l lt :ang fd :l lt :ang] end to large :l :n if :n=0 [pu stop] if :n=1 [pd] fd :l lt 2*:ang np lt :ang small :l/:tau :n-1 rp fd :l lt 3*:ang np lt :ang large :l/:tau :n-1 rt 2*:ang large :l/:tau :n-1 rp fd :l np small :l/:tau :n-1 rt :ang bk :l/:tau lt :ang large :l/:tau :n-1 rp lt 2*:ang fd :l lt 3*:ang pu if :n=1 [np lt 20 fd 5 setfc 4 fill rp] end to small :l :n if :n=0 [pu stop] if :n=1 [pd] np rt :ang large :l/:tau :n-1 np lt 3*:ang fd :l/:tau rt 180 small :l/:tau :n-1 rt 4*:ang small :l/:tau :n-1 rp lt 4*:ang large :l/:tau :n-1 rp fd :l lt 4*:ang fd :l lt :ang fd :l lt 4*:ang fd :l lt :ang pu if :n=1 [np lt 20 fd 5 setfc 2 fill rp] end to np make "penf 0 localmake "coord.posn (list xcor ycor heading) ifelse pendownp [make "coord.posn fput 1 :coord.posn]~ [make "coord.posn fput 0 :coord.posn] push "coord.stack :coord.posn end to rp pu localmake "coord.posn pop "coord.stack make "penf first :coord.posn make "coord.posn butfirst :coord.posn setpos butlast :coord.posn setheading last :coord.posn if :penf=1 [pd] end Make "coord.stack[] -------------------- to main ; et_mask 3d_frame pu draw 0 -.9 end to draw :x :y setxy :x+8 :y+8 setpixel distance[0 0] draw 17-:y-abs :x :x end to procs ed[main draw procs] end -------------------- to main ; Fence 3d_frame setpensize[3 3] setpc 4 draw 10 3 setpensize[1 1] setpc 7 draw 10 3 erall end to draw :size :level if :level<1[stop] repeat 3[lt 60 shape rt 180] end to shape fd :size lt 60 fd :size rt 60 fd :size lt 60 fd :size draw :size :level-1 ; recursion bk :size rt 120 fd :size rt 60 fd :size lt 60 fd :size draw :size :level-1 ; recursion bk :size lt 60 bk :size rt 60 bk :size lt 60 bk :size end to procs ed[main draw shape procs] end --------------------