Animations for the paper
"From functional animation
to sprite-based display"

Conal Elliott

Microsoft Research

The program

  -- Repeatedly transform an animation.  Each transformation
  -- stretches and speeds up the given image, and puts two
  -- copies into orbit.

  repSpinner :: RealB -> RealB -> ImageB -> Int -> ImageB
  repSpinner r s im n = iterate spinner im !! n
   where
     spinner im = orbit `over` later 1 orbit
      where
        orbit = move path (faster r (stretch s im))
        path  = vector2Polar 0.5 (pi*time)

The animations

 

spin1-3.gif (34473 bytes)

repSpinner (-1) 0.5 charlotte 3

 

spin2-4.gif (74661 bytes)

repSpinner (1.5) 0.6 pat 4

 

spin3-4.gif (80560 bytes)

repSpinner (-0.5) 0.6 becky 4

 

spin4-4.gif (169752 bytes)

repSpinner (- sqrt 2) (sqrt 2 / 2) jake 4