Эти программы, за исключением рекурсивного дерева, родились в процессе переписки и дискуссий с замечательным и тонким знатоком Лого, преподавателем колледжа из Израиля Иегудой Кацем.
Дерево - широко известный пример рекурсивной графики. Вариант его, рассмотренный здесь, предложен Брайеном Харви в его книге Computer Science Logo Style.
to tree.main ; рекурсивное дерево из книги Брайена Харви. cs ht tree 50 end to tree :size if :size<5 [forward :size back :size stop] forward :size/3 left 30 tree :size*2/3 right 30 forward :size/6 right 25 tree :size/2 left 25 forward :size/3 right 25 tree :size/2 left 25 forward :size/6 back :size end
to tiling.main ;Эта прекрасная программа ;разработана Иегудой Кацем. ;Меняя параметры, можно получить ;совершенно различные узоры localmake "size 12 localmake "level 5 pr[Input number of points and head_angle] pr[Try points=3,4,6 and for each, angle=15,30,45,60,90,120] tiling.do rw rw :level end to tiling.do :points :head_ang :level repeat :points[ if :level<1[stop] fd :size rt 180 tiling.do :points :head_ang :level-1 rt 180 lt 180-(360/:points+:head_ang) fd :size rt 180-:head_ang] end
to rec.star.main ; рекурсивные звезды cs ht print [Input four numbers -] print [sides number, side size, angle, level] do rw rw rw rw end to rec.star.do :sides :size :ang :level if :level<1 [stop] repeat :sides[ rec.star.shape] end to rec.star.shape rt :ang/2 fd :size rt 180 fd :size lt :ang/2 rec.star.do :sides .5*:size :ang :level-1 rt :ang/2 rt 180-:ang fd :size lt 180-:ang-360/:sides fd :size rt 180 lt :ang/2 end
to octogon.main ; Кружево из восьмиугольников. cs ht octogon.do 50 4 end to octogon.do :size :level if :level<1 [stop] repeat 8 [octogon.shape :size :level rt 180 fd :size/3 rt 360/8] end to octogon.shape :size :level fd 2*:size/3 rt 180 octogon.do :size/3 :level-1 end