functional reactive animation

Upload: idownloadbooksforstu

Post on 03-Apr-2018

239 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/28/2019 FUNCTIONAL REACTIVE ANIMATION

    1/11

  • 7/28/2019 FUNCTIONAL REACTIVE ANIMATION

    2/11

    2 F u n c t i o n a l R e a c t i v e A n i m a t i o n

    M o b i l i t y a n d s a f e t y . T h e p l a t f o r m i n d e p e n d e n c e o f

    t h e m o d e l i n g a p p r o a c h f a c i l i t a t e s t h e c o n s t r u c t i o n o f

    m o b i l e a p p l i c a t i o n s t h a t a r e p r o v a b l y s a f e i n W o r l d

    W i d e W e b a p p l i c a t i o n s .

    T h e E s s e n c e o f M o d e l i n g O u r g o a l i n t h i s p a p e r

    i s t o c o n v e y t h e e s s e n c e o f a m o d e l i n g a p p r o a c h t o r e a c -

    t i v e a n i m a t i o n s a s c a p t u r e d i n F r a n , a s s u m m a r i z e d i n t h e

    f o l l o w i n g f o u r c o n c e p t s :

    1 T e m p o r a l m o d e l i n g . V a l u e s , c a l l e d b e h a v i o r s , t h a t

    v a r y o v e r c o n t i n u o u s t i m e a r e t h e c h i e f v a l u e s o f i n t e r -

    e s t . B e h a v i o r s a r e r s t - c l a s s v a l u e s , a n d a r e b u i l t u p

    c o m p o s i t i o n a l l y ; c o n c u r r e n c y ( p a r a l l e l c o m p o s i t i o n ) i s

    e x p r e s s e d n a t u r a l l y a n d i m p l i c i t l y . A s a n e x a m p l e , t h e

    f o l l o w i n g e x p r e s s i o n e v a l u a t e s t o a n a n i m a t i o n ( i . e . , a n

    i m a g e b e h a v i o r ) c o n t a i n i n g a c i r c l e o v e r a s q u a r e . A t

    t i m e t , t h e c i r c l e h a s s i z e s i n t , a n d t h e s q u a r e h a s s i z e

    c o s t

    b i g g e r ( s i n t i m e ) c i r c l e ` o v e r `

    b i g g e r ( c o s t i m e ) s q u a r e

    2 E v e n t m o d e l i n g . L i k e b e h a v i o r s , e v e n t s a r e r s t -

    c l a s s v a l u e s . E v e n t s m a y r e f e r t o h a p p e n i n g s i n t h e

    r e a l w o r l d ( e . g . m o u s e b u t t o n p r e s s e s ) , b u t a l s o t o

    p r e d i c a t e s b a s e d o n a n i m a t i o n p a r a m e t e r s ( e . g . p r o x -

    i m i t y o r c o l l i s i o n ) . M o r e o v e r , s u c h e v e n t s m a y b e c o m -

    b i n e d w i t h o t h e r s , t o a n a r b i t r a r y d e g r e e o f c o m p l e x i t y ,

    t h u s f a c t o r i n g c o m p l e x a n i m a t i o n l o g i c i n t o s e m a n t i -

    c a l l y r i c h , m o d u l a r b u i l d i n g b l o c k s . F o r e x a m p l e , t h e

    e v e n t d e s c r i b i n g t h e r s t l e f t - b u t t o n p r e s s a f t e r t i m e

    t 0 i s s i m p l y l b p t 0 ; o n e d e s c r i b i n g t i m e s q u a r e d b e i n g

    e q u a l t o 5 i s j u s t :

    p r e d i c a t e ( t i m e ^ 2 = = 5 ) t 0

    a n d t h e i r l o g i c a l d i s j u n c t i o n i s j u s t :

    l b p t 0 . | . p r e d i c a t e ( t i m e ^ 2 = = 5 ) t 0

    3 D e c l a r a t i v e r e a c t i v i t y . M a n y b e h a v i o r s a r e n a t u -

    r a l l y e x p r e s s e d i n t e r m s o f r e a c t i o n s t o e v e n t s . B u t

    e v e n t h e s e \ r e a c t i v e b e h a v i o r s " h a v e d e c l a r a t i v e s e -

    m a n t i c s i n t e r m s o f t e m p o r a l c o m p o s i t i o n , r a t h e r t h a n

    a n i m p e r a t i v e s e m a n t i c s i n t e r m s o f t h e s t a t e c h a n g e s

    o f t e n e m p l o y e d i n e v e n t - b a s e d f o r m a l i s m s . F o r e x -

    a m p l e , a c o l o r - v a l u e d b e h a v i o r t h a t c h a n g e s c y c l i c a l l y

    f r o m r e d t o g r e e n w i t h e a c h b u t t o n p r e s s c a n b e d e -

    s c r i b e d b y t h e f o l l o w i n g s i m p l e r e c u r r e n c e :

    c o l o r C y c l e t 0 =

    r e d ` u n t i l B ` l b p t 0 * = > \ t 1 - >

    g r e e n ` u n t i l B ` l b p t 1 * = > \ t 2 - >

    c o l o r C y c l e t 2

    ( I n H a s k e l l , i d e n t i e r s a r e m a d e i n t o i n x o p e r a t o r s

    b y b a c k q u o t e s , a s i n b ` u n t i l B ` e . A l s o , i n x o p e r a -

    t o r s c a n b e m a d e i n t o i d e n t i e r s b y e n c l o s i n g t h e m i n

    p a r e n t h e s e s , a s i n ( + ) x y . L a m b d a a b s t r a c t i o n s a r e

    w r i t t e n a s \ n v a r s - > e x p " )

    4 P o l y m o r p h i c m e d i a . T h e v a r i e t y o f t i m e - v a r y i n g

    m e d i a ( i m a g e s , v i d e o , s o u n d , 3 D g e o m e t r y ) a n d p a -

    r a m e t e r s o f t h o s e t y p e s ( s p a t i a l t r a n s f o r m a t i o n s , c o l -

    o r s , p o i n t s , v e c t o r s , n u m b e r s ) h a v e t h e i r o w n t y p e -

    s p e c i c o p e r a t i o n s ( e . g . i m a g e r o t a t i o n , s o u n d m i x i n g ,

    a n d n u m e r i c a l a d d i t i o n ) , b u t t i n t o a c o m m o n f r a m e -

    w o r k o f b e h a v i o r s a n d r e a c t i v i t y . F o r i n s t a n c e , t h e

    \ u n t i l B " o p e r a t i o n u s e d a b o v e i s p o l y m o r p h i c , a p p l y -

    i n g t o a l l t y p e s o f t i m e - v a r y i n g v a l u e s .

    O u r C o n t r i b u t i o n s W e h a v e c a p t u r e d t h e f o u r f e a -

    t u r e s a b o v e a s a c o l l e c t i o n o f r e c u r s i v e d a t a t y p e s , f u n c t i o n s ,

    a n d p r i m i t i v e g r a p h i c s r o u t i n e s i n a s y s t e m t h a t w e c a l l

    F r a n , f o r F u n c t i o n a l R e a c t i v e A n i m a t i o n . A l t h o u g h t h e s e

    d a t a t y p e s a n d f u n c t i o n s d o n o t f o r m a p r o g r a m m i n g l a n -

    g u a g e i n t h e u s u a l s e n s e , w e p r o v i d e t h e m w i t h a f o r m a l

    d e n o t a t i o n a l s e m a n t i c s , i n c l u d i n g a p r o p e r t r e a t m e n t o f r e a l

    t i m e , t o a l l o w p r e c i s e , i m p l e m e n t a t i o n - i n d e p e n d e n t r e a s o n -

    i n g . T h i s s e m a n t i c s i n c l u d e s a C P O o f r e a l t i m e , w h o s e a p -

    p r o x i m a t e e l e m e n t s a l l o w u s t o r e a s o n a b o u t e v e n t s b e f o r e

    t h e y o c c u r . A s w o u l d b e t r u e o f a n e w p r o g r a m m i n g l a n -

    g u a g e , t h e d e n o t a t i o n a l s e m a n t i c s h a s b e e n e x t r e m e l y u s e f u l

    i n d e s i g n i n g F r a n . A l l o f o u r d e s i g n d e c i s i o n s b e g i n w i t h a n

    u n d e r s t a n d i n g o f t h e f o r m a l s e m a n t i c s , f o l l o w e d b y r e e c t -

    i n g t h e s e m a n t i c s i n t h e i m p l e m e n t a t i o n . ( T h e s e m a n t i c s i s

    g i v e n i n S e c t i o n 2 . )

    P e r h a p s t h e m o s t n o v e l a s p e c t o f F r a n i s i t s i m p l i c i t t r e a t -

    m e n t o f t i m e . T h i s p r o v i d e s a g r e a t d e a l o f e x p r e s s i v e n e s s

    t o t h e m u l t i m e d i a p r o g r a m m e r , b u t a l s o p r e s e n t s i n t e r e s t i n g

    c h a l l e n g e s w i t h r e s p e c t t o b o t h f o r m a l s e m a n t i c s a n d i m p l e -

    m e n t a t i o n . I n p a r t i c u l a r , e v e n t s m a y b e s p e c i e d i n t e r m s

    o f b o o l e a n f u n c t i o n s o f c o n t i n u o u s t i m e . T h e s e f u n c t i o n s

    m a y b e c o m e t r u e f o r a r b i t r a r i l y b r i e f p e r i o d s o f t i m e , e v e n

    i n s t a n t a n e o u s l y , a n d s o i t i s c h a l l e n g i n g f o r a n i m p l e m e n -

    t a t i o n t o d e t e c t t h e s e e v e n t s . W e s o l v e t h i s p r o b l e m w i t h

    a r o b u s t a n d e c i e n t m e t h o d f o r e v e n t d e t e c t i o n b a s e d o n

    i n t e r v a l a n a l y s i s . ( I m p l e m e n t a t i o n i s s u e s a r e d i s c u s s e d i n

    S e c t i o n 4 . )

    S p e c i c a l l y , t h e n a t u r e o f a n e v e n t c a n b e e x p l o i t e d t o

    e l i m i n a t e s e a r c h o v e r i n t e r v a l s o f t i m e i n w h i c h t h e e v e n t

    p r o v a b l y d o e s n o t o c c u r , a n d f o c u s i n t e a d o n t i m e i n t e r -

    v a l s i n w h i c h t h e e v e n t m a y o c c u r . I n s o m e c a s e s , s u c h a s a

    c o l l e c t i o n o f b o u n c i n g b a l l s , e x a c t e v e n t t i m e s m a y b e d e t e r -

    m i n e d a n a l y t i c a l l y . I n g e n e r a l a n d q u i t e f r e q u e n t l y , h o w e v e r ,

    a n a l y t i c t e c h n i q u e s f a i l t o a p p l y . W e d e s c r i b e i n t e a d a n a l -

    g o r i t h m f o r e v e n t d e t e c t i o n b a s e d o n i n t e r v a l a n a l y s i s a n d

    r e l a t e i t t o t h e p a r t i a l i n f o r m a t i o n s t r u c t u r e o n t h e C P O o f

    e v e n t t i m e s .

    2 T h e F o r m a l S e m a n t i c s o f F r a n

    T h e t w o m o s t f u n d a m e n t a l n o t i o n s i n F r a n a r e b e h a v i o r s

    a n d e v e n t s . W e t r e a t t h e m a s a p a i r o f m u t u a l l y r e c u r s i v e

    p o l y m o r p h i c d a t a t y p e s , a n d s p e c i f y o p e r a t i o n s o n t h e m v i a

    a d e n o t a t i o n a l s e m a n t i c s . ( T h e \ m e d i a t y p e s " w e o f t e n u s e

    w i t h e v e n t s a n d b e h a v i o r s w i l l b e t r e a t e d f o r m a l l y i n a l a t e r

    p a p e r ; b u t s e e a l s o 7 ] . )

    2 . 1 S e m a n t i c D o m a i n s

    T h e a b s t r a c t d o m a i n o f t i m e i s c a l l e d T i m e . T h e a b s t r a c t

    d o m a i n s o f p o l y m o r p h i c b e h a v i o r s ( - b e h a v i o r s ) a n d p o l y -

    m o r p h i c e v e n t s ( - e v e n t s ) a r e d e n o t e d B e h a v i o r

    a n d E v e n t

    r e s p e c t i v e l y .

  • 7/28/2019 FUNCTIONAL REACTIVE ANIMATION

    3/11

    C o n a l E l l i o t t a n d P a u l H u d a k 3

    M o s t o f o u r d o m a i n s ( i n t e g e r s , b o o l e a n s , e t c . ) a r e s t a n -

    d a r d , a n d r e q u i r e n o e x p l a n a t i o n . T h e T i m e d o m a i n , h o w -

    e v e r , r e q u i r e s s p e c i a l t r e a t m e n t , s i n c e w e w i s h v a l u e s o f t i m e

    t o i n c l u d e p a r t i a l e l e m e n t s . I n p a r t i c u l a r , w e w o u l d l i k e t o

    k n o w t h a t a t i m e i s \ a t l e a s t " s o m e v a l u e , e v e n i f w e d o n ' t

    y e t k n o w e x a c t l y w h a t t h e n a l v a l u e w i l l b e . T o m a k e t h i s

    n o t i o n p r e c i s e , w e d e n e a d o m a i n ( p o i n t e d C P O ) o f t i m e

    a s f o l l o w s :

    D e n o t e t h e s e t o f r e a l n u m b e r s a s

  • 7/28/2019 FUNCTIONAL REACTIVE ANIMATION

    4/11

    4 F u n c t i o n a l R e a c t i v e A n i m a t i o n

    I n t e g r a t i o n . I n t e g r a t i o n a p p l i e s t o r e a l - v a l u e d a s w e l l

    a s 2 D a n d 3 D v e c t o r - v a l u e d b e h a v i o r s , o r m o r e g e n e r a l l y , t o

    v e c t o r - s p a c e s ( w i t h l i m i t s ) . B o r r o w i n g f r o m H a s k e l l ' s t y p e

    c l a s s n o t a t i o n t o c l a s s i f y v e c t o r - s p a c e t y p e s :

    i n t e g r a l V e c t o r S p a c e ) B e h a v i o r

    ! T i m e ! B e h a v i o r

    a t i n t e g r a l b t

    0

    t =

    R

    t

    t

    0

    a t b

    I n t e g r a t i o n a l l o w s t h e s p e c i c a t i o n o f v e l o c i t y b e h a v i o r s ,

    a n d , i f u s e d t w i c e , a c c e l e r a t i o n b e h a v i o r s . F o r e x a m p l e , i f

    t h e v e l o c i t y o f a m o v i n g b a l l i s g i v e n b y b e h a v i o r b ( p e r h a p s

    a c o n s t a n t v e l o c i t y , p e r h a p s n o t ) , t h e n i t s p o s i t i o n r e l a t i v e

    t o s t a r t i n g t i m e t

    0

    i s g i v e n b y i n t e g r a l b t

    0

    . T h i s p r o v i d e s a

    n a t u r a l m e a n s t o e x p r e s s p h y s i c s - b a s e d a n i m a t i o n s , e x a m -

    p l e s o f w h i c h a r e g i v e n i n S e c t i o n 3 .

    R e a c t i v i t y . T h e k e y i n t e r p l a y i n F r a n i s t h a t b e t w e e n

    b e h a v i o r s a n d e v e n t s , a n d i s w h a t m a k e s b e h a v i o r s r e a c t i v e .

    S p e c i c a l l y , t h e b e h a v i o r b u n t i l B e e x h i b i t s b ' s b e h a v i o r

    u n t i l e o c c u r s , a n d t h e n s w i t c h e s t o t h e b e h a v i o r a s s o c i a t e d

    w i t h e . M o r e f o r m a l l y :

    u n t i l B B e h a v i o r

    ! E v e n t

    B e h a v i o r

    ! B e h a v i o r

    a t b u n t i l B e t = i f t t

    e

    t h e n a t b t e l s e a t b t

    w h e r e ( t

    e

    b ) = o c c e

    N o t e t h a t t h e i n e q u a l i t y u s e d h e r e , t t

    e

    , i s t h e o n e d e n e d

    i n S e c t i o n 2 . 1 . I n t h e n e x t s e c t i o n e x a m p l e s o f r e a c t i v i t y a r e

    g i v e n f o r e a c h o f t h e v a r i o u s k i n d s o f e v e n t s .

    2 . 3 S e m a n t i c s o f E v e n t s

    E v e n t h a n d l i n g . I n o r d e r t o g i v e e x a m p l e s u s i n g s p e -

    c i c k i n d s o f e v e n t s , w e r s t d e s c r i b e t h e n o t i o n o f e v e n t

    h a n d l e r s , w h i c h a r e a p p l i e d t o t h e t i m e a n d d a t a a s s o c i a t e d

    w i t h a n e v e n t u s i n g t h e f o l l o w i n g o p e r a t o r :

    ( + ) ) E v e n t

    ! ( T i m e ! ! ) ! E v e n t

    o c c e + ) f ] ] = ( t

    e

    f t

    e

    x )

    w h e r e ( t

    e

    x ) = o c c e

    F o r c o n v e n i e n c e , w e w i l l a l s o m a k e u s e o f t h e f o l l o w i n g

    d e r i v e d o p e r a t i o n s , w h i c h i g n o r e t h e t i m e o r t h e d a t a o r

    b o t h :

    ( = ) ) E v e n t

    ! ( ! ) ! E v e n t

    ( ) ) E v e n t

    ! ( T i m e ! ) ! E v e n t

    ( ) ) E v e n t

    ! ! E v e n t

    e v = ) g = e v + ) t x : g x

    e v ) h = e v + ) t x : h t

    e v ) x = e v + ) t x : x

    T h e s e d i e r e n t o p e r a t o r s y m b o l s a r e s o m e w h a t n e u m o n i c :

    ( + ) ) r e c e i v e s a l l o f t h e p a r a m e t e r s , ( ) ) r e c e i v e s n o n e

    o f t h e p a r a m e t e r s , ( ) ) r e c e i v e s o n l y t h e t i m e , a n d ( = ) )

    r e c e i v e s o n l y t h e d a t a

    C o n s t a n t e v e n t s . T h e s i m p l e s t k i n d o f e v e n t i s o n e

    s p e c i e d d i r e c t l y b y i t s t i m e a n d v a l u e .

    c o n s t E v T i m e ! ! E v e n t

    o c c c o n s t E v t

    e

    x ] ] = ( t

    e

    x )

    T h u s , f o r e x a m p l e , t h e b e h a v i o r :

    b

    1

    u n t i l B ( c o n s t E v 1 0 x ) ) b

    2

    e x h i b i t s b e h a v i o r b

    1

    u n t i l t i m e 1 0 , a t w h i c h p o i n t i t b e g i n s

    e x h i b i t i n g b e h a v i o r b

    2

    ( x i s i g n o r e d i n t h i s e x a m p l e , b u t o f

    c o u r s e n e e d n ' t b e ) .

    E x t e r n a l e v e n t s . F o r t h i s p a p e r w e o n l y c o n s i d e r o n e

    k i n d o f e x t e r n a l e v e n t | m o u s e b u t t o n p r e s s e s | w h i c h c a n

    b e f r o m e i t h e r t h e l e f t o r r i g h t b u t t o n . T h e v a l u e a s s o c i a t e d

    w i t h a b u t t o n p r e s s e v e n t i s t h e c o r r e s p o n d i n g b u t t o n r e l e a s e

    e v e n t , w h i c h i n t u r n y i e l d s a u n i t v a l u e ( ( ) i s t h e u n i t t y p e ) :

    l b p r b p T i m e ! E v e n t

    E v e n t

    (

    T h e m e a n i n g o f a n e v e n t l b p t

    0

    , f o r e x a m p l e , i s t h e p a i r

    ( t

    e

    e ) , s u c h t h a t t

    e

    i s t h e t i m e o f t h e r s t l e f t b u t t o n p r e s s

    a f t e r t

    0

    , a n d e i s t h e e v e n t c o r r e s p o n d i n g t o t h e r s t l e f t

    b u t t o n r e l e a s e a f t e r t

    e

    . T h u s t h e b e h a v i o r :

    b

    1

    u n t i l B ( l b p t

    0

    ) = ) e

    b

    2

    u n t i l B e )

    b

    3

    e x h i b i t s b e h a v i o r b

    1

    u n t i l t h e l e f t b u t t o n i s p r e s s e d , a t w h i c h

    p o i n t i t b e c o m e s b

    2

    u n t i l t h e l e f t b u t t o n i s r e l e a s e d , a t w h i c h

    p o i n t i t b e c o m e s b

    3

    P r e d i c a t e s . I t i s n a t u r a l t o w a n t t o s p e c i f y c e r t a i n e v e n t s

    a s t h e r s t t i m e t h a t a b o o l e a n b e h a v i o r b e c o m e s t r u e a f t e r

    a g i v e n t i m e .

    p r e d i c a t e B e h a v i o r

    B o o l

    ! T i m e ! E v e n t

    (

    o c c p r e d i c a t e b t

    0

    ] ] = ( i n f f t > t

    0

    a t b t g ( ) )

    T h a t i s , t h e t i m e o f a p r e d i c a t e e v e n t i s t h e i n m u m o f t h e

    s e t o f t i m e s g r e a t e r t h a n t

    0

    a t w h i c h t h e b e h a v i o r i s t r u e .

    N o t e t h a t t h i s t i m e c o u l d b e e q u a l t o t

    0

    T h e b e h a v i o r :

    b

    1

    u n t i l B ( p r e d i c a t e ( s i n t i m e = 0 5 ) t

    0

    ) ) b

    2

    t h u s e x h i b i t s b

    1

    u n t i l t h e r s t t i m e t a f t e r t

    0

    t h a t s i n t s

    0 . 5 , a f t e r w h i c h i t e x h i b i t s b

    2

    I f t h e b o o l e a n b e h a v i o r a r g u m e n t t o p r e d i c a t e w e r e a n a r -

    b i t r a r i l y c o m p l e x c o m p u t a b l e f u n c t i o n , t h e n p r e d i c a t e w o u l d

    n o t b e c o m p u t a b l e . T o c o p e w i t h t h i s p r o b l e m , w e r e -

    s t r i c t b e h a v i o r s s o m e w h a t , t o m a k e p r e d i c a t e n o t o n l y c o m -

    p u t a b l e , b u t a l s o e c i e n t . W e w i l l r e t u r n t o t h i s i s s u e i n

    S e c t i o n 4 . 2 .

    C h o i c e . W e c a n c h o o s e t h e e a r l i e r o f t w o e v e n t s w i t h t h e

    o p e r a t o r :

    ( ) E v e n t

    ! E v e n t

    ! E v e n t

    o c c e e ] ] = ( t

    e

    x ) i f t

    e

    t

    e

    = ( t

    e

    x ) o t h e r w i s e

    w h e r e ( t

    e

    x ) = o c c e

    ( t

    e

    x ) = o c c e

    F o r e x a m p l e , t h i s b e h a v i o r :

    b

    1

    u n t i l B ( l b p t

    0

    p r e d i c a t e ( t i m e > 5 ) t

    0

    ) ) b

    2

    w a i t s f o r e i t h e r a l e f t b u t t o n p r e s s o r a t i m e o u t o f 5 s e c o n d s

    b e f o r e s w i t c h i n g f r o m b e h a v i o r b

    1

    t o b e h a v i o r b

    2

    . A s a n

    a l t e r n a t i v e , t h e f o l l o w i n g e x a m p l e s w i t c h e s t o a d i e r e n t

    b e h a v i o r , b

    3

    , u p o n t i m e o u t .

    b

    1

    u n t i l B ( l b p t

    0

    ) b

    2

    p r e d i c a t e ( t i m e > 5 ) t

    0

    ) b

    3

    )

  • 7/28/2019 FUNCTIONAL REACTIVE ANIMATION

    5/11

    C o n a l E l l i o t t a n d P a u l H u d a k 5

    S n a p s h o t . A t t h e m o m e n t a n e v e n t o c c u r s i t i s o f t e n

    c o n v e n i e n t t o t a k e a \ s n a p s h o t " o f a b e h a v i o r ' s v a l u e a t

    t h a t p o i n t i n t i m e .

    s n a p s h o t E v e n t

    ! B e h a v i o r

    ! E v e n t

    o c c e s n a p s h o t b ] ] = ( t

    e

    ( x a t b t

    e

    ) )

    w h e r e ( t

    e

    x ) = o c c e

    F o r e x a m p l e , t h e b e h a v i o r :

    b

    1

    u n t i l B ( l b p t

    0

    s n a p s h o t ( s i n t i m e ) ) = ) ( e y ) b

    2

    g r a b s t h e s i n e o f t h e t i m e a t w h i c h t h e l e f t b u t t o n i s p r e s s e d ,

    b i n d s i t t o y , a n d c o n t i n u e s w i t h b e h a v i o r b

    2

    w h i c h p r e -

    s u m a b l y d e p e n d s o n y . A l t h o u g h t h i s e x a m p l e c o u l d a l s o

    b e a c h i e v e d b y g r a b b i n g t h e t i m e o f t h e l e f t b u t t o n p r e s s

    e v e n t a n d c o m p u t i n g i t s s i n e , i n g e n e r a l t h e b e h a v i o r b e -

    i n g s n a p s h o t c a n b e a r b i t r a r i l y c o m p l e x , a n d m a y i n f a c t b e

    d e p e n d e n t o n e x t e r n a l e v e n t s .

    E v e n t s e q u e n c i n g . I t i s s o m e t i m e s u s e f u l t o u s e o n e

    e v e n t t o g e n e r a t e a n o t h e r . T h e e v e n t j o i n E v e i s t h e e v e n t

    t h a t o c c u r s w h e n e o c c u r s , w h e r e e i s t h e v a l u e p a r t o f e

    j o i n E v E v e n t

    E v e n t

    ! E v e n t

    o c c j o i n E v e = o c c s n d ( o c c e ] ] ) ] ]

    ( T h i s f u n c t i o n i s s o n a m e d b e c a u s e i t i s t h e \ j o i n " o p e r a t o r

    f o r t h e E v e n t m o n a d 2 2 ] . )

    F o r e x a m p l e , t h e e v e n t

    j o i n E v ( l b p t

    0

    ) p r e d i c a t e ( b = 0 ) )

    o c c u r s t h e r s t t i m e t h a t t h e b e h a v i o r b h a s t h e v a l u e z e r o

    a f t e r t h e r s t l e f t b u t t o n p r e s s a f t e r t i m e t

    0

    3 S o m e L a r g e r E x a m p l e s

    T h e p r e v i o u s s e c t i o n p r e s e n t e d t h e p r i m i t i v e c o m b i n a t o r s

    f o r b e h a v i o r s a n d e v e n t s , a l o n g w i t h t h e i r f o r m a l s e m a n t i c s .

    T h e f o l l o w i n g e x a m p l e s i l l u s t r a t e t h e u s e o f s o m e o f t h e s e

    c o m b i n a t o r s . T h e e x a m p l e s a r e g i v e n a s H a s k e l l c o d e , w h o s e

    c o r r e s p o n d e n c e t o t h e f o r m a l s e m a n t i c s s h o u l d b e o b v i o u s .

    ( A l l v a l u e s i n t h e s e e x a m p l e s a r e b e h a v i o r s , t h o u g h w e d o

    n o t e x p l i c i t l y s a y s o . )

    T o b e g i n , l e t ' s d e n e a c o u p l e o f s i m p l e u t i l i t y b e h a v i o r s .

    T h e r s t v a r i e s s m o o t h l y a n d c y c l i c a l l y b e t w e e n - 1 a n d + 1 .

    w i g g l e = s i n ( p i * t i m e )

    U s i n g w i g g l e w e c a n d e n e a f u n c t i o n t h a t s m o o t h l y v a r i e s

    b e t w e e n i t s t w o a r g u m e n t v a l u e s .

    w i g g l e R a n g e l o h i =

    l o + ( h i - l o ) * ( w i g g l e + 1 ) / 2

    N o w l e t ' s c r e a t e a v e r y s i m p l e a n i m a t i o n : a r e d , p u l s a t -

    i n g b a l l .

    p B a l l = w i t h C o l o r r e d

    ( b i g g e r ( w i g g l e R a n g e 0 . 5 1 ) c i r c l e )

    T h e f u n c t i o n b i g g e r s c a l e s i t s s e c o n d a r g u m e n t b y t h e a m o u n t

    s p e c i e d b y i t s r s t a r g u m e n t ; s i n c e t h e r s t a r g u m e n t i s a

    b e h a v i o r , t h e r e s u l t i s a l s o a b e h a v i o r , i n t h i s c a s e a b a l l

    w h o s e s i z e v a r i e s f r o m f u l l s i z e t o h a l f i t s f u l l s i z e .

    A k e y a t t r i b u t e o f F r a n i s t h a t b e h a v i o r s a r e c o m p o s a b l e

    F o r e x a m p l e , p B a l l c a n b e f u r t h e r m a n i p u l a t e d , a s i n :

    r B a l l = m o v e ( v e c t o r P o l a r 2 . 0 t i m e )

    ( b i g g e r 0 . 1 p B a l l )

    w h i c h y i e l d s a b a l l m o v i n g i n a c i r c u l a r m o t i o n w i t h r a d i u s

    2 . 0 a t a r a t e p r o p o r t i o n a l t o t i m e . T h e b a l l i t s e l f i s t h e s a m e

    a s p B a l l ( r e d a n d p u l s a t i n g ) , b u t 1 / 1 0 t h e o r i g i n a l s i z e .

    C e r t a i n e x t e r n a l p h e n o m e n a c a n b e t r e a t e d a s b e h a v i o r s ,

    t o o . F o r e x a m p l e , t h e p o s i t i o n o f t h e m o u s e c a n n a t u r a l l y

    b e t h o u g h t o f a s a v e c t o r b e h a v i o r . T h u s t o c a u s e a n i m a g e

    t o t r a c k e x a c t l y t h e p o s i t i o n o f a m o u s e , a l l w e n e e d t o d o

    s

    f o l l o w M o u s e i m t 0 = m o v e ( m o u s e t 0 ) i m

    ( T h e f u n c t i o n m o v e s h i f t s a n i m a g e b y a n o s e t v e c t o r . )

    A n o t h e r n a t u r a l w a y t o d e n e a n a n i m a t i o n i s i n t e r m s

    o f r a t e s . F o r e x a m p l e , w e c a n e x p a n d o n t h e m o u s e - f o l l o w e r

    i d e a b y h a v i n g t h e i m a g e f o l l o w t h e m o u s e a t a r a t e t h a t i s

    d e p e n d e n t o n h o w f a r t h e i m a g e i s f r o m t h e c u r r e n t m o u s e

    p o s i t i o n .

    f o l l o w M o u s e R a t e i m t 0 = m o v e o f f s e t i m

    w h e r e o f f s e t = i n t e g r a l r a t e t 0

    r a t e = m o u s e t 0 . - . p o s

    p o s = o r i g i n 2 . + ^ o f f s e t

    N o t e t h e m u t u a l l y r e c u r s i v e s p e c i c a t i o n o f o f f s e t r a t e

    a n d p o s : T h e o s e t s t a r t s o u t a s t h e z e r o v e c t o r , a n d g r o w s

    a t a r a t e c a l l e d r a t e . T h e r a t e i s d e n e d t o b e t h e d i f -

    f e r e n c e b e t w e e n t h e m o u s e ' s l o c a t i o n ( m o u s e i s a p r i m i t i v e

    b e h a v i o r t h a t r e p r e s e n t s m o u s e p o s i t i o n ) a n d o u r a n i m a -

    t i o n ' s p o s i t i o n p o s p o s , i n t u r n , i s d e n e d i n t e r m s o f t h e

    o s e t r e l a t i v e t o t h e o r i g i n . A s a r e s u l t , t h e g i v e n i m a g e a l -

    w a y s p u r s u e s t h e m o u s e , b u t m o v e s f a s t e r w h e n t h e d i s t a n c e

    i s g r e a t e r . ( T h e o p e r a t i o n + ^ a d d s a p o i n t a n d a v e c t o r ,

    y i e l d i n g a p o i n t , a n d - s u b t r a c t s t w o p o i n t s , y i e l d i n g a

    v e c t o r . )

    A s a v a r i a t i o n , w e c a n v i r t u a l l y a t t a c h t h e i m a g e t o t h e

    m o u s e c u r s o r u s i n g a s p r i n g . T h e d e n i t i o n i s v e r y s i m i l a r ,

    w i t h p o s i t i o n d e n e d b y a s t a r t i n g p o i n t a n d a g r o w i n g o -

    s e t . T h i s t i m e , h o w e v e r , t h e r a t e i s i t s e l f c h a n g i n g a t a r a t e

    w e c a l l a c c e l . T h i s a c c e l e r a t i o n i s d e n e d i n p a r t b y t h e

    d i e r e n c e b e t w e e n t h e m o u s e p o s i t i o n a n d t h e i m a g e ' s p o s i -

    t i o n , b u t w e a l s o a d d s o m e d r a g t h a t t e n d s t o s l o w d o w n t h e

    i m a g e b y a d d i n g a n a c c e l e r a t i o n i n t h e d i r e c t i o n o p p o s i t e t o

    i t s m o v e m e n t . ( I n c r e a s i n g o r d e c r e a s i n g t h e \ d r a g f a c t o r "

    o f 0 . 5 b e l o w c r e a t e s m o r e o r l e s s d r a g . )

    f o l l o w M o u s e S p r i n g i m t 0 = m o v e o f f s e t i m

    w h e r e o f f s e t = i n t e g r a l r a t e t 0

    r a t e = i n t e g r a l a c c e l t 0

    a c c e l = ( m o u s e t 0 . - . p o s ) - 0 . 5 * ^ r a t e

    p o s = o r i g i n 2 . + ^ o f f s e t

    ( T h e o p e r a t o r * ^ m u l t i p l i e s a r e a l n u m b e r b y a v e c t o r , y i e l d -

    i n g a v e c t o r . )

    A s a n e x a m p l e o f e v e n t h a n d l i n g , t h e f o l l o w i n g b e h a v i o r

    d e s c r i b e s a c o l o r t h a t c h a n g e s b e t w e e n r e d a n d b l u e e a c h

    t i m e t h e l e f t b u t t o n i s p r e s s e d . W e a c c o m p l i s h t h i s c h a n g e

    w i t h t h e h e l p o f a f u n c t i o n c y c l e t h a t t a k e s t w o c o l o r s , c 1

    a n d c 2 , a n d g i v e s a n a n i m a t e d c o l o r t h a t s t a r t s o u t a s c 1

    W h e n t h e b u t t o n i s p r e s s e d , i t s w a p s c 1 a n d c 2 a n d r e p e a t s

    ( u s i n g r e c u r s i o n ) .

    a n i m 1 2 t 0 = w i t h C o l o r ( c y c l e r e d b l u e t 0 ) c i r c l e

    w h e r e c y c l e c 1 c 2 t 0 =

    c 1 ` u n t i l B ` l b p t 0 * = > c y c l e c 2 c 1

  • 7/28/2019 FUNCTIONAL REACTIVE ANIMATION

    6/11

    6 F u n c t i o n a l R e a c t i v e A n i m a t i o n

    b o u n c e m i n V a l m a x V a l y 0 v 0 g t 0 = p a t h

    w h e r e p a t h = s t a r t t 0 ( y 0 , v 0 )

    s t a r t t 0 ( y 0 , v 0 ) = y ` u n t i l B ` d o B o u n c e + = > s t a r t

    w h e r e y = l i f t 0 y 0 + i n t e g r a l v t 0

    v = l i f t 0 v 0 + i n t e g r a l g t 0

    r e c i p r o c i t y = 0 . 8

    d o B o u n c e : : E v e n t ( R e a l V a l , R e a l V a l ) - - r e t u r n s n e w y a n d v

    d o B o u n c e = ( c o l l i d e ` s n a p s h o t ` p a i r B y v ) = = > s n d = = > \ ( y H i t , v H i t ) - >

    ( y H i t , - r e c i p r o c i t y * v H i t )

    c o l l i d e = p r e d i c a t e ( y < = * l i f t 0 m i n V a l & & * v < = * 0 | | *

    y > = * l i f t 0 m a x V a l & & * v > = * 0 ) t 0

    F i g u r e 1 : O n e - D i m e n s i o n a l B o u n c e

    N o t e t h a t t h e T i m e a r g u m e n t i n t h e r e c u r s i v e c a l l t o c y c l e

    i s s u p p l i e d a u t o m a t i c a l l y b y * = >

    T h e n e x t e x a m p l e i s a n u m b e r - v a l u e d b e h a v i o r t h a t s t a r t s

    o u t a s z e r o , a n d b e c o m e s - 1 w h i l e t h e l e f t b u t t o n i s p r e s s e d

    o r 1 w h i l e t h e r i g h t b u t t o n i s p r e s s e d .

    b S i g n t 0 =

    0 ` u n t i l B ` l b p t 0 = = > n o n Z e r o ( - 1 ) . | .

    r b p t 0 = = > n o n Z e r o 1

    w h e r e n o n Z e r o r s t o p =

    r ` u n t i l B ` s t o p * = > b S i g n

    W e c a n u s e t h e f u n c t i o n b S i g n a b o v e t o c o n t r o l t h e r a t e

    o f g r o w t h o f a n i m a g e . P r e s s i n g t h e l e f t ( o r r i g h t ) b u t t o n

    c a u s e s t h e i m a g e t o s h r i n k ( o r g r o w ) u n t i l r e l e a s e d . P u t

    a n o t h e r w a y , t h e r a t e o f g r o w t h i s 0 , - 1 , o r 1 , a c c o r d i n g t o

    b S i g n

    g r o w i m t 0 = b i g g e r s i z e i m

    w h e r e s i z e = 1 + i n t e g r a l r a t e t 0

    r a t e = b S i g n t 0

    A v e r y s i m p l e m o d i c a t i o n t o t h e g r o w f u n c t i o n a b o v e

    c a u s e s t h e i m a g e t o g r o w o r s h r i n k a t t h e r a t e o f i t s o w n

    s i z e ( i . e . e x p o n e n t i a l l y ) .

    g r o w ' i m t 0 = b i g g e r s i z e i m

    w h e r e s i z e = 1 + i n t e g r a l r a t e t 0

    r a t e = b S i g n t 0 * s i z e

    H e r e ' s a n e x a m p l e t h a t d e m o n s t r a t e s t h a t e v e n c o l o r s

    c a n b e a n i m a t e d . U s i n g t h e f u n c t i o n r g b , a c o l o r b e h a v i o r

    i s c r e a t e d b y x i n g t h e b l u e c o m p o n e n t , b u t a l l o w i n g t h e

    r e d a n d g r e e n c o m p o n e n t s t o v a r y w i t h t i m e .

    w i t h C o l o r ( r g b ( a b s ( c o s t i m e ) )

    ( a b s ( s i n ( 2 * t i m e ) ) )

    0 . 5 )

    c i r c l e

    A s a n a l e x a m p l e , l e t ' s d e v e l o p a m o d u l a r p r o g r a m t o

    d e s c r i b e \ b o u n c i n g b a l l s . " F i r s t n o t e t h a t t h e p h y s i c a l e q u a -

    t i o n s d e s c r i b i n g t h e p o s i t i o n y a n d v e l o c i t y v a t t i m e t o f a n

    o b j e c t b e i n g a c c e l e r a t e d b y g r a v i t y g a r e :

    y = y

    0

    +

    R

    t

    t

    0

    v d t

    v = v

    0

    +

    R

    t

    t

    0

    g d t

    w h e r e y

    0

    a n d v

    0

    a r e t h e i n i t i a l p o s i t i o n a n d v e l o c i t y , r e s p e c -

    t i v e l y o f t h e o b j e c t a t t i m e t

    0

    . I n F r a n t h e s e e q u a t i o n s a r e

    s i m p l y :

    y = l i f t 0 y 0 + i n t e g r a l v t 0

    v = l i f t 0 v 0 + i n t e g r a l g t 0

    N e x t w e d e n e a f u n c t i o n b o u n c e t h a t , i n a d d i t i o n t o

    c o m p u t i n g t h e p o s i t i o n o f a n o b j e c t b a s e d o n t h e a b o v e

    e q u a t i o n s , a l s o d e t e r m i n e s w h e n t h e b a l l h a s h i t e i t h e r t h e

    o o r o r t h e c e i l i n g , a n d i f s o r e v e r s e s t h e d i r e c t i o n o f t h e

    b a l l w h i l e r e d u c i n g i t s v e l o c i t y b y a c e r t a i n r e c i p r o c i t y t o

    a c c o u n t f o r l o s s o f e n e r g y d u r i n g t h e c o l l i s i o n . T h e c o d e f o r

    b o u n c e i s s h o w n i n F i g u r e 1 . N o t e t h a t c o l l i s i o n i s d e n e d

    a s t h e m o m e n t w h e n e i t h e r t h e p o s i t i o n h a s e x c e e d e d t h e

    m i n V a l a n d t h e v e l o c i t y i s n e g a t i v e , o r t h e p o s i t i o n h a s e x -

    c e e d e d t h e m a x V a l a n d t h e v e l o c i t y i s p o s i t i v e . W h e n s u c h

    a c o l l i s i o n i s d e t e c t e d , t h e c u r r e n t p o s i t i o n a n d v e l o c i t y a r e

    s n a p s h o t , a n d t h e c y c l e r e p e a t s w i t h t h e v e l o c i t y n e g a t e d

    a n d s c a l e d b y t h e r e c i p r o c i t y f a c t o r . ( T h e v a r i o u s o p e r a -

    t o r s w i t h * a f t e r t h e m a r e l i f t e d v e r s i o n s o f t h e u n d e r l y i n g

    o p e r a t o r s . )

    N o w t h a t b o u n c e i s d e n e d , w e c a n a l s o u s e i t t o d e -

    s c r i b e h o r i z o n t a l m o v e m e n t , u s i n g 0 f o r a c c e l e r a t i o n . T h u s

    t o s i m u l a t e a b o u n c i n g b a l l i n a b o x , w e c a n s i m p l y w r i t e :

    m o v e X Y x y

    ( w i t h C o l o r g r e e n c i r c l e )

    w h e r e

    x = b o u n c e x M i n x M a x x 0 v x 0 0 t 0

    y = b o u n c e y M i n y M a x y 0 v y 0 g t 0

    w h e r e x M i n x M a x y M i n , a n d y M a x a r e t h e d i m e n s i o n s o f t h e

    b o x .

    4 I m p l e m e n t a t i o n

    T h e f o r m a l s e m a n t i c s g i v e n i n S e c t i o n 2 c o u l d a l m o s t s e r v e

    a s a n i m p l e m e n t a t i o n , b u t n o t q u i t e . I n t h i s s e c t i o n , w e d e -

    s c r i b e t h e n o n - o b v i o u s i m p l e m e n t a t i o n t e c h n i q u e s u s e d i n

    F r a n . O n e r e l a t i v e l y m i n o r i t e m i s i n t e g r a t i o n . W h i l e s y m -

    b o l i c i n t e g r a t i o n c o u l d c e r t a i n l y b e u s e d f o r s i m p l e b e h a v -

    i o r s , w e h a v e i n s t e a d a d a p t e d s t a n d a r d t e x t b o o k n u m e r i c a l

    t e c h n i q u e s . ( W e c h i e y u s e f o u r t h o r d e r R u n g e K u t t a 1 7 ] . )

  • 7/28/2019 FUNCTIONAL REACTIVE ANIMATION

    7/11

    C o n a l E l l i o t t a n d P a u l H u d a k 7

    4 . 1 R e p r e s e n t i n g B e h a v i o r s

    A n e a r l y i m p l e m e n t a t i o n o f F r a n r e p r e s e n t e d b e h a v i o r s a s

    i m p l i e d i n t h e f o r m a l s e m a n t i c s :

    d a t a B e h a v i o r a = B e h a v i o r ( T i m e - > a )

    T h i s r e p r e s e n t a t i o n , h o w e v e r , l e a d s t o a s e r i o u s i n e c i e n c y .

    T o s e e w h y , c o n s i d e r a s i m p l e s e q u e n t i a l l y r e c u r s i v e r e a c t i v e

    b e h a v i o r l i k e t h e f o l l o w i n g .

    b = t o g g l e T r u e 0

    w h e r e t o g g l e v a l t 0 =

    l i f t 0 v a l ` u n t i l B ` l b p t 0 * = >

    t o g g l e ( n o t v a l )

    T h i s b e h a v i o r t o g g l e s b e t w e e n t r u e a n d f a l s e w h e n e v e r t h e

    l e f t b u t t o n i s p r e s s e d . S u p p o s e b i s s a m p l e d a t a t i m e t

    1

    a f t e r

    t h e r s t b u t t o n p r e s s , a n d w e t h e n n e e d t o s a m p l e b a t a

    t i m e t

    2

    > t

    1

    . T h e n b n e e d s t o n o t i c e t h a t t

    2

    i s a f t e r t h e r s t

    b u t t o n p r e s s , a n d t h e n s e e w h e t h e r i t i s a l s o b e y o n d t h e

    s e c o n d b u t t o n p r e s s . A f t e r n s u c h e v e n t s , s a m p l i n g m u s t

    v e r i f y t h a t t h e i r g i v e n t i m e s a r e i n d e e d p a s t n e v e n t s , s o

    t h e r u n n i n g t i m e a n d t h e ( l a z i l y e x p a n d e d ) r e p r e s e n t a t i o n

    w o u l d b e O ( n ) . O n e c o u l d t r y t o e l i m i n a t e t h i s \ s p a c e -

    t i m e l e a k " b y s w i t c h i n g t o a s t a t e f u l i m p l e m e n t a t i o n , b u t

    d o i n g s o w o u l d i n t e r f e r e w i t h a b e h a v i o r ' s a b i l i t y t o s u p p o r t

    m u l t i p l e s i m u l t a n e o u s l y t i m e - t r a n s f o r m e d v e r s i o n s o f i t s e l f .

    W e s o l v e t h i s p r o b l e m b y h a v i n g b e h a v i o r s a m p l i n g g e n -

    e r a t e n o t o n l y a v a l u e , b u t a l s o a n e w , p o s s i b l y s i m p l e r ,

    b e h a v i o r .

    d a t a B e h a v i o r a =

    B e h a v i o r ( T i m e - > ( a , B e h a v i o r a ) )

    ( I n f a c t , w e u s e a s l i g h t l y m o r e c o m p l e x r e p r e s e n t a t i o n , a s

    e x p l a i n e d i n S e c t i o n 4 . 2 b e l o w . ) O n c e a n e v e n t i s d e t e c t e d

    t o b e ( t

    e

    b ) , t h e n e w b e h a v i o r i s s a m p l e d a n d t h e r e s u l t i n g

    v a l u e a n d p o s s i b l y a n e v e n f u r t h e r s i m p l i e d v e r s i o n a r e r e -

    t u r n e d . I n m o s t c a s e s ( o n e s n o t i n v o l v i n g t i m e t r a n s f o r m ) ,

    t h e o r i g i n a l u n t i l B b e h a v i o r i s t h e n n o l o n g e r a c c e s s i b l e , a n d

    s o g e t s g a r b a g e c o l l e c t e d . N o t e t h a t t h i s o p t i m i z a t i o n i m -

    p l i e s s o m e l o s s o f g e n e r a l i t y : s a m p l i n g m u s t b e d o n e w i t h

    m o n o t o n i c a l l y n o n - d e c r e a s i n g t i m e s .

    T h e s e s a m e e c i e n c y i s s u e s a p p l y a s w e l l t o i n t e g r a t i o n ,

    e l i m i n a t i n g t h e n e e d t o r e - s t a r t i n t e g r a t i o n f o r e a c h s a m -

    p l i n g . ( I n f a c t , o u r f o r m u l a t i o n o f n u m e r i c a l i n t e g r a t i o n i s

    a s s e q u e n t i a l l y r e c u r s i v e r e a c t i v e b e h a v i o r s . )

    4 . 2 I m p l e m e n t i n g E v e n t s

    T h e r e a r e r e a l l y t w o k e y c h a l l e n g e s w i t h e v e n t d e t e c t i o n :

    ( a ) h o w t o a v o i d t r y i n g t o o s o o n t o c a t c h e v e n t s , a n d ( b )

    h o w t o c a t c h e v e n t s e c i e n t l y a n d r o b u s t l y w h e n w e n e e d

    t o . W e u s e a f o r m o f l a z i n e s s f o r t h e f o r m e r c h a l l e n g e , a n d

    a t e c h n i q u e c a l l e d i n t e r v a l a n a l y s i s f o r t h e l a t t e r .

    R e p r e s e n t i n g e v e n t s l a z i l y . R e c a l l t h e s e m a n t i c s

    o f r e a c t i v i t y :

    u n t i l B B e h a v i o r

    ! E v e n t

    B e h a v i o r

    ! B e h a v i o r

    a t b u n t i l B e t = i f t t

    e

    t h e n a t b t e l s e a t b t

    w h e r e ( t

    e

    b ) = o c c e

    N o t e t h a t v a l u e s o f a n u n t i l B - b a s e d b e h a v i o r a t t t

    e

    d o n o t d e p e n d o n t h e p r e c i s e v a l u e o f t

    e

    , j u s t t h e p a r t i a l

    i n f o r m a t i o n a b o u t t

    e

    t h a t i t i s a t l e a s t t . T h i s o b s e r v a t i o n

    i s c r u c i a l , b e c a u s e i t m a y b e q u i t e e x p e n s i v e o r , i n t h e c a s e o f

    u s e r i n p u t , e v e n i m p o s s i b l e t o k n o w t h e v a l u e o f t

    e

    b e f o r e t h e

    t i m e t

    e

    a r r i v e s . I n s t e a d , w e r e p r e s e n t t h e t i m e t

    e

    b y a c h a i n

    o f l o w e r - b o u n d t i m e v a l u e s i n c r e a s i n g m o n o t o n i c a l l y w i t h

    r e s p e c t t o t h e i n f o r m a t i o n o r d e r i n g d e n e d i n S e c t i o n 2 . 1 .

    B e c a u s e t h e s e c h a i n s a r e e v a l u a t e d l a z i l y , d e t e c t i o n i s d o n e

    p r o g r e s s i v e l y o n d e m a n d .

    D e t e c t i n g p r e d i c a t e e v e n t s . T h e s e c o n d i m p l e -

    m e n t a t i o n c h a l l e n g e r a i s e d b y e v e n t s i s h o w t o d e t e r m i n e

    w h e n p r e d i c a t e e v e n t s o c c u r . F o r i n s t a n c e , c o n s i d e r t h e

    e v e n t t h a t o c c u r s w h e n t e

    4 t

    = 1 0 :

    p r e d i c a t e ( t i m e * e x p ( 4 * t i m e ) = = * 1 0 ) 0

    A n y t e c h n i q u e b a s e d s o l e l y o n s a m p l i n g o f b e h a v i o r s m u s t

    f a i l t o d e t e c t e v e n t s l i k e t h i s w h o s e b o o l e a n b e h a v i o r s a r e

    t r u e o n l y i n s t a n t a n e o u s l y . A n a l t e r n a t i v e t e c h n i q u e i s s y m -

    b o l i c e q u a t i o n s o l v i n g . U n f o r t u n a t e l y , e x c e p t f o r v e r y s i m p l e

    e x a m p l e s , e q u a t i o n s c a n n o t b e s o l v e d s y m b o l i c a l l y .

    T h e t e c h n i q u e w e u s e t o d e t e c t p r e d i c a t e e v e n t s i s i n -

    t e r v a l a n a l y s i s ( I A ) 2 0 ] . I t u s e s m o r e i n f o r m a t i o n f r o m a

    b e h a v i o r t h a n c a n b e e x t r a c t e d p u r e l y t h r o u g h s a m p l i n g ,

    b u t i t d o e s n o t r e q u i r e s y m b o l i c e q u a t i o n s o l v i n g . I n s t e a d ,

    e v e r y b e h a v i o r i s a b l e n o t o n l y t o t e l l h o w a s a m p l e t i m e

    m a p s t o a s a m p l e v a l u e , b u t a l s o t o p r o d u c e a c o n s e r v a t i v e

    i n t e r v a l b o u n d o n t h e v a l u e s t a k e n o n b y a b e h a v i o r o v e r

    a g i v e n i n t e r v a l I . M o r e p r e c i s e l y , t h e o p e r a t i o n d u r i n g

    m a p p i n g t i m e i n t e r v a l s t o i n t e r v a l s , h a s t h e p r o p e r t y t h a t

    a t b t 2 d u r i n g b I f o r a n y - v a l u e d b e h a v i o r b , t i m e i n -

    t e r v a l I , a n d t i m e t 2 I

    A n i n t e r v a l i s r e p r e s e n t e d s i m p l y a s a p a i r o f v a l u e s :

    d a t a I v l a = a ` U p t o ` a

    F o r i n s t a n c e , \ 3 ` U p t o ` 1 0 " r e p r e s e n t s t h e i n t e r v a l 3 , 1 0 ]

    i . e . , t h e s e t o f x s u c h t h a t 3 x 1 0 . T h e i m p l e m e n t a -

    t i o n o f a b e h a v i o r t h e n c o n t a i n s b o t h t h e t i m e - s a m p l i n g a n d

    i n t e r v a l - s a m p l i n g f u n c t i o n s :

    d a t a B e h a v i o r a =

    B e h a v i o r ( T i m e - > ( a , B e h a v i o r a ) )

    ( I v l T i m e - > ( I v l a , B e h a v i o r a ) )

    A s a n e x a m p l e , t h e b e h a v i o r t i m e m a p s t i m e s a n d t i m e

    i n t e r v a l s t o t h e m s e l v e s , a n d r e t u r n s a n u n c h a n g e d b e h a v i o r .

    t i m e : : B e h a v i o r T i m e

    t i m e = B e h a v i o r ( \ t - > ( t , t i m e ) )

    ( \ i v - > ( i v , t i m e ) )

    \ L i f t i n g " o f f u n c t i o n s t o t h e l e v e l o f b e h a v i o r s w o r k s s i m -

    i l a r l y t o t h e d e s c r i p t i o n i n S e c t i o n 2 , b u t a d d i t i o n a l l y m a p s

    d o m a i n i n t e r v a l s t o r a n g e i n t e r v a l s , a n d r e - a p p l i e s t h e l i f t e d

    f u n c t i o n s t o p o s s i b l y a l t e r e d b e h a v i o r a r g u m e n t s . F o r i n -

    s t a n c e , l i f t

    2

    i s i m p l e m e n t e d a s f o l l o w s .

    l i f t 2 f f i b 1 b 2 = B e h a v i o r s a m p l e i s a m p l e

    w h e r e s a m p l e t = ( f x 1 x 2 , l i f t 2 f f i b 1 ' b 2 ' )

    w h e r e ( x 1 , b 1 ' ) = b 1 ` a t ` t

    ( x 2 , b 2 ' ) = b 2 ` a t ` t

    i s a m p l e i v = ( f i x i 1 x i 2 , l i f t 2 f f i b 1 ' b 2 ' )

    w h e r e ( x i 1 , b 1 ' ) = b 1 ` d u r i n g ` i v

    ( x i 2 , b 2 ' ) = b 2 ` d u r i n g ` i v

    T h e r e s t r i c t i o n o n b e h a v i o r s r e f e r r e d t o i n S e c t i o n 2 . 3

    t h a t m a k e s e v e n t d e t e c t i o n p o s s i b l e , i s t h a t b e h a v i o r s a r e

    c o m p o s e d o f f u n c t i o n s f f o r w h i c h a c o r r e s p o n d i n g f i s

  • 7/28/2019 FUNCTIONAL REACTIVE ANIMATION

    8/11

    8 F u n c t i o n a l R e a c t i v e A n i m a t i o n

    k n o w n i n t h e l i f t

    n

    f u n c t i o n s . ( T h e s e f i a r e c a l l e d \ i n c l u s i o n

    f u n c t i o n s . " )

    D e n i n g f u n c t i o n s ' b e h a v i o r s o v e r i n t e r v a l s i s w e l l - u n d e r -

    s t o o d 2 0 ] , a n d w e o m i t t h e d e t a i l s h e r e , o t h e r t h a n t o p o i n t

    o u t t h a t H a s k e l l ' s t y p e c l a s s e s o n c e a g a i n p r o v i d e a c o n v e -

    n i e n t n o t a t i o n f o r i n t e r v a l v e r s i o n s o f t h e s t a n d a r d a r i t h -

    m e t i c o p e r a t o r s . F o r e x a m p l e , e v a l u a t i n g

    ( 2 ` U p t o ` 4 ) + ( 1 0 ` U p t o ` 3 0 )

    y i e l d s t h e i n t e r v a l 1 2 , 3 4 ] . A l s o , a u s e f u l I A t e c h n i q u e i s t o

    e x p l o i t i n t e r v a l s o f m o n o t o n i c i t y . F o r i n s t a n c e , t h e e x p f u n c -

    t i o n i s m o n o t o n i c a l l y i n c r e a s i n g , w h i l e s i n a n d c o s f u n c t i o n s

    c h a n g e b e t w e e n m o n o t o n i c a l l y i n c r e a s i n g a n d m o n o t o n i c a l l y

    d e c r e a s i n g o n i n t e r v a l s o f w i d t h

    W e c a n a l s o a p p l y I A t o b o o l e a n b e h a v i o r s , i f w e c o n s i d e r

    b o o l e a n s t o b e o r d e r e d w i t h F a l s e < T r u e . T h e r e a r e t h r e e

    n o n e m p t y b o o l e a n i n t e r v a l s , c o r r e s p o n d i n g t o t h e b e h a v i o r

    b e i n g t r u e n e v e r , s o m e t i m e s , o r a l w a y s . F o r e x a m p l e , t h e

    i n t e r v a l f o r m o f e q u a l i t y c h e c k s w h e t h e r i t s t w o i n t e r v a l a r -

    g u m e n t s o v e r l a p . I f n o t , t h e a n s w e r i s u n i f o r m l y f a l s e . I f

    b o t h i n t e r v a l s a r e t h e s a m e s i n g l e t o n i n t e r v a l , t h e n t h e a n -

    s w e r i s u n i f o r m l y t r u e . O t h e r w i s e , I A o n l y k n o w s t h a t t h e

    a n s w e r m a y b e t r u e o r f a l s e t h r o u g h o u t t h e i n t e r v a l . S p e c i f -

    i c a l l y :

    ( l o 1 ` U p t o ` h i 1 ) = = # ( l o 2 ` U p t o ` h i 2 )

    | h i 1 < l o 2 | | h i 2 < l o 1 =

    F a l s e ` U p t o ` F a l s e

    | l o 1 = = h i 1 & & l o 2 = = h i 2 & & l o 1 = = l o 2 =

    T r u e ` U p t o ` T r u e

    | o t h e r w i s e =

    F a l s e ` U p t o ` T r u e

    S i m i l a r l y , i t i s s t r a i g h t f o r w a r d t o d e n e i n t e r v a l v e r s i o n s o f

    t h e i n e q u a l i t y o p e r a t o r s a n d l o g i c a l o p e r a t o r s ( c o n j u n c t i o n ,

    d i s j u n c t i o n , a n d n e g a t i o n ) .

    W i t h t h i s b a c k g r o u n d , d e t e c t i o n o f p r e d i c a t e e v e n t s t h r o u g h

    I A i s s t r a i g h t f o r w a r d . G i v e n a s t a r t t i m e t

    1

    , c h o o s e a t i m e

    t

    2

    > t

    1

    , a n d e v a l u a t e t h e b o o l e a n b e h a v i o r o v e r t

    1

    t

    2

    ] , y i e l d -

    i n g o n e o f t h e t h r e e b o o l e a n i n t e r v a l s l i s t e d a b o v e . I f t h e

    r e s u l t i s u n i f o r m l y f a l s e , t h e n t

    2

    i s g u a r a n t e e d t o b e a l o w e r

    b o u n d f o r t h e e v e n t t i m e . I f u n i f o r m l y t r u e , t h e n t h e e v e n t

    t i m e i s t

    1

    ( w h i c h i s t h e i n m u m o f t i m e s a f t e r t

    1

    ) . O t h -

    e r w i s e , t h e i n t e r v a l i s s p l i t i n h a l f , a n d t h e t w o h a l v e s a r e

    c o n s i d e r e d , s t a r t i n g w i t h t h e e a r l i e r h a l f ( b e c a u s e w e a r e

    l o o k i n g f o r t h e r s t t i m e t h e b o o l e a n b e h a v i o r i s t r u e ) . A t

    s o m e p o i n t i n t h i s r e c u r s i v e s e a r c h , t h e i n t e r v a l b e i n g d i -

    v i d e d b e c o m e s s m a l l e r t h a n t h e d e s i r e d d e g r e e o f t e m p o r a l

    a c c u r a c y , a t w h i c h p o i n t e v e n t d e t e c t i o n c l a i m s a s u c c e s s .

    T h i s e v e n t d e t e c t i o n a l g o r i t h m i s c a p t u r e d i n t h e d e f -

    i n i t i o n o f p r e d i c a t e g i v e n i n A p p e n d i x A . T h i s f u n c t i o n

    u s e s t h e a b o v e d i v i d e - a n d - c o n q u e r s t r a t e g y i n n a r r o w i n g

    d o w n t h e i n t e r v a l , b u t a l s o , a d o u b l e - a n d - c o n q u e r s t r a t e g y

    i n s e a r c h i n g t h e r i g h t - u n b o u n d e d t i m e i n t e r v a l . T h e i d e a

    t h a t i f t h e e v e n t w a s n o t f o u n d i n t h e n e x t w s e c o n d s , t h e n

    p e r h a p s w e s h o u l d l o o k a b i t f u r t h e r i n t o t h e f u t u r e | 2 w

    s e c o n d s | t h e n e x t t i m e a r o u n d .

    I t i s a l s o p o s s i b l e t o a p p l y I A t o p o s i t i o n a l u s e r i n p u t .

    T h e i d e a i s t o p l a c e b o u n d s o n t h e r a t e o r a c c e l e r a t i o n o f

    t h e p o s i t i o n a l i n p u t , a n d t h e n m a k e a w o r s t - c a s e a n a l y s i s

    b a s e d o n t h e s e b o u n d s . W e h a v e n o t y e t i m p l e m e n t e d t h i s

    i d e a .

    5 R e l a t e d W o r k

    H e n d e r s o n ' s f u n c t i o n a l g e o m e t r y 1 2 ] w a s o n e o f t h e r s t

    p u r e l y d e c l a r a t i v e a p p r o a c h e s t o g r a p h i c s , a l t h o u g h i t d o e s

    n o t d e a l w i t h a n i m a t i o n o r r e a c t i v i t y . S e v e r a l o t h e r r e -

    s e a r c h e r s h a v e a l s o f o u n d d e c l a r a t i v e l a n g u a g e s w e l l - s u i t e d

    f o r m o d e l i n g p i c t u r e s . E x a m p l e s i n c l u d e 1 5 , 2 3 , 3 , 1 0 ] .

    A r y a u s e d a l a z y f u n c t i o n a l l a n g u a g e t o m o d e l 2 D a n -

    i m a t i o n a s l a z y l i s t s o f p i c t u r e s 1 , 2 ] , c o n s t r u c t e d u s i n g

    l i s t c o m b i n a t o r s . W h i l e t h i s w o r k w a s q u i t e e l e g a n t , t h e

    u s e o f l i s t s i m p l i e s a d i s c r e t e m o d e l o f t i m e , w h i c h i s s o m e -

    w h a t u n n a t u r a l . P r o b l e m s w i t h a d i s c r e t e m o d e l i n c l u d e t h e

    f a c t t h a t t i m e - s c a l i n g b e c o m e s d i c u l t , r e q u i r i n g t h r o w i n g

    a w a y f r a m e s o r i n t e r p o l a t i o n b e t w e e n f r a m e s , a n d r e n d e r i n g

    a n a n i m a t i o n r e q u i r e s t h a t t h e f r a m e r a t e m a t c h t h e d i s -

    c r e t e r e p r e s e n t a t i o n ; i f t h e f r a m e s c a n n o t b e g e n e r a t e d f a s t

    e n o u g h , t h e p e r c e i v e d a n i m a t i o n w i l l s l o w d o w n . O u r c o n -

    t i n u o u s m o d e l a v o i d s t h e s e p r o b l e m s , a n d h a s t h e p l e a s a n t

    p r o p e r t y t h a t a n i m a t i o n s r u n a t p r e c i s e l y t h e s a m e s p e e d ,

    r e g a r d l e s s o f h o w f a s t t h e u n d e r l y i n g h a r d w a r e i s ( s l o w e r

    h a r d w a r e w i l l g e n e r a t e l e s s s m o o t h a n i m a t i o n s , b u t t h e y

    w i l l s t i l l r u n a t t h e s a m e r a t e ) .

    T h e T B A G s y s t e m m o d e l e d 3 D a n i m a t i o n s a s f u n c t i o n s

    o v e r c o n t i n u o u s t i m e , u s i n g a \ b e h a v i o r " t y p e f a m i l y 8 , 1 9 ] .

    T h e s e b e h a v i o r s a r e b u i l t u p v i a c o m b i n a t o r s t h a t a r e a u t o -

    m a t i c a l l y i n v o k e d d u r i n g s o l u t i o n o f h i g h l e v e l c o n s t r a i n t s .

    B e c a u s e i t u s e d c o n t i n u o u s t i m e , T B A G w a s a b l e t o s u p p o r t

    d e r i v a t i v e s a n d i n t e g r a l s . I t a l s o u s e d t h e i d e a o f e l e v a t i n g

    f u n c t i o n s o n s t a t i c v a l u e s i n t o f u n c t i o n s o n b e h a v i o r s , w h i c h

    w e a d o p t e d . U n l i k e o u r a p p r o a c h , h o w e v e r , r e a c t i v i t y w a s

    h a n d l e d i m p e r a t i v e l y , t h r o u g h c o n s t r a i n t a s s e r t i o n a n d r e -

    t r a c t i o n , p e r f o r m e d b y a n a p p l i c a t i o n p r o g r a m .

    C M L ( C o n c u r r e n t M L ) f o r m a l i z e d s y n c h r o n o u s o p e r a -

    t i o n s a s r s t - c l a s s , p u r e l y f u n c t i o n a l , v a l u e s c a l l e d \ e v e n t s "

    1 8 ] . O u r e v e n t c o m b i n a t o r s \ | " a n d \ = = > " c o r r e s p o n d

    t o C M L ' s c h o o s e a n d w r a p f u n c t i o n s . T h e r e a r e s u b s t a n t i a l

    d i e r e n c e s , h o w e v e r , b e t w e e n t h e m e a n i n g g i v e n t o \ e v e n t s "

    i n t h e s e t w o a p p r o a c h e s . I n C M L , e v e n t s a r e u l t i m a t e l y u s e d

    t o p e r f o r m a n a c t i o n , s u c h a s r e a d i n g i n p u t f r o m o r w r i t i n g

    o u t p u t t o a l e o r a n o t h e r p r o c e s s . I n c o n t r a s t , o u r e v e n t s

    a r e u s e d p u r e l y f o r t h e v a l u e s t h e y g e n e r a t e . T h e s e v a l u e s

    o f t e n t u r n o u t t o b e b e h a v i o r s , a l t h o u g h t h e y c a n a l s o b e

    n e w e v e n t s , t u p l e s , f u n c t i o n s , e t c .

    C o n c u r r e n t H a s k e l l 1 4 ] e x t e n d s t h e p u r e l a z y f u n c t i o n a l

    p r o g r a m m i n g l a n g u a g e H a s k e l l w i t h a s m a l l s e t o f p r i m i t i v e s

    f o r e x p l i c i t c o n c u r r e n c y , d e s i g n e d a r o u n d H a s k e l l ' s m o n a d i c

    s u p p o r t f o r I / O . W h i l e t h i s s y s t e m i s p u r e l y f u n c t i o n a l i n

    t h e t e c h n i c a l s e n s e , i t s s e m a n t i c s h a s a s t r o n g l y i m p e r a t i v e

    f e e l . T h a t i s , e x p r e s s i o n s a r e e v a l u a t e d w i t h o u t s i d e - e e c t s

    t o y i e l d c o n c u r r e n t , i m p e r a t i v e c o m p u t a t i o n s , w h i c h a r e e x -

    e c u t e d t o p e r f o r m t h e i m p l i e d s i d e - e e c t s . I n c o n t r a s t , m o d -

    e l i n g e n t i r e b e h a v i o r s a s i m p l i c i t l y c o n c u r r e n t f u n c t i o n s o f

    c o n t i n u o u s t i m e y i e l d s w h a t w e c o n s i d e r a m o r e d e c l a r a t i v e

    f e e l .

    H a s k o r e 1 3 ] i s a p u r e l y f u n c t i o n a l a p p r o a c h t o c o n s t r u c t -

    i n g , a n a l y z i n g , a n d p e r f o r m i n g c o m p u t e r m u s i c , w h i c h h a s

    m u c h i n c o m m o n w i t h H e n d e r s o n ' s f u n c t i o n a l g e o m e t r y , e v e n

    t h o u g h i t i s f o r a c o m p l e t e l y d i e r e n t m e d i u m . T h e H a s k o r e

    w o r k a l s o p o i n t s o u t u s e f u l a l g e b r a i c p r o p e r t i e s t h a t s u c h

    d e c l a r a t i v e s y s t e m s p o s s e s s . O t h e r c o m p u t e r m u s i c l a n -

    g u a g e s w o r t h m e n t i o n i n g i n c l u d e C a n o n 5 ] , F u g u e 6 ] , a n d a

    l a n g u a g e b e i n g d e v e l o p e d a t G R A M E 1 6 ] , o n l y t h e l a t t e r o f

    w h i c h i s p u r e l y d e c l a r a t i v e . F u g u e a l s o h i g h l i g h t s t h e u t i l -

    i t y o f l a z y e v a l u a t i o n i n c e r t a i n c o n t e x t s , b u t e x t r a e o r t i s

    n e e d e d t o m a k e t h i s w o r k i n i t s L i s p - b a s e d c o n t e x t , w h e r e a s

  • 7/28/2019 FUNCTIONAL REACTIVE ANIMATION

    9/11

    C o n a l E l l i o t t a n d P a u l H u d a k 9

    i n a n o n - s t r i c t l a n g u a g e s u c h a s H a s k e l l i t e s s e n t i a l l y c o m e s

    \ f o r f r e e . "

    D i r e c t X A n i m a t i o n i s a l i b r a r y d e v e l o p e d a t M i c r o s o f t t o

    s u p p o r t i n t e r a c t i v e a n i m a t i o n . F r a n a n d D i r e c t X A n i m a t i o n

    b o t h g r e w o u t o f t h e i d e a s i n a n e a r l i e r d e s i g n c a l l e d A c -

    t i v e V R M L 7 ] . D i r e c t X A n i m a t i o n i s u s e d f r o m m o r e m a i n -

    s t r e a m i m p e r a t i v e l a n g u a g e s , a n d s o m i x e s t h e f u n c t i o n a l

    a n d i m p e r a t i v e a p p r o a c h e s .

    T h e r e a r e a l s o s e v e r a l l a n g u a g e s d e s i g n e d a r o u n d a s y n -

    c h r o n o u s d a t a - o w n o t i o n o f c o m p u t a t i o n . T h e g e n e r a l -

    p u r p o s e f u n c t i o n a l l a n g u a g e L u c i d 2 1 ] i s a n e x a m p l e o f t h i s

    s t y l e o f l a n g u a g e , b u t m o r e i m p o r t a n t l y a r e t h e l a n g u a g e s

    S i g n a l 1 1 ] a n d L u s t r e 4 ] , w h i c h w e r e s p e c i c a l l y d e s i g n e d

    f o r c o n t r o l o f r e a l - t i m e s y s t e m s .

    I n S i g n a l , t h e m o s t f u n d a m e n t a l i d e a i s t h a t o f a s i g n a l a

    t i m e - o r d e r e d s e q u e n c e o f v a l u e s . U n l i k e F r a n , h o w e v e r , t i m e

    i s n o t a v a l u e , b u t r a t h e r i s i m p l i c i t i n t h e o r d e r i n g o f v a l u e s

    i n a s i g n a l . B y i t s v e r y n a t u r e t i m e i s t h u s d i s c r e t e r a t h e r

    t h a n c o n t i n u o u s , w i t h e m p h a s i s o n t h e r e l a t i v e o r d e r i n g o f

    v a l u e s i n a d a t a - o w - l i k e f r a m e w o r k . T h e d e s i g n e r s o f S i g n a l

    h a v e a l s o d e v e l o p e d a c l o c k c a l c u l u s w i t h w h i c h o n e c a n

    r e a s o n a b o u t S i g n a l p r o g r a m s . L u s t r e i s a l a n g u a g e s i m i l a r

    t o S i g n a l , r o o t e d a g a i n i n t h e n o t i o n o f a s e q u e n c e , a n d

    o w i n g m u c h o f i t s n a t u r e t o L u c i d .

    6 C o n c l u s i o n s

    W r i t i n g r i c h , r e a c t i v e a n i m a t i o n s i s a p o t e n t i a l l y t e d i o u s a n d

    e r r o r - p r o n e t a s k u s i n g c o n v e n t i o n a l p r o g r a m m i n g m e t h o d -

    o l o g i e s , p r i m a r i l y b e c a u s e o f t h e a t t e n t i o n n e e d e d f o r i s s u e s

    o f p r e s e n t a t i o n . W e h a v e d e s c r i b e d a s y s t e m c a l l e d F r a n t h a t

    r e m e d i e s t h i s p r o b l e m b y c o n c e n t r a t i n g o n i s s u e s o f m o d e l -

    i n g , l e a v i n g p r e s e n t a t i o n d e t a i l s t o t h e u n d e r l y i n g i m p l e m e n -

    t a t i o n . W e h a v e g i v e n a f o r m a l s e m a n t i c s a n d d e s c r i b e d a n

    i m p l e m e n t a t i o n i n H a s k e l l , w h i c h r u n s a c c e p t a b l y f a s t u s i n g

    t h e H u g s i n t e r p r e t e r . F u t u r e w o r k l i e s i n i m p r o v i n g p e r f o r -

    m a n c e t h r o u g h t h e u s e o f s t a n d a r d c o m p i l a t i o n m e t h o d s a s

    w e l l a s d o m a i n - s p e c i c o p t i m i z a t i o n t e c h n i q u e s ; e x t e n d i n g

    t h e i d e a s t o 3 D g r a p h i c s a n d s o u n d ; a n d i n v e s t i g a t i n g o t h e r

    a p p l i c a t i o n s o f t h i s m o d e l i n g a p p r o a c h t o s o f t w a r e d e v e l o p -

    m e n t .

    O u r i m p l e m e n t a t i o n o f F r a n c u r r e n t l y r u n s u n d e r t h e

    W i n d o w s ' 9 5 / N T v e r s i o n o f H u g s , a H a s k e l l i m p l e m e n t a t i o n

    b e i n g d e v e l o p e d c o l l a b o r a t i v e l y b y Y a l e , N o t t i n g h a m , a n d

    G l a s g o w U n i v e r s i t i e s . I t i s c o n v e n i e n t f o r d e v e l o p i n g a n i m a -

    t i o n p r o g r a m s , b e c a u s e o f q u i c k t u r n - a r o u n d f r o m m o d i c a -

    t i o n t o e x e c u t i o n , a n d i t r u n s w i t h a c c e p t a b l e p e r f o r m a n c e ,

    f o r a b y t e - c o d e i n t e r p r e t e r . W e e x p e c t m a r k e d p e r f o r m a n c e

    i m p r o v e m e n t o n c e F r a n i s r u n n i n g u n d e r G H C ( t h e G l a s g o w

    H a s k e l l C o m p i l e r ) . E v e n b e t t e r , w h e n t h e s e t w o H a s k e l l i m -

    p l e m e n t a t i o n s a r e i n t e g r a t e d , F r a n p r o g r a m s w i l l b e c o n v e -

    n i e n t t o d e v e l o p a n d r u n f a s t . T h e H u g s i m p l e m e n t a t i o n ,

    w h i c h i n c l u d e s t h e e n t i r e F r a n s y s t e m , m a y b e r e t r i e v e d f r o m

    h t t p : / / w w w . h a s k e l l . o r g / h u g s . A l t h o u g h t h i s p a p e r w i l l

    g i v e t h e r e a d e r a n u n d e r s t a n d i n g o f t h e t e c h n i c a l i d e a s u n -

    d e r p i n n i n g F r a n , i t s p o w e r a s a n a n i m a t i o n e n g i n e ( a n d h o w

    m u c h f u n i t i s t o p l a y w i t h ! ) c a n o n l y b e a p p r e c i a t e d b y u s -

    i n g i t .

    A c k n o w l e d g e m e n t s W e w i s h t o t h a n k J i m K a j i y a

    f o r e a r l y d i s c u s s i o n s t h a t s t i m u l a t e d o u r i d e a s f o r m o d e l i n g

    r e a c t i v i t y ; T o d d K n o b l o c k w h o h e l p e d e x p l o r e t h e s e i d e a s a s

    w e l l a s m a n y o t h e r v a r i a t i o n s ; J o h n P e t e r s o n a n d A l a s t a i r

    R e i d f o r e x p e r i m e n t a l i m p l e m e n t a t i o n s ; P h i l i p W a d l e r f o r

    t h o u g h t f u l c o m m e n t s t h a t r e s u l t e d i n s i m p l i f y i n g t h e s e m a n -

    t i c m o d e l ; a n d S i g b j r n F i n n e f o r h e l p i n g w i t h t h e i m p l e -

    m e n t a t i o n o f F r a n . W e a l s o w i s h t o a c k n o w l e d g e f u n d i n g o f

    t h i s p r o j e c t f r o m M i c r o s o f t R e s e a r c h , D A R P A / A F O S R u n -

    d e r g r a n t n u m b e r F 3 0 6 0 2 - 9 6 - 2 - 0 2 3 2 , a n d N S F u n d e r g r a n t

    n u m b e r C C R - 9 6 3 3 3 9 0 .

  • 7/28/2019 FUNCTIONAL REACTIVE ANIMATION

    10/11

    1 0 F u n c t i o n a l R e a c t i v e A n i m a t i o n

    R e f e r e n c e s

    1 ] K a v i A r y a . A f u n c t i o n a l a p p r o a c h t o a n i m a t i o n . C o m -

    p u t e r G r a p h i c s F o r u m , 5 ( 4 ) : 2 9 7 { 3 1 1 , D e c e m b e r 1 9 8 6 .

    2 ] K a v i A r y a . A f u n c t i o n a l a n i m a t i o n s t a r t e r - k i t . J o u r n a l

    o f F u n c t i o n a l P r o g r a m m i n g , 4 ( 1 ) : 1 { 1 8 , J a n u a r y 1 9 9 4 .

    3 ] J o e l F . B a r t l e t t . D o n ' t d g e t w i t h w i d g e t s , d r a w ! T e c h -

    n i c a l R e p o r t 6 , D E C W e s t e r n D i g i t a l L a b o r a t o r y , 2 5 0

    U n i v e r s i t y A v e n u e , P a l o A l t o , C a l i f o r n i a 9 4 3 0 1 , U S ,

    M a y 1 9 9 1 .

    4 ] P . C a s p i , N . H a l b w a c h s , D . P i l a u d , a n d J . A . P l a i c e .

    L u s t r e : A d e c l a r a t i v e l a n g u a g e f o r p r o g r a m m i n g s y n -

    c h r o n o u s s y s t e m s . I n 1 4 t h A C M S y m p . o n P r i n c i p l e s

    o f P r o g r a m m i n g L a n g u a g e s , J a n u a r y 1 9 8 7 .

    5 ] R . B . D a n n e n b e r g . T h e C a n o n s c o r e l a n g u a g e . C o m -

    p u t e r M u s i c J o u r n a l , 1 3 ( 1 ) : 4 7 { 5 6 , 1 9 8 9 .

    6 ] R . B . D a n n e n b e r g , C . L . F r a l e y , a n d P . V e l i k o n j a . A

    f u n c t i o n a l l a n g u a g e f o r s o u n d s y n t h e s i s w i t h b e h a v i o r a l

    a b s t r a c t i o n a n d l a z y e v a l u a t i o n . I n D e n i s B a g g i , e d i t o r ,

    C o m p u t e r G e n e r a t e d M u s i c . I E E E C o m p u t e r S o c i e t y

    P r e s s , 1 9 9 2 .

    7 ] C o n a l E l l i o t t . A b r i e f i n t r o d u c t i o n t o A c t i v e V R M L .

    T e c h n i c a l R e p o r t M S R - T R - 9 6 - 0 5 , M i c r o s o f t R e -

    s e a r c h , 1 9 9 6 . f t p : / / f t p . r e s e a r c h . m i c r o s o f t . c o m /

    p u b / t e c h - r e p o r t s / W i n t e r 9 5 - 9 6 / t r - 9 6 - 0 5 . p s

    8 ] C o n a l E l l i o t t , G r e g S c h e c h t e r , R i c k y Y e u n g , a n d S a l i m

    A b i - E z z i . T B A G : A h i g h l e v e l f r a m e w o r k f o r i n t e r a c -

    t i v e , a n i m a t e d 3 D g r a p h i c s a p p l i c a t i o n s . I n A n d r e w

    G l a s s n e r , e d i t o r , P r o c e e d i n g s o f S I G G R A P H ' 9 4 ( O r -

    l a n d o , F l o r i d a ) , p a g e s 4 2 1 { 4 3 4 . A C M P r e s s , J u l y 1 9 9 4 .

    9 ] J o h n P e t e r s o n e t . a l . H a s k e l l 1 . 3 : A n o n -

    s t r i c t , p u r e l y f u n c t i o n a l l a n g u a g e . T e c h n i c a l R e p o r t

    Y A L E U / D C S / R R - 1 1 0 6 , D e p a r t m e n t o f C o m p u t e r S c i -

    e n c e , Y a l e U n i v e r s i t y , M a y 1 9 9 6 . W W W v e r s i o n a t

    h t t p : / / h a s k e l l . c s . y a l e . e d u / h a s k e l l - r e p o r t

    1 0 ] S i g b j o r n F i n n e a n d S i m o n P e y t o n J o n e s . P i c t u r e s : A

    s i m p l e s t r u c t u r e d g r a p h i c s m o d e l . I n G l a s g o w F u n c -

    t i o n a l P r o g r a m m i n g W o r k s h o p , U l l a p o o l , J u l y 1 9 9 5 .

    1 1 ] T h i e r r y G a u t i e r , P a u l L e G u e r n i c , a n d L o i c B e s n a r d .

    S i g n a l : A d e c l a r a t i v e l a n g u a g e f o r s y n c h r o n o u s p r o -

    g r a m m i n g o f r e a l - t i m e s y s t e m s . I n G i l l e s K a h n , e d i -

    t o r , F u n c t i o n a l P r o g r a m m i n g L a n g u a g e s a n d C o m p u t e r

    A r c h i t e c t u r e , v o l u m e 2 7 4 o f L e c t N o t e s i n C o m p u t e r

    S c i e n c e , e d i t e d b y G . G o o s a n d J . H a r t m a n i s , p a g e s

    2 5 7 { 2 7 7 . S p r i n g e r - V e r l a g , 1 9 8 7 .

    1 2 ] P e t e r H e n d e r s o n . F u n c t i o n a l g e o m e t r y . I n A C M S y m -

    p o s i u m o n L I S P a n d F u n c t i o n a l P r o g r a m m i n g , p a g e s

    1 7 9 { 1 8 7 , 1 9 8 2 .

    1 3 ] P a u l H u d a k , T o m M a k u c e v i c h , S y a m G a d d e , a n d

    B o W h o n g . H a s k o r e m u s i c n o t a t i o n { a n a l g e b r a o f

    m u s i c , S e p t e m b e r 1 9 9 4 . T o a p p e a r i n t h e J o u r n a l

    o f F u n c t i o n a l P r o g r a m m i n g ; p r e l i m i n a r y v e r s i o n a v a i l -

    a b l e v i a f t p : / / n e b u l a . s y s t e m s z . c s . y a l e . e d u / p u b /

    y a l e - f p / p a p e r s / h a s k o r e / h m n - l h s . p s

    1 4 ] S i m o n P e y t o n J o n e s , A n d r e w G o r d o n , a n d S i g b j o r n

    F i n n e . C o n c u r r e n t H a s k e l l . I n A C M S y m p o s i u m o n t h e

    P r i n c i p l e s o f P r o g r a m m i n g L a n g u a g e s , S t . P e t e r s b u r g

    B e a c h , F l o r i d a , J a n u a r y 1 9 9 6 .

    1 5 ] P e t e r L u c a s a n d S t e p h e n N . Z i l l e s . G r a p h i c s i n a n a p -

    p l i c a t i v e c o n t e x t . T e c h n i c a l r e p o r t , I B M A l m a d e n R e -

    s e a r c h C e n t e r , 6 5 0 H a r r y R o a d , S a n J o s e , C A 9 5 1 2 0 -

    6 0 9 9 , J u l y 8 1 9 8 7 .

    1 6 ] O . O r l a r e y , D . F o b e r , S . L e t z , a n d M . B i l t o n . L a m b d a

    c a l c u l u s a n d m u s i c c a l c u l i . I n P r o c e e d i n g s o f I n t e r -

    n a t i o n a l C o m p u t e r M u s i c C o n f e r e n c e . I n t ' l C o m p u t e r

    M u s i c A s s o c i a t i o n , 1 9 9 4 .

    1 7 ] W i l l i a m H . P r e s s , S a u l A . T e u k o l s k y , W i l l i a m T . V e t -

    t e r l i n g , a n d B r i a n P . F l a n n e r y . N u m e r i c a l R e c i p e s i n C :

    T h e A r t o f S c i e n t i c C o m p u t i n g ( 2 n d e d . ) . C a m b r i d g e

    U n i v e r s i t y P r e s s , C a m b r i d g e , 1 9 9 2 . I S B N 0 - 5 2 1 - 4 3 1 0 8 -

    5

    1 8 ] J o h n H . R e p p y . C M L : A h i g h e r - o r d e r c o n c u r r e n t l a n -

    g u a g e . P r o c e e d i n g s o f t h e A C M S I G P L A N ' 9 1 C o n f e r -

    e n c e o n P r o g r a m m i n g L a n g u a g e D e s i g n a n d I m p l e m e n -

    t a t i o n , p a g e s 2 9 3 { 3 0 5 , 1 9 9 1 .

    1 9 ] G r e g S c h e c h t e r , C o n a l E l l i o t t , R i c k y Y e u n g , a n d S a l i m

    A b i - E z z i . F u n c t i o n a l 3 D g r a p h i c s i n C + + - w i t h

    a n o b j e c t - o r i e n t e d , m u l t i p l e d i s p a t c h i n g i m p l e m e n t a -

    t i o n . I n P r o c e e d i n g s o f t h e 1 9 9 4 E u r o g r a p h i c s O b j e c t -

    O r i e n t e d G r a p h i c s W o r k s h o p . E u r o g r a p h i c s , S p r i n g e r

    V e r l a g , 1 9 9 4 .

    2 0 ] J o h n M . S n y d e r . I n t e r v a l a n a l y s i s f o r c o m p u t e r g r a p h -

    i c s . I n E d w i n E . C a t m u l l , e d i t o r , C o m p u t e r G r a p h i c s

    ( S I G G R A P H ' 9 2 P r o c e e d i n g s ) , v o l u m e 2 6 , p a g e s 1 2 1 {

    1 3 0 , J u l y 1 9 9 2 .

    2 1 ] W . W . W a d g e a n d E . A . A s h c r o f t . L u c i d , t h e D a t a o w

    P r o g r a m m i n g L a n g u a g e . A c a d e m i c P r e s s U . K . , 1 9 8 5 .

    2 2 ] P h i l i p W a d l e r . C o m p r e h e n d i n g m o n a d s . I n P r o c e e d i n g s

    o f S y m p o s i u m o n L i s p a n d F u n c t i o n a l P r o g r a m m i n g

    p a g e s 6 1 { 7 8 , N i c e , F r a n c e , J u n e 1 9 9 0 . A C M .

    2 3 ] S . N . Z i l l e s , P . L u c a s , T . M . L i n d e n , J . B . L o t s p i e c h , a n d

    A . R . H a r b u r y . T h e E s c h e r d o c u m e n t i m a g i n g m o d e l . I n

    P r o c e e d i n g s o f t h e A C M C o n f e r e n c e o n D o c u m e n t P r o -

    c e s s i n g S y s t e m s ( S a n t a F e , N e w M e x i c o ) , p a g e s 1 5 9 {

    1 6 8 , D e c e m b e r 5 { 9 1 9 8 8 .

  • 7/28/2019 FUNCTIONAL REACTIVE ANIMATION

    11/11

    C o n a l E l l i o t t a n d P a u l H u d a k 1 1

    A p p e n d i x A : H a s k e l l C o d e f o r P r e d i c a t e E v e n t D e t e c t i o n

    t y p e B o o l B = B e h a v i o r B o o l

    t y p e T i m e I = I v l T i m e

    p r e d i c a t e : : B o o l B - > T i m e - > E v e n t ( )

    p r e d i c a t e c o n d t 0 = p r e d A f t e r c o n d t 0 1

    w h e r e

    p r e d A f t e r c o n d t 0 w i d t h =

    p r e d I n c o n d ( t 0 ` U p t o ` t 0 + w i d t h ) ( \ c o n d ' - >

    p r e d A f t e r c o n d ' ( t 0 + w i d t h ) ( 2 * w i d t h ) )

    p r e d I n : : B o o l B - > T i m e I - > ( B o o l B - > E v e n t ( ) ) - > E v e n t ( )

    p r e d I n c o n d i v t r y N e x t =

    c a s e v a l I o f

    F a l s e ` U p t o ` F a l s e - > - - n o o c c u r r e n c e

    - - N o t e l o w e r b o u n d a n d t r y t h e n e x t c o n d i t i o n .

    t i m e I s A t L e a s t h i ( t r y N e x t c o n d ' )

    F a l s e ` U p t o ` T r u e - > - - f o u n d a t l e a s t o n e

    i f h i - m i d < = e v e n t E p s i l o n

    t h e n c o n s t E v m i d ( )

    e l s e p r e d I n c o n d ( l o ` U p t o ` m i d ) ( \ m i d C o n d - >

    p r e d I n m i d C o n d ( m i d ` U p t o ` h i ) t r y N e x t )

    T r u e ` U p t o ` T r u e - > c o n s t E v l o ( ) - - f o u n d e x a c t l y o n e

    w h e r e

    l o ` U p t o ` h i = i v

    m i d = ( h i + l o ) / 2

    i v L e f t T r i m m e d = l o + l e f t S k i p W i d t h ` U p t o ` h i

    ( v a l I , c o n d ' ) = c o n d ` d u r i n g ` i v L e f t T r i m m e d

    - - I n t e r v a l s i z e l i m i t f o r t e m p o r a l s u b d i v i s i o n

    e v e n t E p s i l o n = 0 . 0 0 1 : : T i m e

    - - S i m u l a t e l e f t - o p e n - n e s s v i a a s m a l l i n c r e m e n t

    l e f t S k i p W i d t h = 0 . 0 0 0 1 : : T i m e