### 10.2 Second animation: The growing man

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