### 8` `Animation Helpers

These functions are designed to work with the slide constructors in slideshow/play.

#### 8.1` `Pict Interoplations

procedure

n : (real-in 0.0 1.0) p1 : pict? p2 : pict? combine : (pict? pict? . -> . pict?) = cc-superimpose

The combine argument determines how p1 and p2 are aligned for morphing. For example, if p1 and p2 both contain multiple lines of text with the same line height but different number of lines, then using ctl-superimpose would keep the ascent line in a fixed location relative to the top of the resulting pict as the rest of the shape morphs around it.

procedure

(fade-around-pict n p1 make-p2) → pict?

n : (real-in 0.0 1.0) p1 : pict? make-p2 : (pict? . -> . pict?)

For example,

(lambda (n) (fade-around-pict n (code x) (lambda (g) (code (+ #,x 1)))))

animates the wrapping of x with a (+ .... 1) form.

procedure

(slide-pict base p p-from p-to n) → pict?

base : pict? p : pict? p-from : pict? p-to : pict? n : (real-in 0.0 1.0)

The p-from and p-to picts are typically laundered ghosts of p within base, but they can be any picts within base.

#### 8.2` `Merging Animations

procedure

(sequence-animations gen ...) → (-> (real-in 0.0 1.0) pict?)

gen : (-> (real-in 0.0 1.0) pict?)

procedure

(reverse-animations gen ...) → (-> (real-in 0.0 1.0) pict?)

gen : (-> (real-in 0.0 1.0) pict?)

#### 8.3` `Stretching and Squashing Time

procedure

(fast-start n) → (real-in 0.0 1.0)

n : (real-in 0.0 1.0)

procedure

n : (real-in 0.0 1.0)

procedure

(fast-edges n) → (real-in 0.0 1.0)

n : (real-in 0.0 1.0)

procedure

(fast-middle n) → (real-in 0.0 1.0)

n : (real-in 0.0 1.0)

The fast-start mapping is convex, so that

(slide-pict base p p1 p2 (fast-start n))

appears to move quickly away from p1 and then slowly as it approaches p2, assuming that n increases uniformly.

The fast-end mapping is concave, so that

(slide-pict base p p1 p2 (fast-end n))

appears to move slowly away from p1 and then quicly as it approaches p2, assuming that n increases uniformly.

The fast-edges mapping is convex at first and concave at the end, so that

(slide-pict base p p1 p2 (fast-edges n))

appears to move quickly away from p1, then more slowly, and then quickly again near p2, assuming that n increases uniformly.

The fast-middle mapping is concave at first and convex at the end, so that

(slide-pict base p p1 p2 (fast-middle n))

appears to move slowly away from p1, then more quickly, and then slowly again near p2, assuming that n increases uniformly.

procedure

(split-phase n) →

(real-in 0.0 1.0) (real-in 0.0 1.0) n : (real-in 0.0 1.0)