$ od -c -N 50000 [eris]<Lisp>KOTO>LISPUSERS>TRAJECTORY-FOLLOWER.TEDIT!1 0000000 X E R O X \t T R A J E C T O R Y 0000020 - F O L L O W E R \r 2 \r \r 4 \r \r 0000040 1 \r \r T r a j e c t o r y - F o 0000060 l l o w e r \r 1 \r \r 4 \r \r B y : 0000100 D . A u s t i n H e n d 0000120 e r s o n , J r . ( A H e n 0000140 d e r s o n . p a @ X e r o x . 0000160 c o m ) \r \r I N T R O D U C T I 0000200 O N \r T r a j e c t o r y - F o 0000220 l l o w e r p r o v i d e s 0000240 a f u n c t i o n w h i c h 0000260 c a u s e s a " s n a k e 0000300 " t o c r a w l a l o n g 0000320 a t r a j e c t o r y . 0000340 C o m m e n t s o n b o t h 0000360 i n t e r f a c e a n d f 0000400 u n c t i o n a l i t y a r e 0000420 w e l c o m e d . \r F U N C 0000440 T I O N S \r ( T R A J E C T O R 0000460 Y . F O L L O W K N O T S 0000500 C L O S E D N D E L A Y 0000520 B I T M A P W I N D O W ) \t [ 0000540 F u n c t i o n ] \r T h e t r 0000560 a j e c t o r y i s s p e c 0000600 i f i e d b y K N O T S ( 0000620 a s e t o f k n o t s ) 0000640 a n d C L O S E D ( a f l 0000660 a g i n d i c a t i n g w h 0000700 e t h e r i t i s a n o 0000720 p e n o r c l o s e d c u 0000740 r v e ) . N i s t h e l 0000760 e n g t h o f t h e s n a 0001000 k e i n p o i n t s a l o 0001020 n g t h e c u r v e . D E 0001040 L A Y i s t h e t i m e 0001060 ( i n m i l l i s e c o n d s 0001100 ) b e t w e e n e a c h m 0001120 o v e a l o n g t h e c u 0001140 r v e ; D E L A Y = 0 o 0001160 r N I L m e a n s g o a 0001200 s f a s t a s y o u c a 0001220 n . B I T M A P i s t h e 0001240 b r u s h t o b e u s e 0001260 d a t e a c h p o i n t 0001300 i n c r e a t i n g t h e 0001320 s n a k e . W I N D O W i s 0001340 t h e w i n d o w i n w 0001360 h o s e c o o r d i n a t e 0001400 s y s t e m t h e k n o t s 0001420 a r e g i v e n a n d i 0001440 n w h i c h t h e s n a k 0001460 e i s t o b e d r a w n 0001500 ; i f N I L , t h e n t 0001520 h e S C R E E N b i t m a p 0001540 i s u s e d . T h e s n 0001560 a k e i s m o v e d b y 0001600 I N V E R T i n g t h e b i 0001620 t m a p a t t h e p o i n 0001640 t s a l o n g t h e c u r 0001660 v e , a n d t h e n I N V 0001700 E R T i n g t h e b i t m a 0001720 p b a c k o u t a g a i n 0001740 . \r E x a m p l e s \r A d e m 0001760 o n s t r a t i o n f u n c t 0002000 i o n i s a l s o p r o v 0002020 i d e d w i t h t h e p a 0002040 c k a g e : \r ( T R A J E C T O 0002060 R Y . F O L L O W E R . T E S T 0002100 ) \t [ F u n c t i o n ] \r I n t 0002120 e r a c t s w i t h t h e 0002140 u s e r t h r o u g h p r o 0002160 m p t i n g i n t h e p r 0002200 o m p t w i n d o w t o g a 0002220 t h e r u p a r g u m e n t 0002240 s f o r T R A J E C T O R Y 0002260 . F O L L O W a n d t h e n 0002300 c a r r i e s i t o u t . 0002320 C l o s e d c u r v e s a 0002340 r e s n a k e d a r o u n d 0002360 r e p e a t e d l y u n t i 0002400 l t h e l e f t s h i f t 0002420 k e y i s f o u n d d e 0002440 p r e s s e d w h e n i t 0002460 r e a c h e s t h e c u r v 0002500 e ' s s t a r t i n g p o i 0002520 n t . \r I n t e r n a l F u n 0002540 c t i o n s \r T h e i n t e r 0002560 n a l f u n c t i o n s u s 0002600 e d b y t h i s p a c k a 0002620 g e a r e a l s o a v a i 0002640 l a b l e f o r u s e . 0002660 T h e y a r e : \r ( T R A J E 0002700 C T O R Y . F O L L O W E R . S 0002720 E T U P W I N D O W N D E 0002740 L A Y B I T M A P ) \t [ F u n 0002760 c t i o n ] \r I n i t i a l i z 0003000 e s d r a w i n g v a r i a 0003020 b l e s . \r ( T R A J E C T O R 0003040 Y . F O L L O W E R . P O I N T 0003060 X Y W I N D O W ) \t [ F u 0003100 n c t i o n ] \r D e f i n e s 0003120 t h e n e x t p o i n t o 0003140 n t h e c u r v e . N o 0003160 t e t h a t t h e a r g u 0003200 m e n t s t r u c t u r e 0003220 o f t h i s f u n c t i o n 0003240 i s a p p r o p r i a t e 0003260 f o r u s e a s a B R U 0003300 S H w i t h t h e c u r v 0003320 e d r a w i n g f u n c t i 0003340 o n s D R A W C U R V E , D 0003360 R A W C I R C L E , a n d D 0003400 R A W E L L I P S E . ( F o 0003420 r a n e x a m p l e , s e 0003440 e t h e d e m o n s t r a t 0003460 i o n f u n c t i o n T R A 0003500 J E C T O R Y . F O L L O W E R 0003520 . T E S T ) \r ( T R A J E C T O 0003540 R Y . F O L L O W E R . W R A P 0003560 U P ) \t [ F u n c t i o n ] \r F 0003600 i n i s h e s t h e j o b 0003620 a f t e r a l l t h e p o 0003640 i n t s h a v e b e e n d 0003660 e f i n e d . \r \r \0 \0 \0 \0 \0 003 0003700 ( L I S T ( ( P A G E N I L 0003720 ( F O L I O I N F O ( A R A 0003740 B I C ) S T A R T I N G P A G 0003760 E # 1 ) ( 0 0 6 1 2 7 0004000 9 2 ) ( ( F O L I O N I L 0004020 ( P A R A L O O K S ( Q U A D 0004040 C E N T E R E D ) C H A R L 0004060 O O K S ( S U P E R S C R I P 0004100 T 0 S I Z E 1 0 F A M I 0004120 L Y M O D E R N O V E R L I 0004140 N E O F F S T R I K E O U T 0004160 O F F U N D E R L I N E O 0004200 F F S L O P E R E G U L A R 0004220 W E I G H T M E D I U M ) 0004240 F O R M A T I N F O ( A R A B 0004260 I C ) ) ( 1 7 4 3 6 2 8 8 0004300 3 6 ) N I L ) ( H E A D I 0004320 N G N I L ( H E A D I N G T 0004340 Y P E R U N N I N G H E A D ) 0004360 ( 8 4 7 4 4 4 4 4 3 6 ) 0004400 N I L ) ( T E X T N I L 0004420 N I L ( 8 4 9 6 4 5 6 6 0004440 0 0 ) N I L ) ) ) ( P A G E 0004460 N I L N I L ( 0 0 6 1 0004500 2 7 9 2 ) ( ( F O L I O N 0004520 I L ( P A R A L O O K S ( Q 0004540 U A D C E N T E R E D ) C H 0004560 A R L O O K S ( S U P E R S C 0004600 R I P T 0 S I Z E 1 0 F 0004620 A M I L Y M O D E R N O V E 0004640 R L I N E O F F S T R I K E 0004660 O U T O F F U N D E R L I N 0004700 E O F F S L O P E R E G U 0004720 L A R W E I G H T M E D I U 0004740 M ) ) ( 2 8 2 4 2 7 2 3 0004760 6 ) N I L ) ( H E A D I N G 0005000 N I L ( H E A D I N G T Y P 0005020 E R U N N I N G H E A D ) ( 0005040 8 4 7 4 4 4 4 4 3 6 ) N 0005060 I L ) ( T E X T N I L N I 0005100 L ( 8 4 9 6 4 5 6 6 0 0 0005120 ) N I L ) ) ) ( P A G E N 0005140 I L N I L ( 0 0 6 1 2 0005160 7 9 2 ) ( ( F O L I O N I L 0005200 ( P A R A L O O K S ( Q U A 0005220 D C E N T E R E D ) C H A R 0005240 L O O K S ( S U P E R S C R I 0005260 P T 0 S I Z E 1 0 F A M 0005300 I L Y M O D E R N O V E R L 0005320 I N E O F F S T R I K E O U 0005340 T O F F U N D E R L I N E 0005360 O F F S L O P E R E G U L A 0005400 R W E I G H T M E D I U M ) 0005420 ) ( 2 8 2 4 2 7 2 3 6 ) 0005440 N I L ) ( H E A D I N G N 0005460 I L ( H E A D I N G T Y P E 0005500 R U N N I N G H E A D ) ( 8 4 0005520 7 4 4 4 4 4 3 6 ) N I L 0005540 ) ( T E X T N I L N I L 0005560 ( 8 4 9 6 4 5 6 6 0 0 ) 0005600 N I L ) ) ) ) ) \0 \0 \0 \0 \0 005 \0 006 0005620 \0 ( \0 \0 \0 \0 001 310 \0 021 \0 \0 \0 004 002 003 0005640 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0005660 \0 \0 \0 \0 \0 \0 \0 \0 \0 1 \0 \0 \0 \0 001 310 0005700 \0 \v \0 \0 \0 004 003 004 \0 \0 002 \0 \0 001 001 310 0005720 001 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0005740 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 ( \0 212 \0 212 001 0005760 8 \0 006 \0 \0 \0 004 002 003 \0 \0 \0 \0 \0 \0 \0 0006000 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0006020 \0 \0 ( \0 \0 \0 \0 001 310 \0 \v \0 \0 \0 004 002 0006040 004 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0006060 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 ( \0 212 \0 212 001 0006100 8 \0 \0 \0 \0 \0 004 002 004 \0 \0 \0 \0 \0 \0 \0 0006120 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0006140 \0 \0 D \0 \0 \0 \0 001 310 \0 \0 \0 \0 \0 \0 003 0006160 004 \0 \0 001 001 310 001 \0 \0 \0 \0 \0 \0 \0 \v P 0006200 A G E H E A D I N G \0 \v R U N N 0006220 I N G H E A D \0 \0 \0 \0 \0 \0 \0 \0 \0 0006240 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 004 \0 \a \0 027 \0 0006260 \t H E L V E T I C A \0 \n \0 \0 \0 \0 0006300 \0 \0 \0 \0 \0 024 \0 006 M O D E R N \0 \n 0006320 \0 \0 \0 \0 \0 \0 002 \0 \0 024 \0 006 M O D E 0006340 R N \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 024 \0 006 0006360 M O D E R N \0 \f \0 \0 \0 \0 \0 \0 002 \0 0006400 \0 024 \0 006 M O D E R N \0 006 \0 \0 \0 \0 0006420 \0 \0 \0 \0 \0 024 \0 006 M O D E R N \0 \n 0006440 \0 \0 \0 \0 \0 \0 001 \0 \0 022 \0 004 L O G O 0006460 \0 030 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 002 0006500 \0 006 \0 \0 \0 005 \0 \0 \0 \0 \a \0 \0 \0 001 \0 0006520 \0 \0 \0 005 \0 \0 \0 024 \0 \0 \0 \0 003 \0 \0 \0 0006540 \0 \0 002 \0 006 \0 \0 \0 002 \0 001 \0 \v H R U 0006560 L E . G E T F N 001 \0 024 \0 006 M O D 0006600 E R N \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0006620 001 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 005 \0 \0 0006640 \0 002 \0 001 \0 \v H R U L E . G E T F 0006660 N 001 \0 024 \0 006 M O D E R N \0 \n \0 \0 0006700 \0 \0 \0 \0 \0 \0 \0 \0 \0 001 \0 \0 \0 \0 003 \0 0006720 \0 \0 \0 \0 002 \0 005 \0 \0 \0 002 \0 001 \0 \v H 0006740 R U L E . G E T F N 001 \0 024 \0 006 M 0006760 O D E R N \0 \n \0 \0 \0 \0 \0 \0 \0 \0 \0 0007000 \0 \0 001 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 003 0007020 \0 \0 \0 024 \0 \0 \0 \0 004 \0 \0 \0 \0 \0 002 \0 0007040 003 \0 \0 \0 002 \0 001 \0 \v H R U L E . G 0007060 E T F N 001 \0 024 \0 006 M O D E R N \0 0007100 \f \0 \0 \0 \0 \0 \0 002 \0 \0 \0 \0 001 \0 \0 \0 0007120 \0 004 \0 \0 \0 \0 \0 002 \0 005 \0 \0 \0 002 \0 001 0007140 \0 \v H R U L E . G E T F N 001 \0 024 0007160 \0 006 M O D E R N \0 \f \0 \0 \0 \0 \0 \0 0007200 002 \0 \0 \0 \0 001 \0 \0 \0 \0 004 \0 \0 \0 \0 \0 0007220 002 \0 001 \0 \0 \0 8 \0 \0 \0 \0 003 \0 \0 \0 \0 0007240 \0 002 \0 001 \0 \0 \0 001 \0 \0 \0 \0 003 \0 \0 \0 0007260 \0 \0 002 \0 004 \0 \0 \0 \f \0 \0 \0 \0 002 \0 \0 0007300 \0 001 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 004 \0 0007320 \0 \0 231 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 004 0007340 \0 \0 \0 \t \0 \0 \0 \0 002 \0 \0 \0 001 \0 \0 \0 0007360 \0 003 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 025 \0 \0 0007400 \0 \0 003 \0 \0 \0 " \0 \0 \0 \0 006 \0 \0 \0 001 0007420 \0 \0 \0 \0 003 \0 \0 \0 001 \0 \0 \0 \0 001 \0 \0 0007440 \0 \v \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 004 \0 0007460 \0 \0 037 \0 \0 \0 \0 003 \0 \0 \0 005 \0 \0 \0 \0 0007500 006 \0 \0 \0 026 \0 \0 \0 \0 003 \0 \0 \0 006 \0 \0 0007520 \0 \0 006 \0 \0 \0 < \0 \0 \0 \0 003 \0 \0 \0 001 0007540 \0 \0 \0 \0 006 \0 \0 \0 7 \0 \0 \0 \0 003 \0 \0 0007560 \0 005 \0 \0 \0 \0 006 \0 \0 \0 B \0 \0 \0 \0 003 0007600 \0 \0 \0 005 \0 \0 \0 \0 006 \0 \0 \0 ) \0 \0 \0 0007620 \0 003 \0 \0 \0 006 \0 \0 \0 \0 006 \0 \0 \0 > \0 0007640 \0 \0 \0 003 \0 \0 \0 006 \0 \0 \0 \0 006 \0 \0 001 0007660 005 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 004 \0 \0 0007700 \0 \t \0 \0 \0 \0 002 \0 \0 \0 \0 \0 002 \0 004 \0 0007720 \0 \0 < \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 002 0007740 \0 \0 \0 & \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 0007760 002 \0 \0 001 \a \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 0010000 \0 002 \0 \0 \0 023 \0 \0 \0 \0 002 \0 \0 \0 \0 \0 0010020 002 \0 002 \0 \0 \0 S \0 \0 \0 \0 003 \0 \0 \0 \0 0010040 \0 002 \0 002 \0 \0 \0 033 \0 \0 \0 \0 003 \0 \0 \0 0010060 025 \0 \0 \0 \0 006 \0 \0 \0 \r \0 \0 \0 \0 003 \0 0010100 \0 \0 \0 \0 002 \0 002 \0 \0 \0 037 \0 \0 \0 \0 003 0010120 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 033 \0 \0 \0 \0 0010140 003 \0 \0 \0 \n \0 \0 \0 \0 006 \0 \0 \0 \r \0 \0 0010160 \0 \0 003 \0 \0 \0 \0 \0 002 \0 002 \0 \0 001 017 \0 0010200 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 ( 0010220 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 002 \0 \0 \0 0010240 9 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 002 \0 \0 0010260 \0 001 \0 \0 \0 \0 003 \0 \0 \0 \0 \0 002 \0 002 \0 0010300 \0 \0 001 \0 \0 \0 \0 003 \0 \0 \a 272 \0 X z 272 0010320