$ od -c -N 50000 [_CD8_]<alto>SCV.DM!2 0000000 377 \0 \0 s c v m a i n . b r \0 376 001 0000020 \0 270 367 002 002 \t \f \0 \0 \0 017 \0 \0 001 \ \0 0000040 \0 001 203 \0 \0 \b 325 \0 \0 \t \v \0 \0 \0 \0 \0 0000060 \0 \0 5 \0 ! \0 \0 \a S C V G e t B \0 0000100 ! \0 \0 \a S C V P u t B \0 ! \0 \0 \a 0000120 c a r e f u l \0 ! \0 \0 \b m o n o 0000140 t o n e \0 \0 ! \0 \0 \r m a k e r m 0000160 o n o t o n e \0 ! \0 \0 \a s e g p 0000200 r o c \0 ! \0 \0 006 n o m o c o \0 \0 0000220 ! \0 \0 \v s i m p l e s c a l e \0 0000240 ! \0 \0 \a s d i r m i n \0 ! \0 \0 \a 0000260 s d i r m a x \0 ! \0 \0 \a r d i r 0000300 m i n \0 ! \0 \0 \a r d i r m a x \0 0000320 ! \0 \0 005 l a s t s \0 ! \0 \0 \n f i 0000340 r s t p i e c e \0 \0 ! \0 \0 016 f i 0000360 r s t p i e c e f l a g \0 \0 ! \0 0000400 \0 \v f i r s t p i e c e p \0 ! \0 0000420 \0 \b t 376 001 \0 225 312 o d o l i s t \0 0000440 \0 @ \0 001 \a S C V I n i t \0 @ \0 002 0000460 \t S C V M a t r i x \0 @ \0 003 \r S 0000500 C V T r a n s f o r m F \0 A \0 004 0000520 \a s c a l e i t \0 @ \0 005 016 S C V 0000540 B e g i n O b j e c t \0 \0 @ \0 006 0000560 \t S C V M o v e T o \0 @ \0 \a \n S 0000600 C V M o v e T o F \0 \0 @ \0 \b \t S 0000620 C V D r a w T o \0 @ \0 \t \n S C V 0000640 D r a w T o F \0 \0 @ \0 \n \f S C V 0000660 D r a w C u r v e \0 \0 @ \0 \v \f S 0000700 C V E n d O b j e c t \0 \0 @ \0 \f 0000720 \b S C V F l u s h \0 \0 A \0 \r \a f 0000740 l u s h i t \0 A \0 016 \n p u t s e 0000760 g m e n t \0 \0 @ \0 017 \v S C V R e 0001000 a d R u n s \0 A \0 020 005 f e v a l 0001020 \0 @ \0 021 005 F l o 376 001 \0 301 212 o r \0 0001040 \0 \0 \0 004 F L D I \0 \0 \0 \0 \0 003 F L 0001060 D \0 \0 \0 \0 003 F S N \0 \0 \0 \0 003 F D 0001100 V \0 \0 \0 \0 003 F A D \0 \0 \0 \0 003 F T 0001120 R \0 \0 \0 \0 003 F M L \0 A \0 022 004 r o 0001140 o t \0 \0 A \0 023 \v f i n d e x t r 0001160 e m a \0 \0 \0 \0 003 F C M \0 \0 \0 \0 003 0001200 F S T \0 \0 \0 \0 004 F S T V \0 \0 \0 \0 0001220 \0 004 F L D V \0 \0 \0 \0 \0 003 F S B \0 0001240 \0 \0 \0 004 F N E G \0 \0 \0 \0 \0 004 Z e 0001260 r o \0 \0 \0 \0 \0 005 F S T D P \0 \0 \0 0001300 \0 004 D P A D \0 \0 \0 \0 \0 \t Q u i c 0001320 k S o r t \0 023 \0 022 \0 001 \0 023 \0 \n \0 0001340 024 \0 ? \0 025 \0 204 \0 026 \0 307 \0 027 001 003 \0 0001360 030 001 027 \0 031 001 I \0 032 001 ] \0 033 001 201 \0 0001400 034 003 n \0 035 003 230 \0 036 003 261 \0 037 003 322 \0 0001420 005 H \0 ! 006 331 \0 " \a \a \0 * 376 001 \0 0001440 003 261 001 266 \0 + 002 1 \a Q \a Q Z 001 \f 370 0001460 \0 \a \f 367 : 004 ] O : 005 ] N \f 366 Z 001 0001500 \f 370 \0 \r \f 367 375 \0 ] H 375 \0 Z \b 001 034 0001520 ! E 306 \0 : \b 236 \0 # \0 202 \f 001 \b " \b 0001540 9 a 346 \0 255 \0 i _ \0 002 001 \v " \b 9 Z 0001560 346 \0 ) 4 316 \0 : \b 276 \0 + \0 i U \0 002 0001600 " \b 203 \0 B \b " \b 9 P 344 J 001 342 ! N 0001620 i N \0 001 202 \f 001 \b ! K i I \0 001 202 \f 0001640 001 003 374 \0 ] 032 \f 366 Z 001 \f 370 \0 \f \f 367 0001660 B \a ! P * 004 i 8 \0 002 ! M * 005 i 4 0001700 \0 002 ! H ) H i H \0 002 " \a 9 F 345 \f 0001720 001 006 \f 366 \0 \0 \0 \0 \0 \0 \0 004 ! h 255 P 0001740 i " \0 002 ! e ) 9 i 036 \0 002 ! ` ) ` 0001760 i ` \0 002 ! ] ) [ i 027 \0 002 ! X ) * 0002000 i Y \0 002 ! U ) ' i U \0 002 ! P i S 0002020 \0 001 : 006 C \0 ! L i N \0 001 : 006 C 001 0002040 001 \b 376 001 \0 \0 w \0 034 \0 \0 \0 \0 \0 003 \0 0002060 036 \0 \0 \0 035 \f 366 Z 001 \f 370 \0 \n \f 367 = 0002100 317 372 \r 001 016 " 004 ) 360 i I \0 002 " 005 ) 0002120 J i E \0 002 001 3 \0 \b \0 \t \0 \0 \0 002 ! 0002140 ) * 004 i 344 \0 002 ! % ) 337 i 8 \0 002 ! 0002160 " * 005 i 334 \0 002 ! 036 ) 333 i 0 \0 002 ! 0002200 031 ) 031 i 032 \0 002 ! 026 * 004 i 320 \0 002 " 0002220 004 ) 020 i 314 \0 002 ! 016 ) 315 i \0 002 " 0002240 005 ) ! i 034 \0 002 " 005 ) 005 i 006 \0 002 001 0002260 006 \0 \n \0 \v \0 \0 \0 \0 \0 \0 \f 366 Z 001 \f 0002300 370 \0 \f \f 367 B \b 001 \f 375 \0 Z 004 375 \0 Z 0002320 005 375 \0 Z 006 375 \0 Z \a 001 020 \0 \0 001 016 " 0002340 \b 001 004 \0 037 \f 355 \0 \t \f 350 \0 003 \0 004 377 0002360 363 377 360 377 355 377 352 001 001 : 004 ] S : 005 ] 0002400 R : 006 ] Q : \a ] P 375 \0 ] O 374 \0 ] 0002420 N ! N i N \0 001 E M % L 202 \r 204 001 205 0002440 \0 E I 9 I ] I 376 001 \0 226 341 9 G ] H 0002460 9 H ] H 9 F ] G \f 366 Z 001 \f 370 \0 \n 0002500 \f 367 = 7 372 \f 001 003 i N \0 \0 ! M * 004 0002520 i L \0 002 ! K * 005 i H \0 002 i H \0 \0 0002540 \f 366 Z 001 \f 370 \0 \v \f 367 B 006 : 006 372 \r 0002560 001 016 = 037 372 \f 001 003 i 6 \0 \0 ! 5 * 004 0002600 i W \0 002 ! 3 * 005 i S \0 002 ! - ) . 0002620 i P \0 002 ! O ) ( i K \0 002 ! L ) & 0002640 i G \0 002 \f 366 \0 \0 \0 \0 \0 \0 \0 \0 \0 \0 0002660 \0 \0 \0 8 \0 U \0 \0 \0 \0 ? 377 \0 \0 \0 \0 0002700 300 \0 \0 \0 \0 \0 Z 001 \f 370 \0 \n \f 367 ! W 0002720 * 004 i \v \0 002 ! T * 005 i \a \0 002 i Q 0002740 \0 \0 \f 366 \0 \0 \0 030 \0 } \0 031 \0 \0 Z 001 0002760 \f 370 \0 \v \f 367 B 006 : 006 372 \r 001 \t ! ? 0003000 * 004 i 026 \0 002 ! < * 005 i 022 \0 002 ! 7 0003020 ) 7 i 017 \0 002 205 P i ` \0 001 ! 345 ) / 0003040 i \a \0 002 ! 343 ) , i 003 \0 002 376 001 \0 341 0003060 \n \f 366 \0 ~ \0 226 \0 032 \0 033 Z 001 \f 370 \0 0003100 \f 367 ! N ) 323 i 366 \0 002 ! K ) 321 i 0003120 362 \0 002 375 \0 Z \n 001 016 " \n 9 D 346 \0 ) 0003140 C 316 \0 : \n 276 \0 + \0 i 345 \0 002 " \n 203 0003160 \0 B \n " \n 9 R 344 J 001 360 9 4 Z \n 001 0003200 016 \0 026 \0 027 \0 \0 " \n 203 \0 212 \0 " \n i 0003220 323 \0 002 " \n 9 C 346 \0 B \n " \n 9 ] 344 0003240 J 001 363 001 { Z 001 \f 370 \0 \r \f 367 ! X i 0003260 X \0 001 375 P 345 \f 001 p \t 003 @ 300 \0 \0 342 0003300 \0 212 \0 ! M i P \0 002 200 \f 001 f " 004 202 0003320 \r 001 M & 004 202 P 375 P 345 \0 001 006 \0 \0 \0 0003340 \f \0 \r \0 016 \0 004 B 005 : 005 Z 006 001 005 " 0003360 005 9 025 345 \0 B 005 " 004 : 005 346 \0 212 \0 ! 0003400 / i 2 \0 002 200 \r 001 364 " 006 203 \0 B \a " 0003420 005 9 005 346 \0 B \b 001 017 \0 005 \0 002 " \a : 0003440 004 236 \0 # \0 * \a : 004 276 \0 C 002 " \a 201 0003460 \0 376 001 \0 260 377 200 \0 B \a " \a : \b 345 K 0003500 001 361 " 004 : 005 346 \0 9 354 346 \0 212 \0 ! \n 0003520 i ^ \0 002 & 004 203 \0 F 004 001 ! \0 022 \f 355 0003540 \0 037 \0 \b \0 201 \f 355 \0 032 \0 \0 \f 355 \0 001 0003560 9 O Z 003 205 P ) 366 i L \0 003 ! I i J 0003600 \0 001 B 005 " 005 = G 345 K 001 003 : 005 ] C 0003620 " 005 = B 344 J 001 003 : 005 ] > \f 366 001 L 0003640 Z 001 \f 370 \0 022 \f 367 " 005 9 H 346 \0 B 006 0003660 " 005 9 325 346 \0 i 327 \0 001 202 \r 001 @ ! ( 0003700 ) T i T \0 002 " 005 9 312 346 \0 212 \0 ! 0003720 i N \0 002 ! 307 * 006 i K \0 002 ! 303 * 006 0003740 i F \0 002 ! F ) 024 i C \0 002 " 005 9 f 0003760 346 \0 212 \0 ! > i ; \0 002 ! 264 ) : i _ 0004000 \0 002 ! 260 i 260 \0 001 B \a 001 \a \0 \0 \0 \t 0004020 \0 \0 \0 \0 001 D 001 G " \a 200 \r 001 p " \a 0004040 202 \f 001 017 ! 237 * 006 i # \0 002 ! 233 ) 360 0004060 i I \0 002 001 a 376 001 \0 o 317 \f 355 \0 210 \0 0004100 020 \f 355 \0 d ! = 306 \0 B \b ! 216 * \b i 0004120 Z \0 002 : \b # 001 ) W \f 344 : \b K 001 ! 0004140 \v * \b i R \0 002 375 \0 Z \t 001 035 377 375 001 0004160 Z \0 326 001 } \0 \n ! I ) h i 374 \0 002 ! 0004200 E ) 372 i " \0 002 ! 367 ) @ i 033 \0 002 ! 0004220 = ) : i 356 \0 002 ! 357 ) 8 i 026 \0 002 " 0004240 \t 203 \0 B \t " \t 9 / 344 J 001 346 ! 344 ) 0004260 262 i \v \0 002 ! * * 006 i 335 \0 002 001 \b \0 0004300 016 \0 304 \f 355 \0 036 \0 303 \f 355 \0 030 ! 036 ) 0004320 242 i 373 \0 002 ! : ) 031 i 315 \0 002 ! 6 ) 0004340 313 i c \0 002 " 004 i a \0 001 ! / ) 016 i 0004360 302 \0 002 ! + ) 300 i 345 \0 002 " 004 i V \0 0004400 001 001 % \0 \0 \0 002 \0 \0 \0 \v " 006 i O \0 0004420 001 202 \r 001 034 " 005 9 324 346 \0 212 \0 ! 026 i 0004440 252 \0 002 ! 023 * 006 i 320 \0 002 ! 017 i B \0 0004460 001 ! ] ) 351 i 235 \0 002 ! \b 376 001 \0 355 \ 0004500 ) X i 305 \0 002 " 004 i 3 \0 001 001 002 \0 \b 0004520 \f 366 = P 372 \r 001 005 205 \0 255 P i L \0 002 0004540 ! K 306 \0 B \n " \n ) H i H \0 002 ! 316 0004560 : \n C \0 ! D : \n C 003 = R 372 \f 001 \f 0004600 = P 372 \r 001 005 " \n 255 P i 5 \0 002 " \n 0004620 255 \0 i 1 \0 002 ! F 255 \0 i a \0 002 375 P 0004640 Z \v : \n # \0 375 P 345 \0 001 004 \0 \0 \0 \0 0004660 002 023 B \f 001 0 \0 \0 ! S ) 4 i R \0 002 0004700 " \v 202 P * \n 216 \0 253 \0 ! , i J \0 002 0004720 9 I Z 003 205 \0 ) & i F \0 003 9 E Z 003 0004740 205 P ) i @ \0 003 205 \0 i A \0 001 001 \b 0004760 \0 \t 001 9 \0 \0 \0 022 \0 \r \0 \0 @ 300 ! E 0005000 ) 1 i / \0 002 ! Q ) / i + \0 002 " \v 0005020 203 \0 B \v " \v : \f 344 J 001 317 \f 366 001 : 0005040 001 < \0 025 Z 001 \f 370 \0 \b \f 367 i W \0 \0 0005060 % V i V \0 001 % U : 004 C \0 % S : 004 0005100 376 001 \0 & 256 C 001 % Q : 004 C 002 % O : 0005120 004 C 003 % M : 004 C 004 % K 202 \r 001 \v 001 0005140 \a 002 226 \0 024 002 230 \0 026 002 i \0 027 205 P 001 0005160 004 001 322 205 \0 001 001 : 004 C 005 \f 366 Z 001 \f 0005200 370 \0 \n \f 367 : 004 ; 004 Z 005 001 \n \0 030 : 0005220 005 ; \0 Z 006 " 005 i & \0 001 : 006 Z 005 : 0005240 005 372 \f 001 366 205 \0 : 004 C 004 \f 366 \0 031 Z 0005260 001 \f 370 \0 \b \f 367 = d 372 \f 001 021 ! 325 ) 0005300 a i 322 \0 002 ! 323 ) ^ i 316 \0 002 ! \ i 0005320 321 \0 001 204 \0 i 316 \0 001 374 \0 ] R \f 366 001 0005340 X 001 A \0 V 001 E 001 H 002 k 002 l 001 = 001 0005360 B Z 001 \f 370 \0 023 \f 367 = G 372 \r 001 005 " 0005400 004 i C \0 001 \f 366 " 004 202 K 001 035 = M Z 0005420 004 = 350 Z 005 : 004 372 \r 001 003 ! 246 001 003 ! 0005440 E 001 001 B 006 001 \f " 006 * 005 i V \0 002 " 0005460 005 9 T 346 \0 B 005 " 006 203 \0 B 006 " 006 9 0005500 267 344 J 001 362 376 001 \0 7 I ! 244 i J \0 001 0005520 B 005 ! 215 i F \0 001 B 006 ! 213 i B \0 001 0005540 B \a " \a = 305 345 K 001 003 : \a ] 301 " \a 0005560 = 300 344 J 001 003 : \a ] 274 " 005 : 006 345 \f 0005600 001 \b 001 006 001 > \0 032 \0 033 \0 002 001 ; \f 366 0005620 = 372 372 \r 001 ' 375 \0 ] 366 : 004 ] \b = 244 0005640 Z \b : 004 372 \r 001 005 ! G 001 005 \0 \0 \0 \f 0005660 ! 377 001 001 B \t 001 \f " \t * \b i E \0 002 0005700 " \b 9 016 346 \0 B \b " \t 203 \0 B \t " \t 0005720 9 I 344 J 001 362 : 006 ] F \f 366 002 342 \0 004 0005740 002 j " 005 : 006 344 J 001 003 205 P 001 003 204 \0 0005760 001 001 B \n " \n 375 P 345 \f 001 \a = 4 Z \b 0006000 " 006 203 \0 B \t 001 006 : 006 Z \b % , 203 \0 0006020 B \t " \t = _ 345 K 001 003 : \t ] [ " \b 0006040 = Z 344 J 001 003 : \b ] V : 006 ] 034 = T 0006060 372 \r 001 003 \f 366 \0 026 9 P Z \v : 004 372 \r 0006100 001 004 ! L 001 004 002 340 " \v 376 001 \0 , 322 001 0006120 001 i H \0 001 B \f " \f 202 \f 001 024 374 \0 ] 0006140 > = Q Z \r 001 \v \0 031 \0 \0 : \r ; \0 Z 0006160 016 " \r i I \0 001 : 016 Z \r : \r 372 \f 001 0006200 366 \f 366 : 004 372 \r 001 B 205 \0 : \f C 001 ! 0006220 ( ) P i P \0 002 ! $ ) 347 i M \0 002 ! 0006240 L ) 315 i H \0 002 ! H ) 032 i E \0 002 ! 0006260 030 ) C i C \0 002 " \f 9 A 346 \0 212 \0 ! 0006300 020 i g \0 002 ! 9 * \t i d \0 002 ! 5 ) 0006320 \a i 2 \0 002 001 \a 003 314 003 315 003 321 \0 030 \0 0006340 \b 001 @ ! 376 ) ) i V \0 002 ! 372 ) 275 i 0006360 S \0 002 " \f 9 Q 346 \0 212 \0 ! 362 i I \0 0006400 002 001 e 003 320 003 313 \f 355 \0 001 205 P : \f C 0006420 001 " \n 202 K 001 024 ! 344 ) e i \f \0 002 ! 0006440 \f ) b i \b \0 002 ! \b ) ] i 005 \0 002 001 0006460 023 \0 027 003 214 003 2 \0 \t 002 302 \0 006 ! 321 ) 0006500 S i 371 \0 002 ! 371 ) N i 365 \0 002 ! 365 376 0006520 001 \0 006 ] ) K i 362 \0 002 " \b : \t 345 \0 0006540 202 220 9 Z 346 \0 212 \0 ! X i 026 \0 002 ! 347 0006560 ) T i 346 \0 002 " \f 9 022 346 \0 212 \0 ! 263 0006600 i M \0 002 " \f 9 335 346 \0 212 \0 ! 330 i F 0006620 \0 002 001 \b \0 \0 003 212 002 227 002 277 \0 004 \f 355 0006640 \0 030 375 \0 Z \r 001 021 " \r 9 h 346 \0 * \f 0006660 9 232 356 \0 B 017 " \r 202 P 216 \0 " 017 i . 0006700 \0 002 " \r 203 \0 B \r " \r 9 Y 344 J 001 355 0006720 " \t : \f C 002 " \b : \f C 003 % 226 : \f 0006740 C \0 : \f ] 222 \f 366 \0 024 \0 025 Z 001 \f 370 0006760 \0 030 \f 367 " 006 202 220 9 017 345 \0 B \a : 004 0007000 ; 006 Z \b : 004 ; \a Z \t 375 \0 Z \v : 004 0007020 ; 004 Z \n 001 % \0 002 \0 \n 002 g : \n # 002 0007040 : \t 344 K 001 032 : \n ; 002 Z \f " \f : \b 0007060 345 K 001 003 : \b Z \f : \n ; 003 Z \r " \r 0007100 : \t 344 J 001 003 : \t Z \r " \v : \r 346 \0 0007120 : \f 345 \0 376 001 \0 x 225 203 \0 B \v : \n ; 0007140 \0 Z \n " \n 202 \f 001 335 " \v : \a 344 J 001 0007160 \n " \b : \t 346 \0 ) 322 \f 344 J \t 001 004 \0 0007200 \f \0 \a 001 002 001 305 " 005 9 311 346 \0 B 016 " 0007220 004 9 210 346 \0 375 \0 345 \0 B 017 : 017 ; \0 Z 0007240 \n 001 b : \n # 002 : \t 344 K 001 _ : \n ; 0007260 002 Z \f " \f : \b 345 K 001 003 : \b Z \f : 0007300 \n ; 003 Z \r " \r : \t 344 J 001 003 : \t Z 0007320 \r 001 N : \f Z 020 : \r Z 021 001 032 " 020 : 0007340 016 C \0 " \n 9 ^ 346 \0 232 \0 # \0 : 016 C 0007360 001 " 016 9 224 346 \0 B 016 " \n 9 S 346 \0 * 0007400 \n 9 Q 356 \0 i P \0 002 " 020 203 \0 B 020 " 0007420 020 : 021 344 J 001 344 001 H 375 \0 Z 020 001 021 " 0007440 020 9 257 346 \0 * \n 9 Q 356 \0 B 022 " 020 202 0007460 P 216 \0 " 022 i K \0 002 " 020 203 \0 B 020 " 0007500 020 9 240 344 J 001 355 " \n 9 , 346 \0 212 \0 ! 0007520 = i = \0 002 " \n 9 & 376 001 \0 T 256 346 \0 0007540 212 \0 ! W i 6 \0 002 001 \a \f 355 \0 303 \f 355 0007560 \0 274 \f 355 \0 234 ! N ) + i + \0 002 ) I 0007600 i J \0 002 9 I Z 003 205 \0 ) " i F \0 003 0007620 9 E Z 003 205 \0 ) > i @ \0 003 : \f Z 020 0007640 : \r Z 021 001 v \0 004 \0 006 \0 \0 \f 355 \0 217 0007660 ! b * 020 i a \0 002 ! ^ ) . i ^ \0 002 0007700 202 K 001 \b ! X ) 004 i 004 \0 002 001 D \0 \b 0007720 004 356 9 T Z 022 001 # ! 373 ) 034 i 372 \0 002 0007740 ! 033 ) 034 i 366 \0 002 ! 025 ) 023 i 024 \0 002 0007760 9 025 Z 003 205 \0 ) 016 i 020 \0 003 " 022 203 \0 0010000 B 022 " 022 202 \f 001 \v ! P : 004 C 005 \f 366 0010020 \0 026 \0 \t 005 037 \0 \n 003 216 \0 \v ! , ) 376 0010040 i , \0 002 375 P 345 \r 001 330 ! % ) 365 i B 0010060 \0 002 ) 357 i @ \0 002 ! ? ) 360 i 312 \0 002 0010100 ) 353 i 8 \0 002 ! 027 ) 7 i 7 \0 002 ) 300 0010120 i 342 \0 002 9 1 Z 003 205 P ) \r i 336 376 001 0010140 \0 025 274 \0 003 ! + i , \0 001 B 022 " 020 : 0010160 016 C \0 001 \a \f 355 \0 017 \0 027 005 035 002 026 377 0010200 234 " 022 : 016 C 001 " 016 9 022 346 \0 B 016 " 0010220 020 203 \0 B 020 " 020 : 021 344 J 001 215 " \n 9 0010240 206 346 \0 212 \0 ! 227 i \r \0 002 001 023 \0 002 001 0010260 021 : \n # 001 001 \a 004 357 005 036 \0 030 004 361 004 0010300 G 005 _ \f 351 \0 002 \0 001 377 - \0 \0 377 \b 001 0010320 001 : \n # 003 : \t 344 K 001 \n : \n # \0 : 0010340 017 C \0 " \n i I \0 001 : 017 Z \n : \n Z 0010360 017 : \n ; \0 Z \n " \n 202 \f 001 ` " 005 * 0010400 \v i _ \0 002 " \t : 004 C \a " \v : 004 C 0010420 \t " 005 9 315 346 \0 : 004 C \b \f 366 Z 001 \f 0010440 370 \0 \v \f 367 " 004 9 M 346 \0 212 \0 " 006 i 0010460 J \0 002 " 006 * 005 i 301 \0 002 " 004 9 D 346 0010500 \0 212 \0 " 006 i Y \0 002 " 006 * 005 i 266 \0 0010520 002 " 004 9 S 346 \0 212 \0 " 006 i N \0 002 " 0010540 006 * 005 376 001 \0 221 ` i 253 \0 002 " 004 9 I 0010560 346 \0 212 \0 " 006 i C \0 002 \f 366 004 327 Z 001 0010600 \f 370 \0 024 \f 367 " 004 i > \0 001 B 005 " 004 0010620 i ; \0 001 202 K 001 1 ! 4 306 \0 B 006 ! 026 0010640 306 \0 B \a " 004 * 006 i 0 \0 002 ! / * \a 0010660 i , \0 002 " 005 201 \0 9 * 346 \0 B 005 001 \a 0010700 \f 355 376 x \0 \0 \0 022 006 5 \0 020 ! 037 * 005 0010720 i 037 \0 002 " 004 ) 032 i 022 \0 002 " 004 i 023 0010740 \0 001 : 005 345 \0 B 005 ! 021 * \a i 022 \0 002 0010760 " 004 * 006 i 016 \0 002 " 005 001 004 006 W \0 016 0011000 \0 \f \f 366 \0 305 003 4 004 z \0 037 \0 004 006 210 0011020 004 E \0 5 004 305 \a 006 003 U 003 k 003 l 004 035 0011040 004 302 \0 W 004 300 004 301 003 316 003 317 004 211 004 031 0011060 004 - 003 312 004 326 \0 \0 \0 \0 \0 \0 001 ~ \0 \0 0011100 \0 \0 001 \ \0 \0 001 246 \0 \0 \0 \0 \0 \0 003 311 0011120 003 222 \0 \0 006 Y 006 252 \a O \a , \a K 006 251 0011140 \a F \a J 006 247 003 3 376 \0 030 > 334 003 V 006 0011160 211 006 253 \a L \a P 006 246 003 7 003 Y 005 034 006 0011200 " \a * \0 \0 377 \0 \0 s c v s o r t . 0011220 b r \0 376 001 \0 316 [ 002 002 001 y \0 \0 \0 017 0011240 \0 \0 \0 027 \0 \0 \0 032 \0 \0 001 v \0 \0 001 x 0011260 \0 \0 \0 \0 \0 \0 \0 001 \0 @ \0 001 \t Q u i 0011300 c k S o r t \0 001 \0 001 \0 001 001 [ 001 [ 0011320 Z 001 \f 370 \0 A \f 367 " 005 202 P B 006 " 004 0011340 203 \0 B \a ! Q : 004 C \0 ! O * 006 : 004 0011360 276 \0 C 002 ! K 306 \0 B \b ! I 306 \0 B \t 0011400 375 \0 Z \n 9 Z Z \v : 006 Z \f " \f : \v 0011420 345 \0 9 T 344 J 001 S : \v Z \r : \f Z 016 0011440 " \v : 004 236 \0 # \0 B 017 " \v : \a 236 \0 0011460 # \0 B 020 001 005 " 016 9 @ 345 \0 B 016 " 016 0011500 : 004 236 \0 # \0 * 017 215 J 001 366 " 016 : 004 0011520 236 \0 # \0 * 017 215 \f 001 \b " 016 : \a 236 \0 0011540 # \0 * 020 215 J 001 350 " 016 : \r 344 K 001 020 0011560 " 017 * \r : 004 276 \0 C \0 " 020 * \r : \a 0011600 276 \0 C \0 001 _ 300 \0 ? 377 \0 027 \0 , " 016 0011620 : 004 236 \0 # \0 * \r 376 001 \0 G 354 : 004 276 0011640 \0 C \0 " 016 : \a 236 \0 # \0 * \r : \a 276 0011660 \0 C \0 " \r 9 004 346 \0 B \r 001 \t \0 002 \0 0011700 024 \f 355 \0 o " \r 9 373 346 \0 B \r " \r : 0011720 004 236 \0 # \0 : 017 345 J 001 366 " \r : 004 236 0011740 \0 # \0 : 017 345 \f 001 \b " \r : \a 236 \0 # 0011760 \0 : 020 345 J 001 350 " 016 : \r 344 K 001 016 " 0012000 017 * 016 : 004 276 \0 C \0 " 020 * 016 : \a 276 0012020 \0 C \0 : 016 Z \r 001 030 " \r : 004 236 \0 # 0012040 \0 * 016 : 004 276 \0 C \0 " \r : \a 236 \0 # 0012060 \0 * 016 : \a 276 \0 C \0 " 016 9 301 345 \0 B 0012100 016 001 F \f 355 \0 001 " \f : \r 345 \0 * \r : 0012120 \v 355 \0 245 J 001 022 " \r 9 262 346 \0 * \n : 0012140 \b 276 \0 C \0 " \f * \n : \t 276 \0 C \0 " 0012160 \r 9 246 345 \0 B \f 001 021 " \v * \n : \b 276 0012200 \0 C \0 " \r 9 234 345 \0 * \n : \t 276 \0 C 0012220 \0 " \r 9 225 346 \0 B \v " \n 203 \0 376 \0 362 0012240 225 227 B \n 001 q " \v 9 215 346 \0 B 021 : \f 0012260 Z 022 001 Q " 021 : 004 236 \0 # \0 B 017 " 021 0012300 : \a 236 \0 # \0 B 020 " 021 9 O 345 \0 B \r 0012320 001 033 \f 355 377 5 " \r 9 H 346 \0 B 023 " \r 0012340 : 004 236 \0 # \0 * 023 : 004 276 \0 C \0 " \r 0012360 : \a 236 \0 # \0 * 023 : \a 276 \0 C \0 " \r 0012400 9 4 345 \0 B \r " \r : 004 236 \0 # \0 : 017 0012420 344 K 001 342 " \r : 004 236 \0 # \0 : 017 345 \f 0012440 001 \b " \r : \a 236 \0 # \0 : 020 344 K 001 324 0012460 " \r 9 033 346 \0 B 023 " 017 * 023 : 004 276 \0 0012500 C \0 " 020 * 023 : \a 276 \0 C \0 " 021 9 \r 0012520 346 \0 B 021 " 021 : 022 344 J 001 255 " \n 202 \f 0012540 001 005 001 023 \f 355 \0 020 \0 002 " \n 375 P 345 \0 0012560 B \n " \n : \b 236 \0 # \0 B \v " \n : \t 0012600 236 \0 # \0 B \f 001 002 \f 366 \f 355 376 305 \0 001 0012620 \0 \0 \0 \0 377 \0 \0 s c v . d f s \0 376 0012640 001 \0 335 m / / S C V . D F S - 0012660 - S c a n C o n v e r t e r 0012700 D e f i n i t i o n s \r / / \r 0012720 / / C o p y r i g h t X e r 0012740 o x C o r p o r a t i o n 1 0012760 9 7 9 \r \r / / C o n d i t i o n 0013000 a l c o m p i l a t i o n t 0013020 o d e c i d e h o w t o 0013040 h a n d l e s p l i n e s . \r 0013060 / / S e t S p l i n e H a n 0013100 d l i n g t o o n e o f 0013120 t h e t h r e e : \r \r m a n i 0013140 f e s t \t [ \r \t N o S p l i n e 0013160 s = 0 \t / / D o n o t i n c 0013200 l u d e s p l i n e c o d e 0013220 \r \t A d d i t i v e S p l i n e 0013240 s = 1 \t 376 001 \0 363 t / / " S e c t 0013260 i o n a n d i n t e r p o l 0013300 a t e " s p l i n e c o d e 0013320 \r \t R e c u r s i v e S p l i n 0013340 e s = 2 \t / / " R e c u r s i v 0013360 e " s p l i n e c o d e \r \r 0013400 \t S p l i n e H a n d l i n g = 0013420 A d d i t i v e S p l i n e s \t 0013440 / / Y o u s e t t h i s ! \r 0013460 \t ] \r \r / / D e f i n e v a 0013500 l u e s o f " g u a r d " 0013520 n u m b e r s \r / / ( a t e 0013540 m p o r a r y m e a s u r e 0013560 - - t h e " g r " a n d 0013600 " l s " c o m p a r e s \r / / 0013620 i n Q u i c k S o r t a n 0013640 d P u t s e g m 376 001 \0 ( 242 e n 0013660 t ( s d i r m i n , s d i r m 0013700 a x \r / / c o m p a r e s , 0013720 a n d a l s o t h e " f o 0013740 r s = l t o r " l o o p 0013760 ) \r / / w i l l n o t w o 0014000 r k c o r r e c t l y f o r 0014020 + i n f = # 7 7 7 7 7 a n d 0014040 - i n f = # 1 0 0 0 0 0 ) \r / 0014060 / F o l l o w i n g g i v e 0014100 s a r a n g e o f - 1 6 0014120 0 0 0 < x < 1 6 0 0 0 \r 0014140 \r m a n i f e s t [ \r \t p l u 0014160 s i n f i n i t y = # 3 7 7 7 7 0014200 \r \t m i n u s i n f i n i t y = 0014220 # 1 4 0 0 0 0 \r \t ] \r \r / / S 0014240 t r u c t u r e f o r t 376 001 0014260 \0 j Y a l k i n g a b o u t 0014300 s c a n - c o n v e r t i n g 0014320 a n o b j e c t : \r \r s t r u 0014340 c t u r e S C V : [ \r \t S m 0014360 i n w o r d \t / / B o u n d i 0014400 n g b o x o f o b j e c t 0014420 \r \t S m a x w o r d \r \t R m i 0014440 n w o r d \r \t R m a x w o r 0014460 d \t / / " \r \t O b j e c t w o 0014500 r d \t / / O b j e c t d e s c 0014520 r i p t o r \r \t E r r o r w o 0014540 r d \t / / E r r o r ( c u r r 0014560 e n t l y , j u s t n o m 0014600 o r e c o r e ) \r \t S b e g i 0014620 n w o r d \t / / S v a l u e 0014640 t o b e g i n s c a n - c 0014660 o n v 376 001 \0 ( 035 e r s i o n . \r 0014700 \t S e n d w o r d \t / / a n 0014720 d e n d . \r \t I n t P t r w 0014740 o r d \t / / P o i n t e r t o 0014760 f i r s t i n t e r s e c t 0015000 i o n . \r \t I n t C n t w o r 0015020 d \t / / C o u n t o f i n t 0015040 e r s e c t i o n s . \r \t ] \r \r 0015060 \r / / F o l l o w i n g a r 0015100 e i n c l u d e d s o p r 0015120 i v i l e g e d s o u l s c 0015140 a n r e a d t h i n g s f 0015160 r o m \r / / t h e i n t e r 0015200 n a l d a t a s t r u c t u 0015220 r e , o r u s e a c c u m 0015240 u l a t o r s w i t h c o n 0015260 f i d e n c e . 376 001 \0 - 352 \r \r s 0015300 t r u c t u r e H D : [ \r \t 0015320 n e x t \t w o r d \t / / p o i n 0015340 t e r t o n e x t i n l 0015360 i s t \r \t t y p e \t w o r d \t / 0015400 / t y p e o f t h i n g ( 0015420 L I N E t y p e o r S P L I 0015440 N E t y p e ) \r \t s m i n \t w o 0015460 r d \t / / l o w v a l u e o 0015500 f s f o r t h i s p a r 0015520 t \r \t s m a x \t w o r d \t / / h 0015540 i g h v a l u e o f s f 0015560 o r t h i s p a r t \r \t ] \r 0015600 \r s t r u c t u r e L I N E : 0015620 [ \t / / b l o c k f o r a 0015640 l i n e d e s c r i p t o r 0015660 \r \t @ H D \r \t x \t w o r d 376 001 \0 0015700 Z 376 2 \t / / c u r r e n t x 0015720 \r \t d x \t w o r d 2 \t / / d e 0015740 l t a \r \t ] \r \r s t r u c t u r 0015760 e S P L I N E : [ \t / / b l 0016000 o c k f o r a s p l i n e 0016020 \r \t @ H D \r \t t 0 \t w o r d 2 0016040 \r \t d t \t w o r d 2 \r \t c o e 0016060 f f s \t w o r d 8 * 2 \r \t ] \r 0016100 \r s t r u c t u r e R S P L I 0016120 N E : [ \t / / R e c u r s i v 0016140 e s p l i n e e v a l u a t 0016160 i o n \r \t @ H D \r \t s t r \t w o 0016200 r d 2 \t / / O r d e r i s 0016220 i m p o r t a n t ( i n i t i 0016240 a l s t a c k o r d e r ) \r 0016260 \t g s t r \t w o r d 2 \r \t s t 0016300 l \t 376 001 \0 J q w o r d 2 \r \t g 0016320 s t l \t w o r d 2 \r \r \t r t r 0016340 \t w o r d 2 \t / / R d i r e 0016360 c t i o n , F ( t r ) \r \t g r 0016400 t r \t w o r d 2 \t / / c o r 0016420 r e c t i o n @ t r \r \t r t 0016440 l \t w o r d 2 \t / / F ( t l 0016460 ) \r \t g r t l \t w o r d 2 \t / 0016500 / c o r r e c t i o n @ t 0016520 l \r \t ] \r \r / / F l o a t i n g 0016540 - p o i n t A C ' s d e d i 0016560 c a t e d \r \r m a n i f e s t 0016600 [ \r \t t 1 = 8 \r \t t 2 = 9 \r \t t 0016620 3 = 1 0 \r \t t 4 = 1 1 \r \r / / * 0016640 * * O r d e r o f f o l l 0016660 o w i n g d e f i n i t i o n 0016700 s i s i m 376 001 \0 300 \f p o r t 0016720 a n t * * * \r / / C o e f f i 0016740 c i e n t s f o r t h e s 0016760 p l i n e ( a l s o r a n g 0017000 e o f T ) \r \t e s d = 1 2 \t 0017020 \t / / D ( s c a n d 0017040 i r e c t i o n ) \r \t e r d = 1 0017060 3 \t \t / / ( r u n 0017100 d i r e c t i o n ) \r \t e s c = 0017120 1 4 \t \t / / C ( c o e f f 0017140 t ) \r \t e r c = 1 5 \r \t e s b 0017160 = 1 6 \t \t / / B ( c o e f 0017200 f t ^ 2 ) \r \t e r b = 1 7 \r \t 0017220 e s a = 1 8 \t \t / / A ( c 0017240 o e f f t ^ 3 ) \r \t e r a = 1 0017260 9 \r \t t m i n a c = 2 0 \t / / M 0017300 i n v a l u e o f 376 001 \0 235 0017320 z p a r a m e t e r T \r \t t m 0017340 a x a c = 2 1 \t / / a n d 0017360 m a x v a l u e \r \r / / C u 0017400 r r e n t , o l d p o i n t 0017420 s \r \t c s a c = 2 2 \t \t / / C u 0017440 r r e n t p o i n t , s c a 0017460 n d i r e c t i o n \r \t c r a 0017500 c = 2 3 \t \t / / " 0017520 r u n d i r e c 0017540 t i o n \r \t o s a c = 2 4 \t \t / 0017560 / O l d p o i n t , s c a n 0017600 d i r e c t i o n \r \t o r a c 0017620 = 2 5 \t \t / / " 0017640 r u n d i r e c t i o n \r 0017660 / / * * * E n d o f o r d 0017700 e r - i m p o r t a n t s t u 0017720 f 376 001 \0 Z 254 f * * * \r \r / / A 0017740 c ' s f o r h o l d i n g 0017760 t h e " f i r s t " p o i n 0020000 t f r o m a M o v e T o \r 0020020 \t f s a c = 2 6 \r \t f r a c = 2 0020040 7 \r \r / / M a t r i x c o e f 0020060 f i c i e n t s ( s e c o n d 0020100 c h a r i s r o w , t h 0020120 i r d i s c o l u m n ) \r / 0020140 / ( d e f i n e d i n o r 0020160 d e r o f S C V M a t r i x 0020200 a r g u m e n t s ) \r \t s s s 0020220 a c = 2 8 \r \t s s r a c = 2 9 \r 0020240 \t s r s a c = 3 0 \r \t s r r a c 0020260 = 3 1 \r \r / / A c ' s d u r i 0020300 n g s c a n - c o n v e r s i 0020320 o n . \r / / 376 \0 210 027 J \t e s d 0020340 t o e r a a r e s a m e \r 0020360 / / \t t 1 - t 4 a r e u s e 0020400 d . \r \t t t 1 = c s a c \r \t t t 0020420 2 = c r a c \r \t t t 3 = o s a c 0020440 \r \r / / " T y p e s " f o r 0020460 o b j e c t b l o c k s ( 0020500 H D ) \r \r \t L I N E t y p e = 0 0020520 \r \t S P L I N E t y p e = 1 \r \t 0020540 ] \r \r 377 \0 \0 s c v m a i n . b c 0020560 p l \0 376 001 \0 S 367 / / S C V 0020600 M A I N - - S C A N 0020620 C O N V E R T E R ( P 0020640 R E P R E S S ) \r / / c a t a 0020660 l o g n u m b e r ? ? ? \r / 0020700 / C o p y r i g h t X e r o 0020720 x C o r p o r a t i o n 1 9 0020740 7 9 \r \r / / S c a n C o n v e 0020760 r t e r f o r P R E P R E S 0021000 S a n d P R E S S \r / / T 0021020 h r o u g h o u t , t h e t 0021040 e r m i n o l o g y " s " i 0021060 s f o r " s c a n - l i n e 0021100 d i r e c t i o n " a n d \r 0021120 / / " r " i s f o r " r 0021140 u n d i r e c t i o n " . 0021160 T h e d i s t 376 001 \0 232 212 i n c 0021200 t i o n i s s i m p l y \r / 0021220 / o n e o f h o w t h e 0021240 s o r t i n g i s d o n e 0021260 - - f i r s t o n s , 0021300 t h e n o n r . \r / / F o 0021320 r a n A l t o s c r e e n 0021340 , s = v e r t i c a l ( y ) , 0021360 r = h o r i z o n t a l ( x ) 0021400 ; f o r S l o t , \r / / s 0021420 = h o r i z o n t a l ( x ) , 0021440 r = v e r t i c a l ( y ) \r \r / 0021460 / I N I T I A L I Z A T I O N 0021500 , e t c : \r / / S C V I n i t 0021520 ( g e t b l o c k , p u t b l o 0021540 c k , e r r o r ) \r / / \t B e g 0021560 i n s o p e r a t i o n 376 001 \0 0021600 253 L . T h e t h r e e a 0021620 r g u m e n t s a r e t h e 0021640 a d d r e s s e s o f \r / / 0021660 \t t h r e e s u b r o u t i n 0021700 e s n e e d e d : f o r g 0021720 e t t i n g a n d r e l e a 0021740 s i n g f r e e - s t o r a g 0021760 e \r / / \t b l o c k s , a n d 0022000 f o r e r r o r c o n d i 0022020 t i o n s . \r / / \t T h i s r 0022040 o u t i n e m a y b e c a 0022060 l l e d a n y n u m b e r 0022100 o f t i m e s . \r / / S C V M 0022120 a t r i x ( a , b , c , d ) \r / 0022140 / \t S e t s ( s c a l e ) t 0022160 r a n s f o r m a t i o n m a 0022200 t r 376 001 \0 ! 217 i x f r o m f 0022220 l o a t i n g \r / / \t p o i n t 0022240 n u m b e r s . A n a r 0022260 g u m e n t o f 0 i s t 0022300 a k e n a s s h o r t f o 0022320 r 0 . \r / / \t T r a n s f o r 0022340 m a t i o n i s : \r / / \t \t s 0022360 ' = a * s + c * r \r / / 0022400 \t \t r ' = b * s + d * r 0022420 \r / / S C V T r a n s F o r m F 0022440 ( s , r [ , v ] ) \r / / \t C a 0022460 r e f u l l y t r a n s f o r 0022500 m t h e p o i n t s s a 0022520 n d r b y t h e m a t r 0022540 i x , \r / / \t a n d r e t u r 0022560 n i n v ( o p t i o n a l 0022600 ) : \r / / \t v 376 001 \0 ; P ! 0 = s 0022620 \t v ! 1 = r \r / / \t a l s o l 0022640 e a v e s r e s u l t s i n 0022660 F P a c ' s 8 , 9 . \r \r / / 0022700 B U I L D I N G O B J E C T 0022720 D E S C R I P T I O N S : \r / 0022740 / S C V B e g i n O b j e c t ( 0022760 [ c a r e , m o n o t o n i c 0023000 , s e g p r o c , m a k e b 0023020 o t h m o n o t o n e ] ) \r / / 0023040 \t C a l l e d t o i n i t i 0023060 a l i z e f o r a n e w 0023100 o b j e c t . " c a r e " i 0023120 s t r u e \r / / \t i f y o u 0023140 w i s h c a r e f u l s c 0023160 a n - c o n v e r s i o n t o 0023200 b e d o n e ; d e 376 001 \0 352 0023220 273 f a u l t f a l s e . \r / / 0023240 \t " m o n o t o n i c " i s 0023260 t r u e i f y o u k n o w 0023300 t h a t a l l s p l i n e 0023320 s w i l l b e m o n o t o 0023340 n i c \r / / \t i n t h e s 0023360 d i r e c t i o n ; d e f a u 0023400 l t f a l s e . " s e g p 0023420 r o c , " i f n o t 0 , 0023440 i s c a l l e d \r / / \t e a c 0023460 h t i m e a b o u n d a r 0023500 y s e g m e n t i s r e a 0023520 d y ( s e e c o d e ) ; d 0023540 e f a u l t 0 . \r / / \t " m a 0023560 k e b o t h m o n o t o n e , " 0023600 i f t r u e , w i l l c 0023620 a 376 001 \0 025 + u s e s e g m e n 0023640 t s t o b e m o n o t o n 0023660 i c \r / / \t i n r a n d s 0023700 d i r e c t i o n s ; d e f 0023720 a u l t f a l s e . \r / / S C 0023740 V M o v e T o ( s , r ) a n 0023760 d S C V M o v e T o F ( s , r 0024000 ) \r / / \t L i k e P I C O M 0024020 O V E T O , f i x e d a n d 0024040 f l o a t i n g p o i n t 0024060 v e r s i o n s \r / / S C V D r 0024100 a w T o ( s , r ) a n d S C 0024120 V D r a w T o F ( s , r ) \r / / 0024140 \t L i k e P I C O D R A W T 0024160 O , f i x e d a n d f l o 0024200 a t i n g p o i n t v e r s 0024220 i o n s \r / 376 001 \0 ) # / S C V D 0024240 r a w C u r v e ( s ' , r ' , s 0024260 ' ' / 2 , r ' ' / 2 , s ' ' ' / 0024300 6 , r ' ' ' / 6 ) \r / / \t L i k 0024320 e P I C O D R A W C U R V E 0024340 , e x c e p t a r g u m e n 0024360 t s a r e c o e f f i c i e 0024400 n t s o f \r / / \t t h e p o 0024420 l y n o m i a l , r a t h e r 0024440 t h a n d e r i v a t i v e 0024460 s . \r / / S C V E n d O b j e c 0024500 t ( v ) \r / / \t F i n i s h e s 0024520 o u t a n o b j e c t , 0024540 a n d r e t u r n s i n v 0024560 ( s t r u c t u r e S C V ) 0024600 : \r / / \t v > > S C V . S m i n 0024620 , v > > S C V . S m 376 001 \0 360 9 0024640 a x \t E x t e n t o f o b j 0024660 e c t i n s . \r / / \t v > > 0024700 S C V . R m i n , v > > S C V 0024720 . R m a x \t E x t e n t o f 0024740 o b j e c t i n r . \r / / \t 0024760 v > > S C V . O b j e c t \t O b 0025000 j e c t d e s c r i p t o r 0025020 f o r t h e o b j e c t ( 0025040 n o t t o t a m p e r ! ) \r 0025060 / / \t v > > S C V . E r r o r \t 0025100 N o n - z e r o i f e r r o 0025120 r \r / / \t \t 1 = n o m o r e 0025140 c o r e \r / / \t \t 2 , 3 = i 0025160 n f i n i t e l o o p s i n 0025200 s p l i n e e v a l u a t i 0025220 o n s \r / / \t N B : t h e r 0025240 376 001 \0 & M v a l u e s a r e 0025260 o n l y f i l l e d i n 0025300 a c c u r a t e l y f o r \r / 0025320 / \t s p l i n e s i 0025340 f " c a r e " i s t r u e 0025360 i n S C V B e g i n O b j e 0025400 c t ! ! ! \r \r / / S C A N C 0025420 O N V E R S I O N : \r / / S C V 0025440 R e a d R u n s ( v , b u f f e 0025460 r , b u f s i z e ) \r / / \t C a 0025500 l c u l a t e a b u n c h 0025520 o f i n t e r s e c t i o n s 0025540 : \r / / \t v > > S C V . S b e g 0025560 i n a n d v > > S C V . S e 0025600 n d a r e t h e l i m i t 0025620 s ( i n c l u s i v e ) o f 0025640 t h e \r 376 001 \0 l 200 / / \t r e g 0025660 i o n y o u a r e r e q u 0025700 e s t i n g s c a n - c o n v 0025720 e r s i o n o f . Y o u \r 0025740 / / \t m u s t p r o c e e d 0025760 f r o m m i n s t o m a 0026000 x s ( a s r e t u r n e d 0026020 b y \r / / \t S C V E n d O b j 0026040 e c t i n v > > S C V . S m 0026060 i n a n d v > > S C V . S m 0026100 a x ) . \r / / \t " b u f f e r " 0026120 i s t h e a d d r e s s 0026140 o f a b u f f e r o f " 0026160 b u f s i z e " w o r d s t 0026200 o \r / / \t u s e t o s t o r 0026220 e i n t e r s e c t i o n s . 0026240 \r / / \t R e t u r n 376 001 \0 ! 244 s 0026260 i n v : \r / / \t v > > S C V 0026300 . S e n d \t M a x i m u m S 0026320 v a l u e c o n v e r t e d 0026340 t o \r / / \t \t \t i n t e r s e 0026360 c t i o n s ( w i l l b e 0026400 l e s s t h a n y o u \r / / 0026420 \t \t \t r e q u e s t e d i f 0026440 t h e r e w a s i n s u f f 0026460 i c i e n t b u f f e r ) \r / 0026500 / \t v > > S C V . I n t P t r \t 0026520 P o i n t e r t o f i r s t 0026540 i n t e r s e c t i o n . \r / 0026560 / \t v > > S C V . I n t C n t \t 0026600 N u m b e r o f i n t e r s 0026620 e c t i o n s r e t u r n e d 0026640 ( e v e n n o . ) . \r / / 376 0026660 001 \0 345 341 \t v > > S C V . O b j e 0026700 c t \t U p d a t e d o b j e c 0026720 t d e s c r i p t o r ( n o 0026740 t t o t a m p e r ! ) \r / / 0026760 S C V F l u s h ( v ) \r / / \t I 0027000 f y o u g e t a n o b j 0027020 e c t b a c k , a n d d o 0027040 n o t w i s h t o a c t 0027060 u a l l y \r / / \t g o t h r o 0027100 u g h w i t h t h e s c a 0027120 n c o n v e r s i o n , y o 0027140 u c a n r e t u r n a l l 0027160 \r / / \t s t o r a g e g r a c 0027200 e f u l l y w i t h S C V F 0027220 l u s h ( v ) . \r \r \r \r / / C o 0027240 m m e n t a b o u t b u f f 0027260 e r l 376 001 \0 267 037 a y o u t i 0027300 n t e r n a l l y . \r / / 0027320 2 w o r d s \t - i n f i n i 0027340 t y \r / / 2 n w o r d s \t i 0027360 n t e r s e c t i o n s \r / / 0027400 2 w o r d s \t + i n f i n i 0027420 t y \r \r \r g e t " s c v . d f 0027440 s " \r \r / / o u t g o i n g 0027460 p r o c e d u r e s \r e x t e r 0027500 n a l \r \t [ \r \t S C V I n i t \r 0027520 \t S C V M a t r i x \r \t S C V T 0027540 r a n s f o r m F \r \r \t S C V B 0027560 e g i n O b j e c t \r \t S C V M 0027600 o v e T o \r \t S C V M o v e T o 0027620 F \r \t S C V D r a w T o \r \t S C 0027640 V D r a w T o F \r \t S C V D r a 0027660 w C u r v e \r \t S 376 001 \0 U 346 C V 0027700 E n d O b j e c t \r \r \t S C V R 0027720 e a d R u n s \r \t S C V F l u s 0027740 h \r \t F l o o r \r \t ] \r \r / / 0027760 o u t g o i n g s t a t i c s 0030000 \r / / e x t e r n a l \r / / \t [ 0030020 \r / / \t ] \r / / s t a t i c \r / 0030040 / \t [ \r / / \t ] \r \r / / i n c 0030060 o m i n g p r o c e d u r e s 0030100 \r e x t e r n a l \r \t [ \r \t Z e 0030120 r o ; S e t B l o c k ; M o 0030140 v e B l o c k \r \t Q u i c k S o 0030160 r t \r \t F L D ; F S T ; F T 0030200 R ; F L D I ; F N E G ; F 0030220 A D ; F S B ; F M L ; F D 0030240 V ; \r \t F C M ; F S N ; F L 0030260 D V ; F S T V ; F L D D 376 001 0030300 \0 306 F P ; F S T D P ; D P A 0030320 D ; D P S B ; D P S H R \r \t 0030340 ] \r \r / / i n c o m i n g s 0030360 t a t i c s \r / / e x t e r n a 0030400 l \r / / \t [ \r / / \t ] \r \r / / 0030420 i n t e r n a l s t a t i c s 0030440 \r s t a t i c \r \t [ \r \t S C V G 0030460 e t B \t \t / / R o u t i n e t 0030500 o g e t f r e e s t o r a 0030520 g e \r \t S C V P u t B \t \t / / R 0030540 o u t i n e t o r e t u r n 0030560 f r e e s t o r a g e \r \r \t 0030600 c a r e f u l \t \t / / T r u e 0030620 i f c a r e f u l s c a n 0030640 c o n v e r s i o n \r \t m o n o 0030660 t o n e \t / / T r u e i f s 0030700 p l i 376 001 \0 211 217 n e s m o n o 0030720 t o n i c i n s \r \t m a k e 0030740 r m o n o t o n e \t / / T r u e 0030760 i f s p l i n e s t o b 0031000 e m a d e m o n o t o n e 0031020 i n r \r \t s e g p r o c \t \t / 0031040 / N o n - z e r o i f s e g 0031060 m e n t p r o c e d u r e e 0031100 x i s t s - - t h i s i s 0031120 i t \r \t n o m o c o \t \t / / T r 0031140 u e i f n o m o r e c o 0031160 r e a v a i l a b l e \r \t s i 0031200 m p l e s c a l e \t / / T r u e 0031220 i f o f f - d i a g n o a l 0031240 m a t r i x e l e m e n t s 0031260 z e r o \r \t s d i r m i n \t \t 0031300 / / C u r r e n 376 001 \0 222 345 t m 0031320 i n a n d m a x v a l u e 0031340 s \r \t s d i r m a x \r \t r d i r 0031360 m i n \r \t r d i r m a x \r \r \t l 0031400 a s t s \t \t / / S t a t e f o 0031420 r p u t s e g m e n t \r \t f i 0031440 r s t p i e c e \t / / T r u e 0031460 i f n e w M o v e T o \r \t f 0031500 i r s t p i e c e f l a g \t / / 0031520 S t a t e f o r p u t s e g 0031540 m e n t \r \t f i r s t p i e c e 0031560 p \t / / " \r \r \t t o d o 0031600 l i s t \t / / l i s t o f a 0031620 l l t h i n g s t o s c a 0031640 n c o n v e r t \r \t ] \r \r \r / 0031660 / P r o c e d u r e s \r \r l e 0031700 t \r \r \f S C V I n i t ( g 376 001 \0 0031720 204 313 e t b , p u t b ) b e [ 0031740 \r \t S C V G e t B = g e t b \r \t 0031760 S C V P u t B = p u t b \r ] \r \r 0032000 a n d \r \r S C V M a t r i x ( a 0032020 , b , c , d ) b e [ \r \t s i 0032040 m p l e s c a l e = f a l s e \r 0032060 \t f o r i = 0 t o 3 d o 0032100 \r \t \t t e s t ( l v a ) ! i 0032120 e q 0 t h e n F L D I ( 0032140 s s s a c + i , 0 ) \r \t \t \t \t 0032160 o r F L D ( s s s a c 0032200 + i , ( l v a ) ! i ) \r \t i f 0032220 F S N ( s r s a c ) e q 0 0032240 & F S N ( s s r a c ) e q 0032260 0 t h e n s i m p l e s c 0032300 a l e = t r u e \r ] \r \r a n d \r 0032320 \r S 376 001 \0 323 364 C V T r a n s f o 0032340 r m F ( s , r , v ; n u m a r 0032360 g s n a r g s ) b e [ \r \t 0032400 F L D ( t 1 , s ) ; F L D ( t 0032420 2 , r ) \r \t s c a l e i t ( t 1 0032440 , t 2 ) \t \t \t / / D o t r a n 0032460 s f o r m a t i o n . \r \t i f 0032500 n a r g s e q 2 t h e n 0032520 r e t u r n \r \t F L D I ( t 3 , 0032540 1 ) ; F L D I ( t 4 , 2 ) ; 0032560 F D V ( t 3 , t 4 ) ; F L D ( 0032600 t 4 , t 3 ) \r \t F A D ( t 3 , t 0032620 1 ) ; F A D ( t 4 , t 2 ) ; \r 0032640 \t v ! 0 = F T R ( t 3 ) \r \t v ! 0032660 1 = F T R ( t 4 ) \r ] \r \r a n d 0032700 \r \r s c a l e i t ( s , r ) b 0032720 e [ \r \t t e 376 001 \0 { 251 s t s 0032740 i m p l e s c a l e \r \t i f s 0032760 o \t [ \r \t \t F M L ( s , s s s 0033000 a c ) \r \t \t F M L ( r , s r r a 0033020 c ) \r \t \t ] \r \t i f n o t \t [ \r 0033040 \t \t F L D ( t 3 , s ) ; F M L 0033060 ( t 3 , s s s a c ) \r \t \t F L D 0033100 ( t 4 , r ) ; F M L ( t 4 , s 0033120 r s a c ) \r \t \t F A D ( t 3 , t 0033140 4 ) \t \t / / T 1 = n e w s \r \t 0033160 \t F L D ( t 4 , s ) \r \t \t F L D 0033200 ( s , t 3 ) \r \t \t F M L ( t 4 , 0033220 s s r a c ) \r \t \t F M L ( r , s 0033240 r r a c ) \r \t \t F A D ( r , t 4 0033260 ) \r \t \t ] \r ] \r a n d \r \r \f S C 0033300 V B e g i n O b j e c t ( c a r 0033320 e , m o n o , s e g , m 376 001 \0 215 0033340 273 a k e m o n o ; n u m a r g 0033360 s n a r g s ) b e [ \r \t s 0033400 w i t c h o n n a r g s i n 0033420 t o [ \t \t / / F i l l i n 0033440 d e f a u l t s \r \t c a s e 0 0033460 : \t c a r e = f a l s e \r \t c a 0033500 s e 1 : \t m o n o = f a l s e 0033520 \r \t c a s e 2 : \t s e g = 0 \r 0033540 \t c a s e 3 : \t m a k e m o n 0033560 o = f a l s e \r \t \t e n d c a s 0033600 e \r \t ] \r \t c a r e f u l = c a 0033620 r e \t \t \t / / S a v e i n s 0033640 t a t i c s \r \t m o n o t o n e 0033660 = m o n o \r \t s e g p r o c = s 0033700 e g \r \t m a k e r m o n o t o n 0033720 e = m a k e m o n o \r \r \t t o d 0033740 o 376 001 \0 R d l i s t = 0 \r \t f i 0033760 r s t p i e c e = t r u e \t \t \t 0034000 / / F l a g f o r M o v e T 0034020 o \r \t f i r s t p i e c e p = S 0034040 C V G e t B ( 4 * ( o r a c - e 0034060 s d + 1 ) ) \r \t n o m o c o = ( 0034100 f i r s t p i e c e p e q 0 0034120 ) \t \t / / T r u e i f n o 0034140 m o r e f s \r \t r d i r m i n 0034160 = p l u s i n f i n i t y ; 0034200 s d i r m i n = p l u s i n f i 0034220 n i t y \r \t r d i r m a x = m i 0034240 n u s i n f i n i t y ; s d i 0034260 r m a x = m i n u s i n f i n i 0034300 t y \r ] \r \r a n d \r \r S C V M o 0034320 v e T o ( s d i r , r d i r ) 0034340 b e [ \r \t 376 001 \0 026 352 u n l e s 0034360 s f i r s t p i e c e t h e 0034400 n f l u s h i t ( ) \r \t F L D 0034420 I ( o s a c , s d i r ) \r \t F L 0034440 D I ( o r a c , r d i r ) \r \t S 0034460 C V M o v e T o F ( ) \t \t \t / / 0034500 . . c o n t i n u e h e r e . 0034520 . \r ] \r \r a n d \r \r S C V M o v 0034540 e T o F ( s a c , r a c ; n u 0034560 m a r g s n ) b e [ \r / / 0034600 F l u s h a n y p r e v i o 0034620 u s c l o s e d c u r v e 0034640 a n d l o a d t h e " o l 0034660 d " p o i n t \r \t i f n t 0034700 h e n \r \t \t [ \r \t \t u n l e s s 0034720 f i r s t p i e c e t h e n 0034740 f l u s h i t ( ) \r 376 001 \0 m H 0034760 \t \t F L D ( o s a c , s a c ) \r 0035000 \t \t F L D ( o r a c , r a c ) \r 0035020 \t \t ] \r \t s c a l e i t ( o s a 0035040 c , o r a c ) \t \t / / D o M a 0035060 t r i x m u l t i p l y \r \t F 0035100 L D ( f s a c , o s a c ) \t \t \t 0035120 / / S a v e m e m o r y o f 0035140 f i r s t p o s i t i o n . 0035160 \r \t F L D ( f r a c , o r a c ) 0035200 \r ] \r \r a n d \r \r \f S C V D r a 0035220 w T o ( s d i r , r d i r ) b 0035240 e [ \r \t F L D I ( c s a c , s 0035260 d i r ) \r \t F L D I ( c r a c , 0035300 r d i r ) \r \t S C V D r a w T o 0035320 F ( ) \t \t \t / / . . c o n t i n 0035340 u e h e r e . . \r ] \r \r a n d 0035360 376 001 \0 6 337 \r \r S C V D r a w T o 0035400 F ( s a c , r a c ; n u m a r 0035420 g s n ) b e [ \r \t i f n 0035440 t h e n \r \t \t [ \r \t \t F L D ( 0035460 c s a c , s a c ) \r \t \t F L D ( 0035500 c r a c , r a c ) \r \t \t ] \r \t s 0035520 c a l e i t ( c s a c , c r a c 0035540 ) \t \t / / D o M a t r i x m 0035560 u l t i p l y \r \r / / N o w d 0035600 r a w l i n e f r o m " o 0035620 l d " p o i n t t o " c u 0035640 r r e n t " p o i n t . \r \t p 0035660 u t s e g m e n t ( 1 ) \t \t / / 0035700 E n t e r a d e s c r i p t 0035720 i o n . \r \t F L D ( o s a c , c 0035740 s a c ) \t \t \t / / O l d _ N e w 0035760 \r \t F L D 376 001 \0 307 177 ( o r a c , 0036000 c r a c ) \r ] \r \r \f / / S p l 0036020 i n e s t u f f . \r a n d \r \r 0036040 S C V D r a w C u r v e ( s , n 0036060 i l , n i l , n i l , n i l , n 0036100 i l ) b e [ \r c o m p i l e 0036120 i f S p l i n e H a n d l i n 0036140 g n e N o S p l i n e s t 0036160 h e n [ \r \t F L D ( e s d , o 0036200 s a c ) \r \t F L D ( e r d , o r 0036220 a c ) \t \t / / G e t 0 T h d 0036240 e r i v a t i v e \r \t f o r i 0036260 = 0 t o 5 d o F L D ( e 0036300 s c + i , ( l v s ) ! i ) \r \t 0036320 f o r i = e s c t o e s a 0036340 b y 2 d o s c a l e i t 0036360 ( i , i + 1 ) / / 376 001 \0 334 324 T 0036400 r a n s f o r m . \r \r / / N o w 0036420 b u s t t h e s p l i n e 0036440 i n t o s e c t i o n s \r / 0036460 / t h a t a r e m o n o t 0036500 o n i c i n t h e s c a n 0036520 d i r e c t i o n . \r \t / / R 0036540 O O T r e c o r d s t h e 0036560 v a l u e o f t i n F P 0036600 A C t 1 a s a s p o t 0036620 o n \r \t / / t h e c u r v e 0036640 t h a t i s a n i n t e 0036660 r n a l e x t r e m u m i n 0036700 s c a n d i r e c t i o n . 0036720 \r \t / / i t s o r t s t h 0036740 i s v a l u e i n t o a 0036760 t a b l e o f f l o a t i 376 0037000 001 \0 367 353 n g p o i n t \r \t / / 0037020 n u m b e r s , p o i n t e 0037040 d t o b y P T R . P T 0037060 R ! 0 i s t h e n u m b e 0037100 r o f r o o t s \r \t / / s 0037120 o f a r ( i n i t i a l l y 0037140 2 , t = 0 a n d t = 1 ) 0037160 . \r \t / / ( I f p t r = 0 , 0037200 w e a r e c a l c u l a t 0037220 i n g r e x t r e m a ) \r \t 0037240 l e t r o o t ( p t r ) b e 0037260 [ \r \t i f F S N ( t 1 0037300 ) e q 1 & F C M ( t 1 , 0037320 t a b l e [ # 4 0 3 0 0 ; 0 ] 0037340 ) e q - 1 t h e n \r \t \t t 0037360 e s t p t r n e 0 t h e 0037400 n \r \t \t 376 001 \0 004 315 \t [ / / R o 0037420 o t l i e s b e t w e e n 0037440 0 a n d 1 \r \t \t \t l e t i 0037460 = ( @ p t r ) * 2 - 1 ; l e t 0037500 j = i \r \t \t \t w h i l e F C 0037520 M ( t 1 , p t r + i ) e q - 0037540 1 d o i = i - 2 \r \t \t \t f o 0037560 r k = j + 1 t o i + 2 b 0037600 y - 1 d o p t r ! ( k + 2 0037620 ) = p t r ! k \r \t \t \t F S T ( t 0037640 1 , p t r + i + 2 ) \r \t \t \t @ p 0037660 t r = @ p t r + 1 \r \t \t \t ] \r \t 0037700 \t \t o r \r \t \t \t [ \r \t \t \t f e v 0037720 a l ( 1 , t 1 , t 2 ) \t \t / / g 0037740 e t r v a l u e \r \t \t \t l e 0037760 t r = F l o o r ( t 2 ) \t \t / 0040000 / t r u n c a t e 376 001 \0 340 ` \r \t 0040020 \t \t i f r l s r d i r m i 0040040 n t h e n r d i r m i n = r 0040060 \r \t \t \t i f r g r r d i r 0040100 m a x t h e n r d i r m a x 0040120 = r \r \t \t \t ] \r \t ] \r \r \t a n d 0040140 \r \r \t f i n d e x t r e m a ( p 0040160 t r , d ) b e [ \r \t l 0040200 e t e s b d = e s b + d \r \t 0040220 t e s t F S N ( e s a + d 0040240 ) n e 0 t h e n \r \t \t [ 0040260 \t \t \t \t / / A n e 0 \r \t \t F 0040300 L D I ( t 2 , - 3 ) ; F M L ( 0040320 t 2 , e s a + d ) \t / / - 3 A \r 0040340 \t \t F L D ( t 1 , e s b d ) ; 0040360 F M L ( t 1 , e s b d ) \r \t \t F 0040400 L D ( t 3 , t 2 ) ; F M L 376 001 0040420 \0 U 266 ( t 3 , e s c + d ) ; F 0040440 A D ( t 1 , t 3 ) / / B ^ 2 - 0040460 3 A C \r \t \t l e t b = F S N ( 0040500 t 1 ) \t \t \t / / S i g n o f 0040520 d i s c r i m i n a n t \r \t \t i 0040540 f b n e - 1 t h e n [ 0040560 \t \t / / P o s s i b l e r o o 0040600 t \r \t \t t e s t b e q 0 0040620 t h e n \r \t \t [ F L D ( 0040640 t 1 , e s b d ) ; F D V ( t 1 0040660 , t 2 ) ] \t / / - B / 3 A \r \t 0040700 \t o r [ \t \t \t \t / / T a k e 0040720 s q u a r e r o o t \r \t \t 0040740 l e t a = v e c 3 ; 0040760 F S T V ( t 1 , a ) ; a ! 1 = a 0041000 ! 1 / 2 ; F L D V ( t 3 , a ) \r 0041020 \t \t 376 001 \0 H 216 f o r 0041040 i = 0 t o 2 d o \r \t \t \t [ 0041060 \r \t \t \t F L D ( t 4 , t 1 ) 0041100 ; F D V ( t 4 , t 3 ) ; F A D ( 0041120 t 3 , t 4 ) \r \t \t \t F L D I 0041140 ( t 4 , 2 ) ; F D V ( t 3 , t 4 0041160 ) \r \t \t \t ] \r \t \t F D 0041200 V ( t 3 , t 2 ) \t \t \t / / S Q R 0041220 T ( b ^ 2 - 3 a c ) / - 3 a \r \t 0041240 \t F L D ( t 4 , e s b 0041260 d ) ; F D V ( t 4 , t 2 ) \t / / 0041300 B / - 3 A \r \t \t F L D 0041320 ( t 1 , t 4 ) ; F S B ( t 1 , t 0041340 3 ) \t / / + r o o t \r \t \t 0041360 r o o t ( p t r ) \r \t \t 0041400 F L D ( t 1 , t 4 ) ; F A 0041420 D ( t 1 , t 3 ) 376 001 \0 340 317 \t / / 0041440 - r o o t \r \t \t ] \r \t \t r 0041460 o o t ( p t r ) \t \t \t / / O t h 0041500 e r r o o t \r \t \t \t ] \t \t \t / 0041520 / P o s s i b l e r o o t \r \t 0041540 \t ] \r \t o r \r \t \t [ \t \t \t \t / / 0041560 A = 0 \r \t \t i f F S N ( e s b 0041600 d ) n e 0 t h e n \r \t \t \t 0041620 [ \r \t \t \t F L D ( t 1 , e s c + 0041640 d ) ; F D V ( t 1 , e s b d ) ; 0041660 F N E G ( t 1 ) \r \t \t \t F L D I 0041700 ( t 2 , 2 ) ; F D V ( t 1 , t 2 0041720 ) \t / / - C / 2 B \r \t \t \t r o o 0041740 t ( p t r ) \r \t \t \t ] \r \t \t ] \r 0041760 \t ] \r \r / / I f w e n e e d 0042000 b o u n d i n g b o x , r 0042020 e c o r d e x t r e m e 376 001 \0 0042040 ( : v a l u e s o f s a 0042060 n d r \r / / a t a n y i 0042100 n t e r i o r e x t r e m a . 0042120 P u t s e g m e n t w i l 0042140 l t a k e c a r e o f e 0042160 n d p o i n t \r / / e x t r e 0042200 m a . \r \t i f c a r e f u l 0042220 t h e n f i n d e x t r e m a 0042240 ( 0 , 1 ) \r \r \t l e t p t r = 0042260 v e c 1 3 ; Z e r o ( p t r 0042300 , 1 3 ) ; p t r ! 0 = 2 ; 0042320 p t r ! 3 = # 4 0 3 0 0 \r \t i f 0042340 n o t m o n o t o n e t h 0042360 e n \r \t \t [ \r \t \t i f m a k e 0042400 r m o n o t o n e t h e n f 0042420 i n d e x t r e m a ( p t r , 1 0042440 ) \r 376 001 \0 353 352 \t \t f i n d e x t 0042460 r e m a ( p t r , 0 ) \r \t \t ] \r 0042500 \r / / N o w t a b l e p t r 0042520 h a s v a l u e s o f t 0042540 \r / / t h a t c a u s e j 0042560 u n c t i o n s b e t w e e n 0042600 m o n o t o n i c s e g m e 0042620 n t s . \r / / " O l d " p o i 0042640 n t s a l r e a d y s e t 0042660 u p . \r \t F L D I ( t m a x a c 0042700 , 0 ) \r \t f o r i = 1 t o 0042720 p t r ! 0 - 1 d o \r \t \t [ \r \t 0042740 \t F L D ( t m i n a c , t m a x 0042760 a c ) \t \t / / N e w t m i n 0043000 i s o l d t m a x \r \t \t F L 0043020 D ( t m a x a c , p t r + i * 2 0043040 + 1 ) \t \t / / 376 001 \0 265 $ G e t 0043060 j u n c t i o n f r o m t a 0043100 b l e \r \t \t f e v a l ( 0 , t m 0043120 a x a c , c s a c ) \t \t / / E v 0043140 a l u a t e c u r r e n t p 0043160 o i n t s \r \t \t f e v a l ( 1 , 0043200 t m a x a c , c r a c ) \r \t \t p 0043220 u t s e g m e n t ( 0 ) \t \t \t / 0043240 / D o t h e s p l i n e \r \t 0043260 \t F L D ( o s a c , c s a c ) \t 0043300 \t \t / / S e t o l d p o i n 0043320 t s \r \t \t F L D ( o r a c , c r 0043340 a c ) \r \t \t ] \r ] \t \t \t \t \t / / 0043360 C o n d i t i o n a l a s s e 0043400 m b l y \r ] \r \r a n d \r \r \f S C 0043420 V E n d O b j e c t ( v ) b e 0043440 [ \r \t f l u s h i t ( 376 001 \0 B 0043460 001 ) \r \t S C V P u t B ( f i r s 0043500 t p i e c e p ) \r \t v > > S C V 0043520 . S m i n = s d i r m i n \r \t v 0043540 > > S C V . S m a x = s d i r m 0043560 a x \r \t v > > S C V . R m i n = 0043600 r d i r m i n \r \t v > > S C V . 0043620 R m a x = r d i r m a x \r \t v > 0043640 > S C V . O b j e c t = t o d o 0043660 l i s t \r \t v > > S C V . E r r 0043700 o r = ( n o m o c o n e 0 ? 0043720 1 , 0 ) \r ] \r \r a n d \r \r S C 0043740 V F l u s h ( v ) b e [ \r \t 0043760 l e t s = v > > S C V . O b j 0044000 e c t \r \t w h i l e s d o \r 0044020 \t \t [ \r \t \t l e t n s = s > > 0044040 H D . n e x t \r \t \t S C V P u t 0044060 B 376 001 \0 J 353 ( s ) \r \t \t s = n s 0044100 \r \t \t ] \r \t v > > S C V . O b j 0044120 e c t = 0 \r ] \r \r a n d \r \r f l 0044140 u s h i t ( ) b e [ \r \t u n 0044160 l e s s f i r s t p i e c e 0044200 t h e n \r \t \t [ \r \t \t F L D ( c 0044220 s a c , f s a c ) \r \t \t F L D ( 0044240 c r a c , f r a c ) \r \t \t p u t 0044260 s e g m e n t ( 2 ) \t / / J o i 0044300 n u p . \r \t \t p u t s e g m e 0044320 n t ( - 1 ) \t \t / / F l u s h 0044340 l a s t p i e c e . \r \t \t f i 0044360 r s t p i e c e = t r u e \r \t \t 0044400 ] \r ] \r \r a n d \r \r \f / / T h i 0044420 s f u n c t i o n c h e c k 0044440 s f o r c l o s u r e a n 0044460 d b u i l 376 001 \0 8 j d s L I 0044500 N E a n d S P L I N E \r / / 0044520 b l o c k s f o r l a t e r 0044540 r e f e r e n c e . \r / / E n 0044560 t r y c o n d i t i o n s : \r 0044600 / / L i n e ( l i n e f l a g 0044620 = 1 o r 2 ) : \r / / \t D r a 0044640 w a l i n e f r o m ( o 0044660 s a c , o r a c ) t o ( c s 0044700 a c , c r a c ) \r / / \t M u s t 0044720 l e a v e c s a c , c r a c 0044740 u n t o u c h e d b e c a u 0044760 s e t h e y a r e u s e d 0045000 \r / / \t t o r e s e t t h e 0045020 " o l d " p o i n t f o r 0045040 n e x t t i m e . \r / / S p 0045060 l i n e ( l i n e f 376 001 \0 277 " 0045100 l a g = 0 ) : \r / / \t D r a w 0045120 a s p l i n e f r o m ( o 0045140 s a c , o r a c ) t o ( c s 0045160 a c , c r a c ) w h i c h \r / 0045200 / \t c o r r e s p o n d s t o 0045220 v a l u e s o f t , t m 0045240 i n a c l e t l e t m a 0045260 x a c . \r / / \t C o e f f i c i 0045300 e n t s a r e i n e s a . 0045320 . . e s d a n d e r a . . . 0045340 e r d \r / / \t M u s t l e a v 0045360 e c s a c , c r a c u n c 0045400 h a n g e d . \r / / F i n i s h 0045420 u p c a l l ( l i n e f l 0045440 a g = - 1 ) : \r / / \t T h e r e 0045460 i s g l o b a l s t a t e 0045500 376 001 \0 m D i n : f i r s t p 0045520 i e c e , \r / / \t \t f i r s t p 0045540 i e c e p a n d f i r s t p 0045560 i e c e f l a g . . \r / / \t F i 0045600 r s t p i e c e i s t r u e 0045620 i f t h i s i s t h e 0045640 f i r s t s e g m e n t o f 0045660 a c l o s e d c u r v e . 0045700 \r \r p u t s e g m e n t ( l i n 0045720 e f l a g ) b e [ \r \r / / \t 0045740 e x t e r n a l T y p e F o r 0045760 m \r / / \t l e t s t r = v e c 0046000 2 \r / / \t T y p e F o r m ( 2 0046020 , c s a c , 3 2 , 2 , c r a c , 0046040 1 , s t r ) \r \r i f s e g p r 0046060 o c t h e n \r \t [ \t \t \t \t / / 0046100 L i n e f 376 001 \0 & u l a g = 0 , 0046120 1 o n l y ! ! ! ! \r \t s e g p 0046140 r o c ( l i n e f l a g ) \r \t r 0046160 e t u r n \r \t ] \r \r i f l i n 0046200 e f l a g l s 0 t h e n \r 0046220 \t [ \t \t \t \t / / R e s t o r e 0046240 a c c u m u l a t o r s \r \t l i 0046260 n e f l a g = f i r s t p i e c 0046300 e f l a g \r \t l e t p = f i r 0046320 s t p i e c e p \r \t f o r i = 0046340 ( l i n e f l a g ? c s a c , 0046360 e s d ) t o o r a c d o \r 0046400 \t \t [ F L D V ( i , p ) ; p 0046420 = p + 4 ] \r \t ] \r \r \t l e t 0046440 s m i n = F l o o r ( o s a c ) 0046460 \t \t / / V a l u e o f S a 0046500 t t m i n \r \t l e 376 001 \0 < 247 t 0046520 s m a x = F l o o r ( c s a c 0046540 ) \t \t / / V a l u e o f S 0046560 a t t m a x \r \r / / U p d a t 0046600 e r d i r e c t i o n e x 0046620 t r e m a ( m u s t d o b 0046640 e f o r e c h e c k i n g s 0046660 m i n = s m a x b e c a u s e 0046700 \r / / w e o n l y c h e 0046720 c k " c u r r e n t " v a l 0046740 u e o f r d i r e c t i o 0046760 n , s o w e m u s t c h 0047000 e c k e v e r y \r / / l e 0047020 g o f t h e c l o s e d 0047040 c u r v e ) . \r \t l e t r = F 0047060 l o o r ( c r a c ) \r \t i f r 0047100 l s r d i r m i n t h e 376 0047120 001 \0 004 @ n r d i r m i n = r \r 0047140 \t i f r g r r d i r m a x 0047160 t h e n r d i r m a x = r \r 0047200 \r \t i f s m i n e q s m a 0047220 x t h e n r e t u r n \t / / 0047240 N o i n t e r s e c t i o n s 0047260 . \r \t i f f i r s t p i e c e 0047300 t h e n \r \t \t [ \r \t \t f i r s 0047320 t p i e c e = f a l s e \r \t \t f 0047340 i r s t p i e c e f l a g = l i 0047360 n e f l a g \r \t \t l e t p = f 0047400 i r s t p i e c e p \r \t \t f o r 0047420 i = ( l i n e f l a g ? c s 0047440 a c , e s d ) t o o r a c 0047460 d o \r \t \t \t [ F S T V ( i , p 0047500 ) ; p = p + 4 ] \r \t \t l a s 0047520 t s = s 376 001 \0 q 346 m a x \t \t / / 0047540 T h i s i s w h a t w e 0047560 n e e d t o k n o w . \r \t \t 0047600 r e t u r n \r \t \t ] \r \r \t l e t 0047620 s t o p , s b o t = n i l , n 0047640 i l \r / / T h i s d i r e c t i 0047660 o n i s 1 i f i n c r e 0047700 a s i n g t g i v e s d e 0047720 c r e a s i n g s \r \t l e t 0047740 t h i s d i r e c t i o n = ( s 0047760 m i n g r s m a x ) ? 1 , - 0050000 1 \r \t t e s t t h i s d i r e 0050020 c t i o n e q 1 t h e n \r 0050040 \t \t [ s t o p = l a s t s ; 0050060 s b o t = s m a x + 1 ] \r \t o 0050100 r \r \t \t [ s t o p = s m a x ; 0050120 s b o t = l a s 376 001 \0 002 @ t s 0050140 + 1 ] \r \r / / U p d a t e s 0050160 d i r e c t i o n e x t r e 0050200 m a \t \r \t i f s b o t l s 0050220 s d i r m i n t h e n s d i 0050240 r m i n = s b o t \r \t i f s t 0050260 o p g r s d i r m a x t h 0050300 e n s d i r m a x = s t o p \r 0050320 \r / / S a v e s c a n - l i n 0050340 e i n t e r s e c t i o n s 0050360 t a t e f o r n e x t t i 0050400 m e . \r \t l a s t s = s m a x \r 0050420 \r \r / / G e t f r e e s t o 0050440 r a g e b l o c k t o h o 0050460 l d t h i s l i n e o r 0050500 s p l i n e \r \t i f n o m o c 0050520 o t h e n r e t u r n \t 376 001 0050540 \0 272 \b \t / / N o n e a v a i l 0050560 a b l e , r e t u r n \r \t l e 0050600 t n x s i z = n i l \r \t c o m 0050620 p i l e i f S p l i n e H a n 0050640 d l i n g e q A d d i t i v 0050660 e S p l i n e s t h e n [ 0050700 n x s i z = s i z e S P L I N 0050720 E / 1 6 ] \r \t c o m p i l e i 0050740 f S p l i n e H a n d l i n g 0050760 e q R e c u r s i v e S p l 0051000 i n e s t h e n [ n x s i 0051020 z = s i z e R S P L I N E / 1 0051040 6 ] \r \r \t l e t n x = S C V 0051060 G e t B ( ( l i n e f l a g ? 0051100 s i z e L I N E / 1 6 , n x s 0051120 i z ) ) \r \t i f n x e q 0 0051140 t h 376 001 \0 D 023 e n \r \t \t [ \t \t 0051160 \t / / O u t o f f r e e s 0051200 t o r a g e \r \t \t n o m o c o = 0051220 t r u e \t \t / / S a y s o . \r 0051240 \t \t l e t p = t o d o l i s t 0051260 \t \t / / \r \t \t w h i l e p d 0051300 o \t \t / / R e l e a s e c o r 0051320 e \r \t \t \t [ \r \t \t \t l e t n p 0051340 = p > > H D . n e x t \r \t \t \t S 0051360 C V P u t B ( p ) \r \t \t \t p = n 0051400 p \r \t \t \t ] \r \t \t r e t u r n \r 0051420 \t \t ] \r \r / / B u i l d d e s 0051440 c r i p t i o n o f l i n e 0051460 o r s p l i n e s e g m e 0051500 n t \r \r t e s t l i n e f l a 0051520 g t h e n \r \t [ / / L I N E 0051540 \r \t n x > > L I 376 001 \0 375 H N E . 0051560 t y p e = L I N E t y p e \r \t F 0051600 L D ( t 1 , c r a c ) ; F S B ( 0051620 t 1 , o r a c ) \t \t / / D e l t 0051640 a r \r \t F L D ( t 2 , c s a c 0051660 ) ; F S B ( t 2 , o s a c ) \t \t 0051700 / / D e l t a s \r \t F D V ( t 0051720 1 , t 2 ) ; F S T D P ( t 1 , l 0051740 v n x > > L I N E . d x ) \t / 0051760 / I n c r e m e n t e a c h 0052000 s c a n l i n e \r \t F L D I ( 0052020 t 2 , s b o t ) ; F S B ( t 2 , 0052040 o s a c ) \r \t F M L ( t 1 , t 2 0052060 ) ; F A D ( t 1 , o r a c ) \t \t 0052100 \t / / B o t t o m p o i n t . 0052120 \r \t F S T D P ( t 1 , l v n x 0052140 > > L I N E . x ) \t \t \t / 376 001 \0 0052160 365 C / a n d s a v e i t . \r 0052200 \t ] / / L I N E \r o r \r \t [ 0052220 / / S P L I N E \r c o m p i l e 0052240 i f S p l i n e H a n d l i n 0052260 g e q A d d i t i v e S p l 0052300 i n e s t h e n [ \r \t n x > 0052320 > S P L I N E . t y p e = S P L 0052340 I N E t y p e \r \r \t t e s t t 0052360 h i s d i r e c t i o n l s 0052400 0 t h e n \r \t \t [ \r \t \t F L 0052420 D ( t 1 , t m i n a c ) \r \t \t F 0052440 L D ( t 2 , t m a x a c ) ; F 0052460 S B ( t 2 , t m i n a c ) \r \t \t 0052500 ] \r \t o r \r \t \t [ \r \t \t F L D ( 0052520 t 1 , t m a x a c ) \r \t \t F L D 0052540 ( t 2 , t m i n a c ) ; F S B 0052560 ( t 376 001 \0 T # 2 , t m a x a c ) 0052600 \r \t \t ] \r \t F L D I ( t 3 , ( ( 0052620 s t o p - s b o t ) r s h i f 0052640 t 1 ) + 2 ) \t / / N e v a l s 0052660 \r \t F D V ( t 2 , t 3 ) \t \t \t \t 0052700 / / D e l t a T \r \t F S T ( t 0052720 1 , l v n x > > S P L I N E . 0052740 t 0 ) \r \t F S T ( t 2 , l v n 0052760 x > > S P L I N E . d t ) \t \t / 0053000 / S a v e i n b l o c k \r \t 0053020 f o r i = 0 t o e r a - e 0053040 s d d o F S T ( i + e s d , 0053060 ( l v n x > > S P L I N E . c 0053100 o e f f s ) + i * 2 ) \r ] \t \t \t 0053120 \t \t / / C o n d i t i o n a l 0053140 a s s y \r c o m p i l e i f S 0053160 p l i n e H a 376 001 \0 305 216 n d l i 0053200 n g e q R e c u r s i v e S 0053220 p l i n e s t h e n [ \r \t n 0053240 x > > R S P L I N E . t y p e = 0053260 S P L I N E t y p e \r \r \t t e s 0053300 t t h i s d i r e c t i o n 0053320 l s 0 t h e n \r \t \t [ \r \t \t 0053340 F L D ( t 1 , t m i n a c ) \t \t 0053360 \t / / t 1 i s a t l o w 0053400 s e n d \r \t \t F L D ( t 2 , t 0053420 m a x a c ) \r \t \t ] \r \t o r \r \t 0053440 \t [ \r \t \t F L D ( t 1 , t m a x 0053460 a c ) \r \t \t F L D ( t 2 , t m i 0053500 n a c ) \r \t \t ] \r \t \r / / C E 0053520 V A L c o m p u t e s a n d 0053540 f i l l s i n F ( t a c ) 0053560 v a l u e s a n d 376 001 \0 \b 0053600 " G ( t a c ) v a l u e s . \r 0053620 / / \t I n d x = 0 f o r s 0053640 d i r e c t i o n , 1 f o r 0053660 r . \r \t l e t c e v a l ( i 0053700 n d x , t a c , p t r ) b e 0053720 [ \r \t \t f e v a l ( i n d x , t 0053740 a c , t 4 ) \t \t \t / / G e t v 0053760 a l u e o f f u n c t i o n 0054000 . \r \t \t F S T D P ( t 4 , p t r 0054020 ) \t \t \t / / P u t d o w n v 0054040 a l u e . \r \t \t F L D I ( t 4 , 0054060 3 ) ; F M L ( t 4 , e s a + i n 0054100 d x ) ; F M L ( t 4 , t a c ) 0054120 / / 3 A t \r \t \t F A D ( t 4 , e 0054140 s b + i n d x ) \t \t \t / / 3 A t 0054160 + B \r \t \t F M L ( t 4 , t 3 ) \t 0054200 \t 376 001 \0 \v 204 \t / / ( d t ^ 2 ) ( 0054220 3 A t + B ) \r \t \t F S T D P ( t 0054240 4 , p t r + 2 ) \t \t \t / / P u t 0054260 i t d o w n . \r \t \t ] \r \t \r 0054300 \t F L D ( t 3 , t 2 ) ; F S B ( 0054320 t 3 , t 1 ) ; F M L ( t 3 , t 3 0054340 ) \t / / ( d t ^ 2 ) \r \t c e v a 0054360 l ( 0 , t 1 , l v n x > > R S 0054400 P L I N E . s t l ) \r \t c e v a 0054420 l ( 1 , t 1 , l v n x > > R S 0054440 P L I N E . r t l ) \r \t c e v a 0054460 l ( 0 , t 2 , l v n x > > R S 0054500 P L I N E . s t r ) \r \t c e v a 0054520 l ( 1 , t 2 , l v n x > > R S 0054540 P L I N E . r t r ) \r ] \t \t \t \t 0054560 \t / / C o n d i t i o n a l a 0054600 s s y \r \t ] 376 001 \0 266 216 / / S P 0054620 L I N E \r \r / / R e c o r d s 0054640 o m e c o m m o n i n f o r 0054660 m a t i o n i n t h e b l 0054700 o c k . \r \t n x > > H D . s m i 0054720 n = s b o t \r \t n x > > H D . s 0054740 m a x = s t o p \r \t n x > > H D 0054760 . n e x t = t o d o l i s t ; 0055000 t o d o l i s t = n x \r ] \r \r a 0055020 n d \r \r \f / / H e r e i s 0055040 t h e m a i n r o u t i n e 0055060 f o r c a l c u l a t i n g 0055100 i n t e r s e c t i o n s , 0055120 a n d s t u f f i n g \r / / 0055140 t h e m i n t h e b u f f 0055160 e r . C a l l s Q u i c k 0055200 S o r t t o s o r 376 001 \0 357 l 0055220 t i n t e r s e c t i o n s . 0055240 \r \r S C V R e a d R u n s ( v , 0055260 b u f f e r , b u f s i z e ) 0055300 b e [ \r \t l e t i b u f s i 0055320 z e = ( b u f s i z e r s h i 0055340 f t 1 ) - 2 \t / / M a x n o 0055360 . o f i n t e r s e c t i o 0055400 n s \r \t \t \t \t \t \t / / ( l e a v 0055420 e r o o m f o r 2 g u a 0055440 r d s ) \r \t l e t L S c a n = 0055460 v > > S C V . S b e g i n \r \t l 0055500 e t R S c a n = v > > S C V . 0055520 S e n d \r \t l e t p , c , l , 0055540 r = n i l , n i l , n i l , n i 0055560 l \r \r \t [ \r \t c = 0 \r \t p = v > 0055600 > S C V . O b j e c t \r \t w h i 0055620 376 001 \0 s l l e p n e 0 d 0055640 o \r \t \t [ \t \t \t \t / / S e e i 0055660 f e n o u g h r o o m \r \t \t 0055700 i f p > > H D . s m i n l e 0055720 R S c a n t h e n \r \t \t \t [ 0055740 \t \t \t / / W e n e e d t o 0055760 l o o k a t i t \r \t \t \t l = 0056000 p > > H D . s m i n \r \t \t \t i f 0056020 l l s L S c a n t h e n 0056040 l = L S c a n \r \t \t \t r = p > 0056060 > H D . s m a x \r \t \t \t i f r 0056100 g r R S c a n t h e n r 0056120 = R S c a n \r \t \t \t c = c + r - 0056140 l + 1 \t \t / / N u m b e r o f 0056160 i n t e r s e c t i o n s \r \t 0056200 \t \t ] \r \t \t p = p > > H D . n e 0056220 x t \r \t \t 376 001 \0 262 t ] \r \t t e s 0056240 t c g r i b u f s i z e 0056260 \r \t \t i f s o R S c a n = ( L 0056300 S c a n + R S c a n ) / 2 \r \t \t 0056320 i f n o t b r e a k \r \t ] r 0056340 e p e a t \r \r / / N o w i t 0056360 i s s a f e t o s c a n 0056400 f r o m L S c a n t o R S 0056420 c a n i n c l u s i v e - - 0056440 \r / / b u f f e r w i l l 0056460 n o t o v e r f l o w . \r \r \t 0056500 l e t b = b u f f e r + 2 \t \t 0056520 \t \t / / P o i n t e r t o i 0056540 n t e r s e c t i o n s . \r \t l 0056560 e t p p = ( l v v > > S C V 0056600 . O b j e c t ) - ( l v 0 > > 0056620 H D . n e x t ) \r \t 376 001 \0 316 027 p 0056640 = p p > > H D . n e x t \r \t w h 0056660 i l e p n e 0 d o \r \t \t 0056700 [ \t \t \t \t / / L o o p s c a n 0056720 c o n v e r t i n g . \r \t \t i 0056740 f p > > H D . s m i n l e 0056760 R S c a n t h e n \r \t \t [ \r \t 0057000 \t l = p > > H D . s m i n ; i 0057020 f l l s L S c a n t h e 0057040 n l = L S c a n \r \t \t r = p > 0057060 > H D . s m a x ; i f r g 0057100 r R S c a n t h e n r = R 0057120 S c a n \r \r \t \t s w i t c h o n 0057140 p > > H D . t y p e i n t o 0057160 \r \t \t [ \r \t \t c a s e L I N E 0057200 t y p e : \r \t \t \t f o r s = l 0057220 t o r d o \r \t \t \t \t [ \r 376 0057240 001 \0 0 201 \t \t \t \t b ! 0 = s ; b 0057260 ! 1 = ( l v p > > L I N E . x 0057300 ) ! 0 \r \t \t \t \t b = b + 2 \r \t \t 0057320 \t \t D P A D ( l v p > > L I N 0057340 E . x , l v p > > L I N E . d 0057360 x ) \r \t \t \t \t ] \r \t \t \t e n d c 0057400 a s e \r \t \t c a s e S P L I N 0057420 E t y p e : \r c o m p i l e i f 0057440 S p l i n e H a n d l i n g 0057460 e q A d d i t i v e S p l i n 0057500 e s t h e n [ \r \t \t \t f o r 0057520 i = 0 t o e r a - e s d 0057540 d o \r \t \t \t F L D ( i + e s 0057560 d , ( l v p > > S P L I N E . 0057600 c o e f f s ) + i * 2 ) \r \t \t \t 0057620 F L D ( t 1 , l v p > > S P L 0057640 I N E . 376 001 \0 363 i t 0 ) \r \t \t \t 0057660 F L D ( t t 1 , l v p > > S P 0057700 L I N E . d t ) \r \t \t \t F A D ( 0057720 F L D ( t 2 , t 1 ) , t t 1 ) \r 0057740 \t \t \t f e v a l ( 0 , t 1 , t 3 0057760 ) \r \t \t \t f e v a l ( 0 , t 2 , 0060000 t 4 ) \r \r / / I d e a i s t 0060020 o a l w a y s h a v e t w 0060040 o p o i n t s ( s a y 0 0060060 a n d 1 ) \r / / t h a t s p 0060100 a n t h e S v a l u e r 0060120 e q u i r e d . T h e n w 0060140 e u s e s e c a n t a p p 0060160 r o x i m a t i o n \r / / t o 0060200 c a l c u l a t e a n i n t 0060220 e r s e c t i o n . T h e 0060240 i n i t i a l i z 376 001 \0 320 x a t 0060260 i o n c o d e t r i e s \r / 0060300 / t o g e t : \r / / \t A C t 0060320 1 = T 0 \t * * s t o r e d 0060340 i n b l o c k \r / / \t A C 0060360 t 2 = T 1 \r / / \t A C t 3 0060400 = F s ( T 0 ) \r / / \t A C 0060420 t 4 = F s ( T 1 ) \r / / \t A 0060440 C t t 1 = d t \t * * s t o 0060460 r e d i n b l o c k \r \r \t f 0060500 o r s = l t o r d o \r \t 0060520 \t [ \t \t \t \t / / M a i n l o o 0060540 p \r \t \t F L D I ( t t 2 , s ) \t 0060560 \t \t / / S s o u g h t \r \t \t \t 0060600 \t \t \t / / I f s < F s ( T 0 ) 0060620 u s e T 0 \r \t \t t e s t F 0060640 C M ( t t 2 , t 3 ) l s 376 001 0060660 \0 312 366 0 t h e n F L D ( t t 0060700 2 , t 1 ) o r \r \t \t \t [ \r \t \t 0060720 \t l e t c n t = - 1 0 0 \r \t \t 0060740 \t w h i l e F C M ( t t 2 , t 0060760 4 ) e q 1 d o \r \t \t \t \t [ 0061000 \t \t / / s > F s ( T 1 ) \r \t \t \t 0061020 \t F L D ( t 1 , t 2 ) \t / / T 0 0061040 _ T 1 \r \t \t \t \t F L D ( t 3 , t 0061060 4 ) \r \t \t \t \t F A D ( t 2 , t t 0061100 1 ) \t / / T 1 _ T 1 + d e l t a 0061120 T \r \t \t \t \t f e v a l ( 0 , t 0061140 2 , t 4 ) \t / / n e w v a l 0061160 u e \r \t \t \t \t c n t = c n t + 1 0061200 \r \t \t \t \t i f c n t e q 0 0061220 t h e n \r \t \t \t \t \t [ \r \t \t \t 0061240 \t \t v > > S C V . E r r o r = 2 0061260 / / 376 001 \0 3 212 I n f i n i t e 0061300 l o o p \r \t \t \t \t \t r e t u r 0061320 n \r \t \t \t \t \t ] \r \t \t \t \t ] \r \t 0061340 \t \t F M L ( F S B ( t t 2 , t 3 0061360 ) , t t 1 ) \t / / S e c a n t \r 0061400 \t \t \t F S B ( F L D ( t t 3 , t 0061420 4 ) , t 3 ) \r \t \t \t F A D ( F D 0061440 V ( t t 2 , t t 3 ) , t 1 ) \r \t 0061460 \t \t ] \r \t \t f e v a l ( 1 , t t 0061500 2 , t t 3 ) \t \t / / t t 3 = 0061520 F r ( T ) \r \t \t l e t l x = F 0061540 l o o r ( t t 3 ) \r \t \t b ! 0 = 0061560 s ; b ! 1 = l x \t \t \t / / A l 0061600 l t h e w o r k f o r 2 0061620 v a l u e s ! \r \t \t b = b + 2 0061640 \r \t \t ] \r \t \t \t F S T ( t 1 , l 0061660 v p > > S P L 376 001 \0 350 322 I N E 0061700 . t 0 ) \t / / S a v e f o r 0061720 m o r e ? ? \r ] \t \t \t \t \t / / C 0061740 o n d i t i o n a l a s s y \r 0061760 c o m p i l e i f S p l i n e 0062000 H a n d l i n g e q R e c u 0062020 r s i v e S p l i n e s t h e 0062040 n [ \r \t \t \t l e t o n e h a 0062060 l f = t a b l e [ 0 ; # 1 0 0062100 0 0 0 0 ] / / D P 1 / 2 \r 0062120 \t \t \t l e t t o l e r a n c e 0062140 = t a b l e [ 0 ; # 1 0 0 0 0062160 0 0 ] / / D P 1 / 2 \r \r / 0062200 / L a y o u t o f " s t a c 0062220 k " : e a c h e n t r y 0062240 i s 1 6 w o r d s , d i v 0062260 i d e d i n t o \r / / \t 376 001 \0 0062300 S 3 4 D P n u m b e r s f 0062320 o r S d i r e c t i o n , 0062340 f o l l o w e d b y \r / / \t 4 0062360 D P n u m b e r s f o r 0062400 R d i r e c t i o n ( s e e 0062420 s t r u c t u r e R S P L I 0062440 N E ) \r / / E a c h b l o c k 0062460 o f f o u r i s : \r / / \t 0062500 \t F ( t r i g h t ) \r / / \t \t 0062520 G ( t r i g h t , n ) \r / / \t 0062540 \t F ( t l e f t ) \r / / \t \t 0062560 G ( t l e f t , n ) \r / / ( s 0062600 e e S p r o u l l n o t e s 0062620 f o r m e a n i n g o f 0062640 F , G ) \r \t \t \t l e t s p = v 0062660 e c 2 0 0 \t \t / / S t a c k s 0062700 . \r 376 001 \0 [ E \t \t \t l e t s e 0062720 = s p - 1 6 \t \t / / E n d i f 0062740 y o u g e t h e r e \r \t \t 0062760 \t M o v e B l o c k ( s p , l v 0063000 p > > R S P L I N E . s t r , 0063020 1 6 ) \r \t \t \t l e t s = l \t \t 0063040 \t / / S c a n - l i n e n u m 0063060 b e r \r \t \t \t i f s p ! 4 e 0063100 q s t h e n \t / / B e g i n 0063120 s e x a c t l y a t s . \r 0063140 \t \t \t [ \r \t \t \t b ! 0 0063160 = l ; b ! 1 = s p ! 1 2 \t / / 0063200 I n t e r s e c t i o n . \r \t \t 0063220 \t b = b + 2 ; s = s + 1 0063240 \r \t \t \t ] \r \t \t [ \t i f s 0063260 p e q s e t h e n b r e 0063300 a k \t / / S t 376 001 \0 265 5 a c k 0063320 e m p t y \r \t \t \t t e s t s p 0063340 ! 0 l s s t h e n \t / / R 0063360 i g h t e d g e < s l \r \t 0063400 \t \t [ \r \t \t \t s p = s 0063420 p - 1 6 ; \t \t / / P o p s t 0063440 a c k , m o v e r i g h t \r 0063460 \t \t \t ] o r \r \t \t \t t e s 0063500 t s p ! 0 e q s & ( v a 0063520 l o f [ \r \t \t \t \t l e t v = 0063540 v e c 2 \r \t \t \t \t v ! 0 = s p 0063560 ! 0 ; v ! 1 = s p ! 1 / / L 0063600 a r g e r S . \r \t \t \t \t D P S 0063620 B ( v , s p + 4 ) \t / / m i n u 0063640 s s m a l l e r S . \r \t \t \t 0063660 \t l e t a = D P S B ( v , t o 0063700 l e r a n c e ) \r \t \t \t 376 001 \0 243 0063720 D \t i f a l s 0 t h e n 0063740 r e s u l t i s t r u e / 0063760 / S m a l l e n o u g h \r \t \t 0064000 \t \t r e s u l t i s f a l s e 0064020 \t / / S e a r c h t o f i n 0064040 e r d e t a i l \r \t \t \t \t ] ) 0064060 t h e n \r \t \t \t [ \t \t \t / 0064100 / O u t p u t a p o i n t . 0064120 \r \t \t \t l e t r a = D P 0064140 A D ( s p + 8 , s p + 1 2 ) \t / 0064160 / A v e r a g e t w o R ' s 0064200 \r \t \t \t b ! 0 = s ; b ! 0064220 1 = ( r a + 1 ) / 2 \t / / R v 0064240 a l u e ( r o u n d e d ) \r \t 0064260 \t \t b = b + 2 \r \t \t \t 0064300 i f s e q r t h e n 0064320 b 376 001 \0 277 316 r e a k \t / / d o n 0064340 e \r \t \t \t s = s + 1 \t \t / 0064360 / B u m p s c a n - l i n e 0064400 c o u n t \r \t \t \t s p = s 0064420 p - 1 6 \t \t / / P o p s t a c 0064440 k . \r \t \t \t ] o r \r \t \t \t 0064460 [ \t \t \t / / S u b d i v i d 0064500 e . . . . \r \t \t \t l e t 0064520 x = s p \t \t / / P a r t o f 0064540 s t a c k t o s u b d i v i 0064560 d e \r \t \t \t f o r i = 0 0064600 t o 1 d o \t / / T w o b 0064620 l o c k s o n s t a c k . \r 0064640 \t \t [ \t \t \t \t / / S u b d i v i 0064660 d e s t a c k " x " : \r \t \t 0064700 \t \t \t \t / / x ! 0 , 1 F ( 0064720 t r i g h t 376 001 \0 217 225 ) \r \t \t \t 0064740 \t \t \t / / x ! 2 , 3 G ( t 0064760 r i g h t , n ) \r \t \t \t \t \t \t / 0065000 / x ! 4 , 5 F ( t l e f t 0065020 ) \r \t \t \t \t \t \t / / x ! 6 , 7 0065040 G ( t l e f t , n ) \r \t \t \t 0065060 l e t x 2 = x + 2 ; l e t 0065100 x 6 = x + 6 ; l e t x 4 = x 0065120 + 4 \r \t \t \t D P S H R ( x 2 ) ; 0065140 D P S H R ( x 2 ) \t / / G r i 0065160 g h t \r \t \t \t D P S H R ( x 6 ) 0065200 ; D P S H R ( x 6 ) \t / / G l 0065220 e f t \r \t \t \t x ! 2 2 = x ! 6 ; 0065240 x ! 2 3 = x ! 7 \t / / G l e f t 0065260 i n p l a c e \r \t \t \t D P A 0065300 D ( x 6 , x 2 ) \t \t / / G l e f 0065320 t + G r i g h t \r \t \t 376 001 \0 m 001 0065340 \t D P S H R ( x 6 ) \t \t / / G m 0065360 i d d l e \r \t \t \t x ! 1 8 = x ! 0065400 6 ; x ! 1 9 = x ! 7 \t / / a n 0065420 d a g a i n \r \t \t \t x ! 2 0 = 0065440 x ! 4 ; x ! 2 1 = x ! 5 \t / / X 0065460 l e f t i n p l a c e \r \t \t 0065500 \t D P A D ( x 4 , x ) \t \t / / X 0065520 l e f t + X r i g h t \r \t \t \t D 0065540 P S H R ( x 4 ) \t \t / / * . 5 0065560 \r \t \t \t D P S B ( x 4 , x 6 ) \t 0065600 \t / / . 5 ( X l e f t + X r i g 0065620 h t ) - G m i d d l e \r \t \t \t x 0065640 ! 1 6 = x ! 4 ; x ! 1 7 = x ! 5 0065660 \t \t / / X m i d d l e a g a i 0065700 n \r \r \t \t \t x = x + 8 \t \t \t / / 0065720 D o t h e o t h e r b l o 0065740 376 001 \0 < k c k n e x t t i m 0065760 e . \r \t \t ] \r \r \t \t \t s p = 0066000 s p + 1 6 \t \t / / B u m p s t 0066020 a c k s . \r \t \t \t ] \t \t \t / 0066040 / S u b d i v i d e \r \t \t ] r 0066060 e p e a t \t \t \t / / R e c u r s 0066100 i v e l o o p \r \t \t \t i f s 0066120 n e r t h e n \r \t \t \t \t [ 0066140 \r \t \t \t \t v > > S C V . E r r o 0066160 r = 3 \r \t \t \t \t r e t u r n \r \t 0066200 \t \t \t ] \r ] \t \t \t \t \t / / C o n 0066220 d i t i o n a l a s s y \r \t \t 0066240 \t e n d c a s e \r \t \t ] \t \t \t \t 0066260 / / s w i t c h o n \r \t \t i f 0066300 p > > H D . s m a x l e R S 0066320 c a n t h e n \r \t \t \t [ \t \t \t 0066340 / / E x h 376 001 \0 021 213 a u s t s \r 0066360 \t \t \t p p > > H D . n e x t = p 0066400 > > H D . n e x t \r \t \t \t S C V 0066420 P u t B ( p ) \r \t \t \t p = p p \r 0066440 \t \t \t ] \r \t \t ] \r \t \t p p = p \r 0066460 \t \t p = p > > H D . n e x t \t \t 0066500 \t / / L o o k a t n e x t \r 0066520 \t ] \t \t \t \t \t / / w h i l e p 0066540 n e 0 \r \r \t Q u i c k S o r 0066560 t ( b u f f e r , c ) \t \t \t / / 0066600 S o r t t h e i n t e r s e 0066620 c t i o n s \r \r \t v > > S C V . 0066640 S e n d = R S c a n \t \t \t / / S 0066660 p e a k t o u s e r \r \t v > 0066700 > S C V . I n t C n t = c \r \t v 0066720 > > S C V . I n t P t r = b u f 0066740 f e r + 2 \r ] \r \r a 376 001 \0 363 017 n 0066760 d \r \r f e v a l ( i n d x , t a 0067000 c , r a c ) b e [ \r c o m p 0067020 i l e i f S p l i n e H a n d 0067040 l i n g n e N o S p l i n e 0067060 s t h e n [ \r / / E v a l u 0067100 a t e t h e s p l i n e ( 0067120 i n d x = 0 , s d i r e c t 0067140 i o n ; 1 r d i r e c t i 0067160 o n ) \r / / t a c = A C w i 0067200 t h v a l u e o f t ; r 0067220 a c = A C f o r r e s u l t 0067240 \r \t F L D ( r a c , e s a + i n 0067260 d x ) \r \t F M L ( r a c , t a c 0067300 ) \r \t F A D ( r a c , e s b + i 0067320 n d x ) \r \t F M L ( r a c , t a 0067340 c ) \r \t F A D ( r a c , e s c 376 0067360 001 \0 c 311 + i n d x ) \r \t F M L ( 0067400 r a c , t a c ) \r \t F A D ( r a 0067420 c , e s d + i n d x ) \r ] \t \t \t 0067440 \t \t / / C o n d i t i o n a l 0067460 a s s y \r ] \r \r a n d \r \r F l o 0067500 o r ( a c ) = v a l o f [ 0067520 \t \t \t / / S t a n d a r d f l 0067540 o o r f u n c t i o n \r \t l e 0067560 t a = F T R ( a c ) \r \t i f 0067600 F S N ( a c ) l s 0 t h e 0067620 n \r \t \t [ \r \t \t l e t s 1 = v 0067640 e c 3 \r \t \t l e t s 2 = v e 0067660 c 3 \r \t \t F S T V ( a c , s 1 0067700 ) \t / / S a v e s o m e a c 0067720 ' s \r \t \t F S T V ( 3 1 , s 2 ) 0067740 \r \t \t a = - a + 4 \t \t / / G e t 0067760 n u m 376 \0 241 251 / b e r t o 0070000 m a k e p o s i t i v e \r \t \t 0070020 F L D I ( 3 1 , a ) \r \t \t F A D 0070040 ( a c , 3 1 ) \t / / M a k e i 0070060 t p o s i t i v e \r \t \t a = F 0070100 T R ( a c ) - a \t / / T a k e 0070120 f l o o r a n d s u b t r a 0070140 c t o f f s e t \r \t \t F L D V 0070160 ( 3 1 , s 2 ) \r \t \t F L D V ( a 0070200 c , s 1 ) \r \t \t ] \r \r \t r e s u 0070220 l t i s a \r ] \r \r 377 \0 \0 s c v 0070240 s o r t . b c p l \0 376 001 \0 s 356 / 0070260 / S C V S O R T 0070300 - - S C A N C O N V E R T E 0070320 R ( P R E P R E S S ) \r 0070340 / / c a t a l o g n u m b e 0070360 r ? ? ? \r / / C o p y r i g 0070400 h t X e r o x C o r p o r a 0070420 t i o n 1 9 7 9 \r \r / / S o 0070440 r t r o u t i n e f o r 0070460 s c a n c o n v e r s i o n \r 0070500 \r g e t " s c v . d f s " \r \r 0070520 / / o u t g o i n g p r o c 0070540 e d u r e s \r e x t e r n a l \r 0070560 \t [ \r \t Q u i c k S o r t \r \t ] 0070600 \r \r / / o u t g o i n g s t 0070620 a t i c s \r / / e x t e r n a l 0070640 \r / / \t [ \r / / \t ] \r / / s t 376 0070660 001 \0 ^ 342 a t i c \r / / \t [ \r / / 0070700 \t ] \r \r / / i n c o m i n g 0070720 p r o c e d u r e s \r / / e x t 0070740 e r n a l \r / / \t [ \r / / \t ] \r 0070760 \r / / i n c o m i n g s t a 0071000 t i c s \r / / e x t e r n a l \r 0071020 / / \t [ \r / / \t ] \r \r / / i n 0071040 t e r n a l s t a t i c s \r / 0071060 / s t a t i c \r / / \t [ \r / / \t 0071100 ] \r \r / / F i l e - w i d e 0071120 s t r u c t u r e a n d m a 0071140 n i f e s t d e c l a r a t i 0071160 o n s . \r \r \r / / P r o c e d 0071200 u r e s \r \r l e t \r \r / / Q u i 0071220 c k S o r t : s o r t a n 0071240 a r r a y o f d o u b l e 0071260 w o r d 376 001 \0 177 e s . K n u t 0071300 h v . 3 p . 1 1 6 . \r / / 0071320 \t C o m p a r i s o n t e s t 0071340 i s : f i r s t w o r d 0071360 f i r s t , t h e n s e c o 0071400 n d w o r d \r / / \t ( T h i s 0071420 i s l i k e a t w o - c 0071440 h a r a c t e r k e y , n o 0071460 t l i k e a d o u b l e - 0071500 p r e c i s i o n \r / / \t n u m 0071520 b e r . ) \r / / b = > t h e 0071540 a r r a y . \r / / n = n u m 0071560 b e r o f e l e m e n t s 0071600 t o s o r t ( n o t c o u 0071620 n t i n g g u a r d s ) . n 0071640 < 3 2 0 0 0 \r / / ( i . 0071660 e . f i r s t 376 001 \0 371 275 e l 0071700 e m e n t i s i n b ! 2 0071720 a n d b ! 3 , l a s t i n 0071740 b ! ( 2 n ) a n d b ! ( 2 0071760 n + 1 ) \r / / C o m m e n t a 0072000 b o u t b u f f e r l a y o 0072020 u t i n t e r n a l l y . 0072040 \r / / 2 w o r d s \t - i n 0072060 f i n i t y \r / / 2 n w o r 0072100 d s \t i n t e r s e c t i o n s 0072120 \r / / 2 w o r d s \t + i n 0072140 f i n i t y \r \r Q u i c k S o r 0072160 t ( b , n ) b e [ \r \t l e t 0072200 n 2 = n l s h i f t 1 \r \t 0072220 l e t b 1 = b + 1 \r \t b ! 0 = 0072240 m i n u s i n f i n i t y \t / / 0072260 N e g a t i v e g u a r d 376 001 0072300 \0 354 340 \r \t b ! ( n 2 + 2 ) = p l 0072320 u s i n f i n i t y \t / / P o s 0072340 i t i v e g u a r d \r \t l e t 0072360 s t a c k = v e c 2 0 ; l 0072400 e t s t a c k 1 = v e c 2 0 0072420 \r \t l e t s t p t r = 0 \t \t / 0072440 / Q u i c k s o r t s t a c k 0072460 . \r \t l e t l = 2 \t \t \t / / Q 0072500 1 \r \t l e t r = n 2 \t \t / / s 0072520 e t l e f t , r i g h t \r \t l 0072540 e t i , j , k , k 1 = n i l , 0072560 n i l , n i l , n i l \r [ \t \t \t 0072600 \t \t \t \t / / Q 2 \r \t t e s t r 0072620 - l g r 2 0 t h e n \r \t \t 0072640 [ \r \t \t i = l ; j = r \r \t \t k 0072660 = b ! l ; k 1 = b 1 ! l \r \t \t 0072700 [ \t \t 376 001 \0 i 222 \t \t \t / / Q 3 \r 0072720 \t \t w h i l e k l s b ! j 0072740 % \r \t \t ( k e q 0072760 b ! j & k 1 l s b 1 ! 0073000 j ) d o j = j - 2 \r \t \t i f 0073020 j l e i t h e n [ b 0073040 ! i = k ; b 1 ! i = k 1 ; b 0073060 r e a k ] / / Q 4 \r \t \t b ! 0073100 i = b ! j ; b 1 ! i = b 1 ! j 0073120 ; i = i + 2 \r \t \t w h i l e 0073140 b ! i l s k % \t \t \t / / Q 0073160 5 \r \t \t ( b ! i e 0073200 q k & b 1 ! i l s k 1 0073220 ) d o i = i + 2 \r \t \t i f 0073240 j l e i t h e n [ b ! 0073260 j = k ; b 1 ! j = k 1 ; i = 0073300 j ; b r e a k 376 001 \0 244 ( ] 0073320 / / Q 6 \r \t \t b ! j = b ! i ; 0073340 b 1 ! j = b 1 ! i ; j = j - 2 0073360 \r \t \t ] r e p e a t \r \t \t t e 0073400 s t r - i g e i - l t h 0073420 e n \t \t \t / / Q 7 \r \t \t [ 0073440 s t a c k ! s t p t r = i + 2 0073460 ; s t a c k 1 ! s t p t r = r 0073500 ; r = i - 2 ] \r \t \t o r \r \t 0073520 \t [ s t a c k ! s t p t 0073540 r = l ; s t a c k 1 ! s t p t 0073560 r = i - 2 ; l = i + 2 ] \r \t 0073600 \t s t p t r = s t p t r + 1 \r \t 0073620 \t ] \r \t o r \r \t \t [ \t \t \t \t \t / 0073640 / Q 8 \r \t \t f o r j = l + 2 0073660 t o r b y 2 d o \r \t \t 0073700 [ \r \t \t k = b ! 376 001 \0 0073720 = 025 j ; k 1 = b 1 ! j ; i = 0073740 j - 2 \r \t \t w h i l e b 0073760 ! i g r k % \r \t \t 0074000 ( b ! i e q k & b 1 0074020 ! i g r k 1 ) d o \r \t \t \t 0074040 [ \r \t \t \t l e t i 2 = i + 2 \r 0074060 \t \t \t b ! i 2 = b ! i \r \t \t \t b 0074100 1 ! i 2 = b 1 ! i \r \t \t \t i = i 0074120 - 2 \r \t \t \t ] \r \t \t l e t 0074140 i 2 = i + 2 \r \t \t b ! i 0074160 2 = k ; b 1 ! i 2 = k 1 \r \t \t 0074200 ] \r \t \t i f s t p t r 0074220 e q 0 t h e n b r e a k \t 0074240 \t / / Q 9 \r \t \t s t p t r = s t 0074260 p t r - 1 \r \t \t l = s t a c k ! 0074300 s t p t r ; r = s t a c k 1 ! 0074320 s t 376 \0 025 004 t p t r \r \t \t ] \r ] 0074340 r e p e a t \r ] \r \r \0 377 \0 \0 s 0074360 c v t e s t . b c p l \0 376 001 \0 > 0074400 332 / / S C V T E S T . B c p l 0074420 - - S C V D e m o n s t r 0074440 a t i o n \r / / C o p y r i g 0074460 h t X e r o x C o r p o r a 0074500 t i o n 1 9 7 9 \r \r / / B L 0074520 D R S C V T E S T S C V M A 0074540 I N S C V S O R T F L O A T 0074560 \r \r g e t " s c v . d f s " \r 0074600 \r \r / / o u t g o i n g p r 0074620 o c e d u r e s \r / / e x t e r 0074640 n a l \r / / \t [ \r / / \t ] \r \r / 0074660 / o u t g o i n g s t a t i 0074700 c s \r / / e x t e r n a l \r / / 0074720 \t [ \r / / \t ] \r / / s t a t i c 0074740 \r / / \t [ \r / / \t ] \r \r / / i 0074760 n c o m i n g p r o c e d u r 0075000 e 376 001 \0 207 371 s \r e x t e r n a l 0075020 \r \t [ \r \t S C V I n i t \r \t S C 0075040 V M a t r i x \r \t S C V T r a n 0075060 s f o r m F \r \r \t S C V B e g i 0075100 n O b j e c t \r \t S C V M o v e 0075120 T o \r \t S C V M o v e T o F \r \t 0075140 S C V D r a w T o \r \t S C V D r 0075160 a w T o F \r \t S C V D r a w C u 0075200 r v e \r \t S C V E n d O b j e c 0075220 t \r \r \t S C V R e a d R u n s \r 0075240 \r \t F L D ; F S T ; F T R ; 0075260 F L D I ; F N E G ; F A D 0075300 ; F S B ; F M L ; F D V ; 0075320 \r \t F C M ; F S N ; F L D V 0075340 ; F S T V ; F L D D P ; F 0075360 S T D P ; D P A D ; D P S B 0075400 ; \r \r \t I n 376 001 \0 W 030 i t i a l 0075420 i z e Z o n e ; A l l o c a t 0075440 e ; F r e e \r \r \t G e t F i x 0075460 e d \r \t G e t s ; Z e r o ; 0075500 S e t B l o c k ; W s \r \t ] \r 0075520 \r / / i n c o m i n g s t a 0075540 t i c s \r e x t e r n a l \r \t [ 0075560 \r \t k e y s \r \t ] \r \r \r s t a t 0075600 i c \r \t [ \r \t D i s p \r \t T Z o 0075620 n e \r \t ] \r / / F i l e - w i 0075640 d e s t r u c t u r e a n d 0075660 m a n i f e s t d e c l a r 0075700 a t i o n s . \r \r \r m a n i f e 0075720 s t D B p t r = # 4 2 0 \r \r s 0075740 t r u c t u r e D B : [ \r \t 0075760 n e x t w o r d \r \t r e s o l 0076000 u t i o n b i t 1 376 001 \0 C 323 0076020 \r \t b a c k g r o u n d b i t 0076040 1 \r \t i n d e n t a t i o n 0076060 b i t 6 \r \t w i d t h b i t 0076100 8 \r \t b i t M a p A d d r e s 0076120 s w o r d \r \t h e i g h t w 0076140 o r d \r \t ] \r m a n i f e s t 0076160 l D B = s i z e D B / 1 6 0076200 \r \r m a n i f e s t [ \r \t D i 0076220 s H e i g h t = 4 0 0 \r \t D i s 0076240 W i d t h W o r d s = 3 6 \r \t ] 0076260 \r \r / / P r o c e d u r e s \r 0076300 \r l e t \r \r M a i n ( ) b e 0076320 [ \r \t l e t d c = G e t F i x 0076340 e d ( D i s W i d t h W o r d s 0076360 * D i s H e i g h t + 6 ) \r \t i 0076400 f ( d c & 1 ) n e 0 t h 0076420 376 001 \0 c I e n d c = d c + 1 \r 0076440 \t D i s p = d c + l D B \t \t / / 0076460 P o i n t e r t o b i t s . 0076500 \r \t Z e r o ( D i s p , D i s W 0076520 i d t h W o r d s * D i s H e i 0076540 g h t ) \r \r \t d c > > D B . r e 0076560 s o l u t i o n = 0 \r \t d c > > 0076600 D B . b a c k g r o u n d = 0 \r 0076620 \t d c > > D B . i n d e n t a t 0076640 i o n = 0 \r \t d c > > D B . w i 0076660 d t h = D i s W i d t h W o r d 0076700 s \r \t d c > > D B . b i t M a p 0076720 A d d r e s s = D i s p \r \t d c 0076740 > > D B . h e i g h t = D i s H 0076760 e i g h t / 2 \r \t d c > > D B . 0077000 n e x t = @ D B p t r \r \t @ D B 0077020 p t r = d 376 001 \0 e 311 c \t \t / / L 0077040 i n k e d i n . \r \r \t l e t 0077060 z = G e t F i x e d ( 2 0 0 0 ) 0077100 \t / / F o r A L L O C \r \t T Z 0077120 o n e = I n i t i a l i z e Z o 0077140 n e ( z , 2 0 0 0 ) \r \r / / N o 0077160 w " s h o w " g o o d i e s 0077200 . \r \t C o n v e r t ( t r u e , 0077220 T r i a n g l e ) \t / / S h o w 0077240 a t r i a n g l e . \r ] \r \r 0077260 a n d \r \r C o n v e r t ( w i p 0077300 e , f i g u r e ) b e [ \r \t 0077320 i f w i p e t h e n Z e r 0077340 o ( D i s p , D i s W i d t h W 0077360 o r d s * D i s H e i g h t ) \t 0077400 / / W h i t e s c r e e n . \r 0077420 \r \t S C V I n i t ( 376 001 \0 266 T 0077440 A l l o c , T F r e e , E r r o 0077460 r ) \t / / I n i t i a l i z e 0077500 S C V \r \t F L D I ( 2 , 1 ) \r \t 0077520 S C V M a t r i x ( 2 , 0 , 0 , 0077540 2 ) \t / / S e t m a t r i x . 0077560 \r \r \r \t l e t v = v e c s i 0077600 z e S C V / 1 6 \r \t S C V B e 0077620 g i n O b j e c t ( f a l s e ) 0077640 \t / / S t a r t a n o b j e 0077660 c t \r \t f i g u r e ( ) \t \t \t / 0077700 / C a l l t h e f i g u r e 0077720 . \r \t S C V E n d O b j e c t ( 0077740 v ) \t \t / / D o n e . \r \r \r \t l 0077760 e t b = v e c 2 0 0 \r \t v > 0100000 > S C V . S b e g i n = v > > S 0100020 C V . S m i n \t / / F i r s t 376 0100040 001 \0 364 323 r a n g e \r \t \t [ \r \t 0100060 \t v > > S C V . S e n d = v > > 0100100 S C V . S m a x \t / / A s s u m 0100120 e e n t i r e r a n g e f 0100140 i t s . \r \t \t S C V R e a d R u 0100160 n s ( v , b , 2 0 0 ) \t / / C a 0100200 l c u l a t e i n t e r s e c 0100220 t i o n s . \r \t \t l e t n = v 0100240 > > S C V . I n t C n t \r \t \t i 0100260 f n e q 0 t h e n b r 0100300 e a k \t / / A l l d o n e . \r 0100320 \t \t l e t p = v > > S C V . I 0100340 n t P t r \r \t \t f o r i = 1 0100360 t o n b y 2 d o \t / / L 0100400 o o p f o r e a c h r u n 0100420 . \r \t \t \t [ \r \t \t \t l e t S = 0100440 p ! 0 \t 376 001 \0 233 304 \t / / S v a 0100460 l u e \r \t \t \t S h o w R u n ( S 0100500 , p ! 1 , p ! 3 - 1 ) \r \t \t \t p 0100520 = p + 4 \t \t / / N e x t i n t 0100540 e r s e c t i o n p a i r . \r 0100560 \t \t \t ] \r \t \t v > > S C V . S b 0100600 e g i n = v > > S C V . S e n d 0100620 + 1 / / P r e p a r e n e x 0100640 t S r a n g e . \r \t \t ] r 0100660 e p e a t \r \t G e t s ( k e y s 0100700 ) \t \t \t / / W a i t a b i t 0100720 . \r ] \r \r a n d \r \r S h o w R u 0100740 n ( s , r 1 , r 2 ) b e [ \r 0100760 / / S h o w r u n o n s c 0101000 a n - l i n e s , r 1 t o 0101020 r 2 i n c l u s i v e . \r \t 0101040 u n l e s s r 2 376 001 \0 < c g 0101060 e r 1 t h e n r e t u r n 0101100 \r \t l e t b i t p a t t e r n 0101120 = - 1 \r \r \t l e t r 1 w o r d 0101140 = r 1 r s h i f t 4 \r \t l e 0101160 t r 2 w o r d = r 2 r s h i 0101200 f t 4 \r \t l e t r 1 m a s k 0101220 = n o t ( - 1 r s h i f t 0101240 ( r 1 & # 1 7 ) ) \r \t l e t 0101260 r 2 m a s k = n o t ( - 1 0101300 r s h i f t ( ( r 2 & # 1 0101320 7 ) + 1 ) ) \r \t l e t f w = ( 0101340 D i s H e i g h t - s - 1 ) * D 0101360 i s W i d t h W o r d s + D i s 0101400 p \r \r \t l e t b i t s = ( f w 0101420 ! r 1 w o r d & r 1 m a s k 0101440 ) % ( b i t p a t t e r n 376 001 0101460 \0 } | & ( n o t r 1 m a s k 0101500 ) ) \r \t f o r i = r 1 w o r d 0101520 t o r 2 w o r d - 1 d o 0101540 [ f w ! i = b i t s ; b i t 0101560 s = b i t p a t t e r n ] \r \t 0101600 f w ! r 2 w o r d = ( b i t s 0101620 & r 2 m a s k ) % ( f w ! r 2 0101640 w o r d & ( n o t r 2 m a 0101660 s k ) ) \r ] \r \r a n d \r \r T r i 0101700 a n g l e ( ) b e [ \r \t S C 0101720 V M o v e T o ( 0 , 0 ) \r \t S C 0101740 V D r a w T o ( 1 0 , 0 ) \r \t S 0101760 C V D r a w T o ( 5 , 1 0 ) \r ] 0102000 \r \r a n d \r \r E r r o r ( s ) 0102020 b e [ \r \t W s ( " E r r o r ! 0102040 ! ! ! * N " ) \r \t f i n i s h \r 0102060 ] \r \r 376 \0 D : 312 a n d \r \r T A l 0102100 l o c ( a ) = A l l o c a t 0102120 e ( T Z o n e , a ) \r \r a n d 0102140 \r \r T F r e e ( a ) = F r e 0102160 e ( T Z o n e , a ) \r 377 \0 \0 s 0102200 c v t o m a x c \0 376 \0 210 331 ; d u 0102220 m p / v / c s c v . d m s c 0102240 v m a i n . b r s c v s o r t 0102260 . b r s c v . d f s s c v m 0102300 a i n . b c p l s c v s o r t 0102320 . b c p l s c v t e s t . b c 0102340 p l s c v t o m a x c ; ^ \r 0102360 f t p m a x c c / c p r e 0102400 s s l l s 3 1 s / c s c v 0102420 . d m ^ \r 374 0102427