First, we’ll define a procedure man that draws the above schema. We use a variable to reproduce it at different
scales
to man :c
left 154 forward 44*:c back 44*:c
left 52 forward 44*:c back 44*:c
left 154 forward 40*:c
left 154 forward 44*:c back :c*44
left 52 forward 44*:c back :c*44
left 154 forward 10*:c
left 90 repeat 180[forward :c/2 right 2] right 90
end
Now, we’ll create an animation that will make the man grow. To realize this, we’ll draw man 0.1, then
man 0.2 man 0.3 ... until man 5. Between each man, we’ll erase the screen. We obtain two different
procedures:
to man :c
left 154 forward 44*:c back 44*:c
left 52 forward 44*:c back 44*:c
left 154 forward 40*:c
left 154 forward 44*:c back :c*44
left 52 forward 44*:c back :c*44
left 154 forward 10*:c
left 90 repeat 180[forward :c/2 right 2] right 90
if :c=5[stop]
cs ht man :c+0.1
end
to go
cs ht
man 0
end
Finally to make the animation fluid, we’ll use animation mode and the primitive repaint.
to man :c
left 154 forward 44*:c back 44*:c
left 52 forward 44*:c back 44*:c
left 154 forward 40*:c
left 154 forward 44*:c back :c*44
left 52 forward 44*:c back :c*44
left 154 forward 10*:c
left 90 repeat 180[forward :c/2 right 2] right 90
repaint
if :c=5[stop]
cs ht man :c+0.1
end
to go
cs ht animation
man 0
stopanimation
end
Note: Here, the procedure man is recursive. In aother way, we could use the primitive for to make the variable :c
from 0.1 to 5. Here is the program:
to man :c
cs left 154 forward 44*:c back 44*:c
left 52 forward 44*:c back 44*:c
left 154 forward 40*:c
left 154 forward 44*:c back :c*44
left 52 forward 44*:c back :c*44
left 154 forward 10*:c
left 90 repeat 180[forward :c/2 right 2] right 90
repaint
end
to go
ht animation
for [c 0 5 0.1][man :c]
stopanimation
end