$ od -c -N 50000 [Indigo]<AltoSource>SCV.DM!1
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