home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 1 / ARM_CLUB_CD.iso / contents / demos / t / teapot / !Teapot / Gen2 < prev    next >
Unknown  |  1990-01-15  |  14.9 KB

open in: MacOS 8.1     |     Win98     |     DOS

view JSON data     |     view as text


This file was not able to be converted.
This format is not currently supported by dexvert.

ConfidenceProgramDetectionMatch TypeSupport
10% dexvert Truevision Targa Graphic (image/tga) magic Supported
100% file data default
100% xdgMime image/x-tga default (weak)



hex view
+--------+-------------------------+-------------------------+--------+--------+
|00000000| 0d 00 0a 0b f4 20 3e 47 | 65 6e 32 0d 00 14 05 3a |..... >G|en2....:|
|00000010| 0d 00 1e 2b ff 22 52 4d | 45 6e 73 75 72 65 20 44 |...+."RM|Ensure D|
|00000020| 72 69 76 65 72 55 74 69 | 6c 73 20 30 20 52 4d 4c |riverUti|ls 0 RML|
|00000030| 6f 61 64 20 44 72 69 76 | 65 72 22 0d 00 28 09 eb |oad Driv|er"..(..|
|00000040| 31 32 3a 87 0d 00 32 0b | 6e 75 6d 25 3d 37 37 0d |12:...2.|num%=77.|
|00000050| 00 3c 0c f2 50 61 6c 65 | 74 74 65 0d 00 46 0a f2 |.<..Pale|tte..F..|
|00000060| 41 73 73 65 6d 0d 00 50 | 0a f2 53 65 74 75 70 0d |Assem..P|..Setup.|
|00000070| 00 5a 0d f2 4c 6f 61 64 | 44 61 74 61 0d 00 64 23 |.Z..Load|Data..d#|
|00000080| f2 43 6f 6d 70 61 63 74 | 56 65 72 74 69 63 65 73 |.Compact|Vertices|
|00000090| 28 76 65 72 74 65 78 25 | 2c 65 64 67 65 25 29 0d |(vertex%|,edge%).|
|000000a0| 00 6e 21 f2 43 6f 6d 70 | 61 63 74 45 64 67 65 73 |.n!.Comp|actEdges|
|000000b0| 28 65 64 67 65 25 2c 70 | 6f 6c 79 67 6f 6e 25 29 |(edge%,p|olygon%)|
|000000c0| 0d 00 78 24 f2 44 65 67 | 65 6e 65 72 61 74 65 45 |..x$.Deg|enerateE|
|000000d0| 64 67 65 73 28 65 64 67 | 65 25 2c 70 6f 6c 79 67 |dges(edg|e%,polyg|
|000000e0| 6f 6e 25 29 0d 00 82 28 | f2 43 72 6f 73 73 52 65 |on%)...(|.CrossRe|
|000000f0| 66 65 72 65 6e 63 65 45 | 64 67 65 73 28 65 64 67 |ferenceE|dges(edg|
|00000100| 65 25 2c 70 6f 6c 79 67 | 6f 6e 25 29 0d 00 8c 23 |e%,polyg|on%)...#|
|00000110| f2 52 6f 74 61 74 65 28 | 76 65 72 74 65 78 25 2c |.Rotate(|vertex%,|
|00000120| 70 6f 6c 79 67 6f 6e 25 | 2c 61 72 62 28 29 29 0d |polygon%|,arb()).|
|00000130| 00 96 0e ff 22 4d 4f 55 | 4e 54 20 30 22 0d 00 a0 |...."MOU|NT 0"...|
|00000140| 19 ff 22 44 69 72 20 21 | 54 65 61 70 6f 74 2e 46 |.."Dir !|Teapot.F|
|00000150| 72 61 6d 65 73 22 0d 00 | aa 04 0d 00 b4 14 20 20 |rames"..|...... |
|00000160| e3 66 72 61 6d 65 25 3d | 31 b8 6e 75 6d 25 0d 00 |.frame%=|1.num%..|
|00000170| be 35 20 20 74 68 65 74 | 61 3d 66 72 61 6d 65 25 |.5 thet|a=frame%|
|00000180| 2a 32 2a af 2f 6e 75 6d | 25 3a 63 73 74 3d 9b 28 |*2*./num|%:cst=.(|
|00000190| 74 68 65 74 61 29 3a 73 | 6e 74 3d b5 28 74 68 65 |theta):s|nt=.(the|
|000001a0| 74 61 29 0d 00 c8 18 20 | 20 f2 47 65 74 54 72 61 |ta).... | .GetTra|
|000001b0| 6e 73 66 6f 72 6d 61 74 | 69 6f 6e 0d 00 d2 25 20 |nsformat|ion...% |
|000001c0| 20 f2 52 6f 74 61 74 65 | 28 76 65 72 74 65 78 25 | .Rotate|(vertex%|
|000001d0| 2c 70 6f 6c 79 67 6f 6e | 25 2c 61 72 62 28 29 29 |,polygon|%,arb())|
|000001e0| 0d 00 dc 29 20 20 f2 56 | 65 72 74 65 78 4e 6f 72 |...) .V|ertexNor|
|000001f0| 6d 61 6c 73 28 76 65 72 | 74 65 78 25 2c 65 64 67 |mals(ver|tex%,edg|
|00000200| 65 25 2c 6c 69 73 74 25 | 29 0d 00 e6 07 20 20 db |e%,list%|).... .|
|00000210| 0d 00 f0 11 20 20 f2 44 | 72 61 77 54 65 61 70 6f |.... .D|rawTeapo|
|00000220| 74 0d 00 fa 2c 20 20 f2 | 50 72 6f 63 65 73 73 4e |t..., .|ProcessN|
|00000230| 6f 69 73 65 28 78 31 25 | 2c 79 31 25 2c 78 31 25 |oise(x1%|,y1%,x1%|
|00000240| 2b 78 32 25 2c 79 31 25 | 2b 79 32 25 29 0d 01 04 |+x2%,y1%|+y2%)...|
|00000250| 0d 20 20 f2 43 72 75 6e | 63 68 0d 01 0e 07 20 20 |. .Crun|ch.... |
|00000260| ed 0d 01 18 04 0d 01 22 | 05 e0 0d 01 2c 05 3a 0d |......."|....,.:.|
|00000270| 01 36 05 3a 0d 01 40 0b | dd f2 53 65 74 75 70 0d |.6.:..@.|..Setup.|
|00000280| 01 4a 20 6f 78 25 3d 36 | 34 30 3a 6f 79 25 3d 35 |.J ox%=6|40:oy%=5|
|00000290| 31 32 3a ef 32 39 2c 6f | 78 25 3b 6f 79 25 3b 0d |12:.29,o|x%;oy%;.|
|000002a0| 01 54 2b 78 31 25 3d 32 | 36 30 2d 6f 78 25 3a 79 |.T+x1%=2|60-ox%:y|
|000002b0| 31 25 3d 32 30 30 2d 6f | 79 25 3a 78 32 25 3d 37 |1%=200-o|y%:x2%=7|
|000002c0| 36 30 3a 79 32 25 3d 36 | 38 30 0d 01 5e 32 de 20 |60:y2%=6|80..^2. |
|000002d0| 76 65 72 74 65 78 25 20 | 26 30 33 2c 65 64 67 65 |vertex% |&03,edge|
|000002e0| 25 20 26 30 33 2c 70 6f | 6c 79 67 6f 6e 25 20 26 |% &03,po|lygon% &|
|000002f0| 30 33 2c 6e 75 6c 6c 25 | 20 26 30 33 0d 01 68 35 |03,null%| &03..h5|
|00000300| de 20 70 78 28 32 2c 32 | 29 2c 70 79 28 32 2c 32 |. px(2,2|),py(2,2|
|00000310| 29 2c 70 7a 28 32 2c 32 | 29 2c 6d 78 28 32 2c 32 |),pz(2,2|),mx(2,2|
|00000320| 29 2c 6d 79 28 32 2c 32 | 29 2c 6d 7a 28 32 2c 32 |),my(2,2|),mz(2,2|
|00000330| 29 0d 01 72 25 de 20 66 | 75 6e 28 32 2c 32 29 2c |)..r%. f|un(2,2),|
|00000340| 69 6e 76 28 32 2c 32 29 | 2c 61 72 62 28 32 2c 32 |inv(2,2)|,arb(2,2|
|00000350| 29 2c 70 28 32 29 0d 01 | 7c 1a e3 6e 25 3d 30 b8 |),p(2)..||..n%=0.|
|00000360| 32 3a 69 6e 76 28 6e 25 | 2c 6e 25 29 3d 31 3a ed |2:inv(n%|,n%)=1:.|
|00000370| 0d 01 86 27 74 68 65 74 | 61 3d 31 2e 31 3a 63 73 |...'thet|a=1.1:cs|
|00000380| 74 3d 9b 28 74 68 65 74 | 61 29 3a 73 6e 74 3d b5 |t=.(thet|a):snt=.|
|00000390| 28 74 68 65 74 61 29 0d | 01 90 33 e3 72 6f 77 25 |(theta).|..3.row%|
|000003a0| 3d 30 b8 32 3a e3 63 6f | 6c 25 3d 30 b8 32 3a f3 |=0.2:.co|l%=0.2:.|
|000003b0| 71 24 3a 70 78 28 72 6f | 77 25 2c 63 6f 6c 25 29 |q$:px(ro|w%,col%)|
|000003c0| 3d a0 28 71 24 29 3a ed | 3a ed 0d 01 9a 25 74 68 |=.(q$):.|:....%th|
|000003d0| 65 74 61 3d 32 3a 63 73 | 74 3d 9b 28 74 68 65 74 |eta=2:cs|t=.(thet|
|000003e0| 61 29 3a 73 6e 74 3d b5 | 28 74 68 65 74 61 29 0d |a):snt=.|(theta).|
|000003f0| 01 a4 33 e3 72 6f 77 25 | 3d 30 b8 32 3a e3 63 6f |..3.row%|=0.2:.co|
|00000400| 6c 25 3d 30 b8 32 3a f3 | 71 24 3a 70 79 28 72 6f |l%=0.2:.|q$:py(ro|
|00000410| 77 25 2c 63 6f 6c 25 29 | 3d a0 28 71 24 29 3a ed |w%,col%)|=.(q$):.|
|00000420| 3a ed 0d 01 ae 13 61 72 | 62 28 29 3d 70 78 28 29 |:.....ar|b()=px()|
|00000430| 2e 70 79 28 29 0d 01 b8 | 18 6c 65 6e 25 3d 26 39 |.py()...|.len%=&9|
|00000440| 30 30 30 30 3a 21 6e 75 | 6c 6c 25 3d 30 0d 01 c2 |0000:!nu|ll%=0...|
|00000450| 40 de 20 73 74 61 72 74 | 25 20 6c 65 6e 25 2d 31 |@. start|% len%-1|
|00000460| 2c 76 25 28 33 29 2c 65 | 25 28 33 29 3a 73 74 61 |,v%(3),e|%(3):sta|
|00000470| 63 6b 25 3d 73 74 61 72 | 74 25 3a 65 6e 64 25 3d |ck%=star|t%:end%=|
|00000480| 73 74 61 72 74 25 2b 6c | 65 6e 25 2d 34 0d 01 cc |start%+l|en%-4...|
|00000490| 14 70 65 72 25 3d 32 30 | 30 30 3a 73 66 3d 31 30 |.per%=20|00:sf=10|
|000004a0| 30 0d 01 d6 1f f4 20 44 | 69 72 65 63 74 69 6f 6e |0..... D|irection|
|000004b0| 20 6f 66 20 6c 69 67 68 | 74 20 73 6f 75 72 63 65 | of ligh|t source|
|000004c0| 0d 01 e0 19 73 78 3d 31 | 30 30 30 3a 73 79 3d 35 |....sx=1|000:sy=5|
|000004d0| 30 30 3a 73 7a 3d 31 30 | 30 0d 01 ea 05 e1 0d 01 |00:sz=10|0.......|
|000004e0| f4 05 3a 0d 01 fe 17 dd | f2 47 65 74 54 72 61 6e |..:.....|.GetTran|
|000004f0| 73 66 6f 72 6d 61 74 69 | 6f 6e 0d 02 08 05 f7 0d |sformati|on......|
|00000500| 02 12 33 e3 72 6f 77 25 | 3d 30 b8 32 3a e3 63 6f |..3.row%|=0.2:.co|
|00000510| 6c 25 3d 30 b8 32 3a f3 | 71 24 3a 70 78 28 72 6f |l%=0.2:.|q$:px(ro|
|00000520| 77 25 2c 63 6f 6c 25 29 | 3d a0 28 71 24 29 3a ed |w%,col%)|=.(q$):.|
|00000530| 3a ed 0d 02 1c 33 e3 72 | 6f 77 25 3d 30 b8 32 3a |:....3.r|ow%=0.2:|
|00000540| e3 63 6f 6c 25 3d 30 b8 | 32 3a f3 71 24 3a 70 79 |.col%=0.|2:.q$:py|
|00000550| 28 72 6f 77 25 2c 63 6f | 6c 25 29 3d a0 28 71 24 |(row%,co|l%)=.(q$|
|00000560| 29 3a ed 3a ed 0d 02 26 | 33 e3 72 6f 77 25 3d 30 |):.:...&|3.row%=0|
|00000570| b8 32 3a e3 63 6f 6c 25 | 3d 30 b8 32 3a f3 71 24 |.2:.col%|=0.2:.q$|
|00000580| 3a 70 7a 28 72 6f 77 25 | 2c 63 6f 6c 25 29 3d a0 |:pz(row%|,col%)=.|
|00000590| 28 71 24 29 3a ed 3a ed | 0d 02 30 33 e3 72 6f 77 |(q$):.:.|..03.row|
|000005a0| 25 3d 30 b8 32 3a e3 63 | 6f 6c 25 3d 30 b8 32 3a |%=0.2:.c|ol%=0.2:|
|000005b0| f3 71 24 3a 6d 78 28 72 | 6f 77 25 2c 63 6f 6c 25 |.q$:mx(r|ow%,col%|
|000005c0| 29 3d a0 28 71 24 29 3a | ed 3a ed 0d 02 3a 33 e3 |)=.(q$):|.:...:3.|
|000005d0| 72 6f 77 25 3d 30 b8 32 | 3a e3 63 6f 6c 25 3d 30 |row%=0.2|:.col%=0|
|000005e0| b8 32 3a f3 71 24 3a 6d | 79 28 72 6f 77 25 2c 63 |.2:.q$:m|y(row%,c|
|000005f0| 6f 6c 25 29 3d a0 28 71 | 24 29 3a ed 3a ed 0d 02 |ol%)=.(q|$):.:...|
|00000600| 44 33 e3 72 6f 77 25 3d | 30 b8 32 3a e3 63 6f 6c |D3.row%=|0.2:.col|
|00000610| 25 3d 30 b8 32 3a f3 71 | 24 3a 6d 7a 28 72 6f 77 |%=0.2:.q|$:mz(row|
|00000620| 25 2c 63 6f 6c 25 29 3d | a0 28 71 24 29 3a ed 3a |%,col%)=|.(q$):.:|
|00000630| ed 0d 02 4e 35 66 75 6e | 28 29 3d 6d 78 28 29 2e |...N5fun|()=mx().|
|00000640| 70 7a 28 29 3a 61 72 62 | 28 29 3d 66 75 6e 28 29 |pz():arb|()=fun()|
|00000650| 2e 69 6e 76 28 29 3a 69 | 6e 76 28 29 3d 6d 7a 28 |.inv():i|nv()=mz(|
|00000660| 29 2e 70 78 28 29 0d 02 | 58 05 e1 0d 02 62 05 3a |).px()..|X....b.:|
|00000670| 0d 02 6c 10 dd f2 44 72 | 61 77 54 65 61 70 6f 74 |..l...Dr|awTeapot|
|00000680| 0d 02 76 1b f4 20 53 65 | 74 20 73 68 61 64 69 6e |..v.. Se|t shadin|
|00000690| 67 20 63 6f 6e 73 74 61 | 6e 74 73 0d 02 80 25 6b |g consta|nts...%k|
|000006a0| 64 72 3d 30 2e 35 3a 6b | 73 72 3d 30 2e 35 3a 49 |dr=0.5:k|sr=0.5:I|
|000006b0| 61 3d 30 2e 32 3a 49 73 | 3d 31 2e 30 3a 6e 3d 31 |a=0.2:Is|=1.0:n=1|
|000006c0| 0d 02 8a 05 f5 0d 02 94 | 04 0d 02 9e 18 f4 20 44 |........|...... D|
|000006d0| 65 70 74 68 73 6f 72 74 | 20 70 6f 6c 79 67 6f 6e |epthsort| polygon|
|000006e0| 73 0d 02 a8 1c 41 25 3d | 21 70 6f 6c 79 67 6f 6e |s....A%=|!polygon|
|000006f0| 25 3a d6 20 64 65 70 74 | 68 73 6f 72 74 0d 02 b2 |%:. dept|hsort...|
|00000700| 29 70 25 3d 21 61 6e 73 | 77 65 72 3a 64 25 3d 21 |)p%=!ans|wer:d%=!|
|00000710| 64 65 70 74 68 3a 73 25 | 3d 6c 69 73 74 25 3a 65 |depth:s%|=list%:e|
|00000720| 78 69 74 25 3d a3 0d 02 | bc 1f e7 64 25 3d 26 46 |xit%=...|...d%=&F|
|00000730| 46 46 46 46 46 46 20 8c | 65 78 69 74 25 3d b9 3a |FFFFFF .|exit%=.:|
|00000740| e5 8d 54 6e 44 0d 02 c6 | 04 0d 02 d0 2f 65 31 25 |..TnD...|..../e1%|
|00000750| 3d 70 25 21 26 31 38 3a | 65 32 25 3d 70 25 21 26 |=p%!&18:|e2%=p%!&|
|00000760| 31 43 3a 65 33 25 3d 70 | 25 21 26 32 30 3a 65 34 |1C:e3%=p|%!&20:e4|
|00000770| 25 3d 70 25 21 26 32 34 | 0d 02 da 12 f2 43 79 63 |%=p%!&24|.....Cyc|
|00000780| 6c 69 63 28 70 25 2c 73 | 25 29 0d 02 e4 31 69 6e |lic(p%,s|%)...1in|
|00000790| 70 75 74 25 3d 6c 69 73 | 74 25 2b 26 32 30 3a 73 |put%=lis|t%+&20:s|
|000007a0| 25 3d 69 6e 70 75 74 25 | 3a 76 25 3d 6c 69 73 74 |%=input%|:v%=list|
|000007b0| 25 3a 64 6d 69 6e 3d 31 | 45 33 37 0d 02 ee 36 70 |%:dmin=1|E37...6p|
|000007c0| 69 3d 70 25 21 26 30 38 | 2f 26 31 30 30 30 30 3a |i=p%!&08|/&10000:|
|000007d0| 70 6a 3d 70 25 21 26 30 | 43 2f 26 31 30 30 30 30 |pj=p%!&0|C/&10000|
|000007e0| 3a 70 6b 3d 70 25 21 26 | 31 30 2f 26 31 30 30 30 |:pk=p%!&|10/&1000|
|000007f0| 30 0d 02 f8 04 0d 03 02 | 36 f4 20 44 69 72 65 63 |0.......|6. Direc|
|00000800| 74 69 6f 6e 61 6c 69 73 | 65 20 61 6c 6c 20 76 65 |tionalis|e all ve|
|00000810| 72 74 65 78 20 6e 6f 72 | 6d 61 6c 73 20 61 73 20 |rtex nor|mals as |
|00000820| 77 65 20 67 6f 20 61 6c | 6f 6e 67 0d 03 0c 0c 76 |we go al|ong....v|
|00000830| 25 3d 6c 69 73 74 25 0d | 03 16 05 f5 0d 03 20 12 |%=list%.|...... .|
|00000840| 20 73 25 21 26 30 30 3d | 73 25 2b 26 31 30 0d 03 | s%!&00=|s%+&10..|
|00000850| 2a 39 20 78 3d 7c 28 76 | 25 21 26 30 34 2b 26 30 |*9 x=|(v|%!&04+&0|
|00000860| 38 29 3a 79 3d 7c 28 76 | 25 21 26 30 34 2b 26 31 |8):y=|(v|%!&04+&1|
|00000870| 30 29 3a 7a 3d 7c 28 76 | 25 21 26 30 34 2b 26 31 |0):z=|(v|%!&04+&1|
|00000880| 38 29 2d 70 65 72 25 0d | 03 34 23 20 f4 20 43 61 |8)-per%.|.4# . Ca|
|00000890| 6c 63 75 6c 61 74 65 20 | 73 63 72 65 65 6e 20 70 |lculate |screen p|
|000008a0| 72 6f 6a 65 63 74 69 6f | 6e 73 0d 03 3e 1c 20 66 |rojectio|ns..>. f|
|000008b0| 3d 2d 70 65 72 25 2f 7a | 3a 78 25 3d 66 2a 78 3a |=-per%/z|:x%=f*x:|
|000008c0| 79 25 3d 66 2a 79 0d 03 | 48 22 20 f4 20 43 61 6c |y%=f*y..|H" . Cal|
|000008d0| 63 75 6c 61 74 65 20 76 | 69 65 77 69 6e 67 20 64 |culate v|iewing d|
|000008e0| 69 72 65 63 74 69 6f 6e | 0d 03 52 35 20 6d 61 67 |irection|..R5 mag|
|000008f0| 3d b6 28 78 2a 78 2b 79 | 2a 79 2b 7a 2a 7a 29 3a |=.(x*x+y|*y+z*z):|
|00000900| 76 69 3d 2d 78 2f 6d 61 | 67 3a 76 6a 3d 2d 79 2f |vi=-x/ma|g:vj=-y/|
|00000910| 6d 61 67 3a 76 6b 3d 2d | 7a 2f 6d 61 67 0d 03 5c |mag:vk=-|z/mag..\|
|00000920| 2a 20 f4 20 43 61 6c 63 | 75 6c 61 74 65 20 64 69 |* . Calc|ulate di|
|00000930| 72 65 63 74 69 6f 6e 20 | 6f 66 20 6c 69 67 68 74 |rection |of light|
|00000940| 20 73 6f 75 72 63 65 0d | 03 66 1c 20 73 69 3d 73 | source.|.f. si=s|
|00000950| 78 2d 78 3a 73 6a 3d 73 | 79 2d 79 3a 73 6b 3d 73 |x-x:sj=s|y-y:sk=s|
|00000960| 7a 2d 7a 0d 03 70 1d 20 | 6d 61 67 3d b6 28 73 69 |z-z..p. |mag=.(si|
|00000970| 2a 73 69 2b 73 6a 2a 73 | 6a 2b 73 6b 2a 73 6b 29 |*si+sj*s|j+sk*sk)|
|00000980| 0d 03 7a 22 20 73 69 3d | 73 69 2f 6d 61 67 3a 73 |..z" si=|si/mag:s|
|00000990| 6a 3d 73 6a 2f 6d 61 67 | 3a 73 6b 3d 73 6b 2f 6d |j=sj/mag|:sk=sk/m|
|000009a0| 61 67 0d 03 84 26 20 f4 | 20 43 61 6c 63 75 6c 61 |ag...& .| Calcula|
|000009b0| 74 65 20 73 75 72 66 61 | 63 65 20 6e 6f 72 6d 61 |te surfa|ce norma|
|000009c0| 6c 20 76 65 63 74 6f 72 | 0d 03 8e 4c 20 6e 69 3d |l vector|...L ni=|
|000009d0| 21 28 76 25 21 26 30 34 | 2b 26 32 30 29 2f 26 31 |!(v%!&04|+&20)/&1|
|000009e0| 30 30 30 30 3a 6e 6a 3d | 21 28 76 25 21 26 30 34 |0000:nj=|!(v%!&04|
|000009f0| 2b 26 32 34 29 2f 26 31 | 30 30 30 30 3a 6e 6b 3d |+&24)/&1|0000:nk=|
|00000a00| 21 28 76 25 21 26 30 34 | 2b 26 32 38 29 2f 26 31 |!(v%!&04|+&28)/&1|
|00000a10| 30 30 30 30 0d 03 98 37 | 20 63 6f 73 3d 6e 69 2a |0000...7| cos=ni*|
|00000a20| 70 69 2b 6e 6a 2a 70 6a | 2b 6e 6b 2a 70 6b 3a e7 |pi+nj*pj|+nk*pk:.|
|00000a30| 63 6f 73 3c 30 20 8c 6e | 69 3d 2d 6e 69 3a 6e 6a |cos<0 .n|i=-ni:nj|
|00000a40| 3d 2d 6e 6a 3a 6e 6b 3d | 2d 6e 6b 0d 03 a2 24 20 |=-nj:nk=|-nk...$ |
|00000a50| f4 20 43 61 6c 63 75 6c | 61 74 65 20 74 72 61 6e |. Calcul|ate tran|
|00000a60| 73 69 65 6e 74 20 63 6f | 6e 73 74 61 6e 74 73 0d |sient co|nstants.|
|00000a70| 03 ac 1f 20 63 6f 73 48 | 3d 28 76 69 2a 73 69 2b |... cosH|=(vi*si+|
|00000a80| 76 6a 2a 73 6a 2b 76 6b | 2a 73 6b 29 2f 32 0d 03 |vj*sj+vk|*sk)/2..|
|00000a90| b6 1d 20 63 6f 73 53 3d | 28 6e 69 2a 73 69 2b 6e |.. cosS=|(ni*si+n|
|00000aa0| 6a 2a 73 6a 2b 6e 6b 2a | 73 6b 29 0d 03 c0 20 20 |j*sj+nk*|sk)... |
|00000ab0| f4 20 43 61 6c 63 75 6c | 61 74 65 20 63 6f 6c 6f |. Calcul|ate colo|
|00000ac0| 75 72 20 6f 66 20 70 6f | 69 6e 74 0d 03 ca 29 20 |ur of po|int...) |
|00000ad0| 63 6f 6c 3d 6b 73 72 2a | 49 73 2a 63 6f 73 48 5e |col=ksr*|Is*cosH^|
|00000ae0| 6e 2b 6b 64 72 2a 49 73 | 2a 63 6f 73 53 2b 6b 64 |n+kdr*Is|*cosS+kd|
|00000af0| 72 2a 49 61 0d 03 d4 3f | 20 63 6f 6c 25 3d a8 28 |r*Ia...?| col%=.(|
|00000b00| 63 6f 6c 2a 32 35 36 29 | 3c 3c 38 3a 63 6f 6c 25 |col*256)|<<8:col%|
|00000b10| 3d 63 6f 6c 25 84 28 63 | 6f 6c 25 3c 3c 38 29 3a |=col%.(c|ol%<<8):|
|00000b20| 63 6f 6c 25 3d 63 6f 6c | 25 84 28 63 6f 6c 25 3c |col%=col|%.(col%<|
|00000b30| 3c 38 29 0d 03 de 0e 20 | 73 25 21 26 30 34 3d 78 |<8).... |s%!&04=x|
|00000b40| 25 0d 03 e8 0e 20 73 25 | 21 26 30 38 3d 79 25 0d |%.... s%|!&08=y%.|
|00000b50| 03 f2 10 20 73 25 21 26 | 30 43 3d 63 6f 6c 25 0d |... s%!&|0C=col%.|
|00000b60| 03 fc 13 20 73 25 2b 3d | 26 31 30 3a 76 25 3d 21 |... s%+=|&10:v%=!|
|00000b70| 76 25 0d 04 06 0d fd 76 | 25 3d 6c 69 73 74 25 0d |v%.....v|%=list%.|
|00000b80| 04 10 23 21 28 73 25 2d | 26 31 30 29 3d 69 6e 70 |..#!(s%-|&10)=inp|
|00000b90| 75 74 25 3a 74 79 70 65 | 25 3d 25 30 30 30 31 30 |ut%:type|%=%00010|
|00000ba0| 30 30 0d 04 1a 04 0d 04 | 24 32 c8 99 22 44 72 69 |00......|$2.."Dri|
|00000bb0| 76 65 72 5f 47 6f 75 72 | 61 75 64 50 6f 6c 79 67 |ver_Gour|audPolyg|
|00000bc0| 6f 6e 22 2c 73 25 2c 65 | 6e 64 25 2c 69 6e 70 75 |on",s%,e|nd%,inpu|
|00000bd0| 74 25 2c 74 79 70 65 25 | 0d 04 2e 0a fd 65 78 69 |t%,type%|.....exi|
|00000be0| 74 25 0d 04 38 04 0d 04 | 42 20 f4 20 52 65 73 65 |t%..8...|B . Rese|
|00000bf0| 74 20 22 64 6f 6e 65 22 | 20 66 6c 61 67 73 20 74 |t "done"| flags t|
|00000c00| 6f 20 7a 65 72 6f 0d 04 | 4c 10 70 25 3d 21 70 6f |o zero..|L.p%=!po|
|00000c10| 6c 79 67 6f 6e 25 0d 04 | 56 0b c8 95 70 25 3c 3e |lygon%..|V...p%<>|
|00000c20| 30 0d 04 60 13 70 25 21 | 26 30 34 3d 30 3a 70 25 |0..`.p%!|&04=0:p%|
|00000c30| 3d 21 70 25 0d 04 6a 05 | ce 0d 04 74 05 e1 0d 04 |=!p%..j.|...t....|
|00000c40| 7e 05 3a 0d 04 88 0f dd | f2 44 72 61 77 45 64 67 |~.:.....|.DrawEdg|
|00000c50| 65 73 0d 04 92 08 e6 30 | 2c 30 0d 04 9c 0d 65 25 |es.....0|,0....e%|
|00000c60| 3d 21 65 64 67 65 25 0d | 04 a6 0b c8 95 65 25 3c |=!edge%.|.....e%<|
|00000c70| 3e 30 0d 04 b0 36 78 31 | 3d 7c 28 65 25 21 26 30 |>0...6x1|=|(e%!&0|
|00000c80| 38 2b 26 30 38 29 3a 79 | 31 3d 7c 28 65 25 21 26 |8+&08):y|1=|(e%!&|
|00000c90| 30 38 2b 26 31 30 29 3a | 7a 31 3d 7c 28 65 25 21 |08+&10):|z1=|(e%!|
|00000ca0| 26 30 38 2b 26 31 38 29 | 0d 04 ba 36 78 32 3d 7c |&08+&18)|...6x2=||
|00000cb0| 28 65 25 21 26 30 43 2b | 26 30 38 29 3a 79 32 3d |(e%!&0C+|&08):y2=|
|00000cc0| 7c 28 65 25 21 26 30 43 | 2b 26 31 30 29 3a 7a 32 ||(e%!&0C|+&10):z2|
|00000cd0| 3d 7c 28 65 25 21 26 30 | 43 2b 26 31 38 29 0d 04 |=|(e%!&0|C+&18)..|
|00000ce0| c4 29 66 31 3d 70 65 72 | 25 2f 28 70 65 72 25 2d |.)f1=per|%/(per%-|
|00000cf0| 7a 31 29 3a 78 31 25 3d | 66 31 2a 78 31 3a 79 31 |z1):x1%=|f1*x1:y1|
|00000d00| 25 3d 66 31 2a 79 31 0d | 04 ce 29 66 32 3d 70 65 |%=f1*y1.|..)f2=pe|
|00000d10| 72 25 2f 28 70 65 72 25 | 2d 7a 32 29 3a 78 32 25 |r%/(per%|-z2):x2%|
|00000d20| 3d 66 32 2a 78 32 3a 79 | 32 25 3d 66 32 2a 79 32 |=f2*x2:y|2%=f2*y2|
|00000d30| 0d 04 d8 15 ec 78 31 25 | 2c 79 31 25 3a df 78 32 |.....x1%|,y1%:.x2|
|00000d40| 25 2c 79 32 25 0d 04 e2 | 0a 65 25 3d 21 65 25 0d |%,y2%...|.e%=!e%.|
|00000d50| 04 ec 05 ce 0d 04 f6 05 | e1 0d 05 00 05 3a 0d 05 |........|.....:..|
|00000d60| 0a 0e dd f2 4c 6f 61 64 | 44 61 74 61 0d 05 14 12 |....Load|Data....|
|00000d70| 46 3d ad 28 22 50 6f 6c | 79 50 6f 74 22 29 0d 05 |F=.("Pol|yPot")..|
|00000d80| 1e 13 e8 23 46 2c 76 6e | 25 2c 65 6e 25 2c 70 6e |...#F,vn|%,en%,pn|
|00000d90| 25 0d 05 28 04 0d 05 32 | 16 f4 20 4c 6f 61 64 20 |%..(...2|.. Load |
|00000da0| 69 6e 20 76 65 72 74 69 | 63 65 73 0d 05 3c 13 21 |in verti|ces..<.!|
|00000db0| 76 65 72 74 65 78 25 3d | 73 74 61 63 6b 25 0d 05 |vertex%=|stack%..|
|00000dc0| 46 17 e3 76 25 3d 30 b8 | 76 6e 25 3a e8 23 46 2c |F..v%=0.|vn%:.#F,|
|00000dd0| 78 2c 79 2c 7a 0d 05 50 | 28 78 3d 28 78 2b 30 2e |x,y,z..P|(x=(x+0.|
|00000de0| 30 29 2a 73 66 3a e7 78 | 3c 30 2e 30 30 31 20 80 |0)*sf:.x|<0.001 .|
|00000df0| 78 3e 2d 30 2e 30 30 31 | 20 8c 78 3d 30 0d 05 5a |x>-0.001| .x=0..Z|
|00000e00| 28 79 3d 28 79 2d 31 2e | 35 29 2a 73 66 3a e7 79 |(y=(y-1.|5)*sf:.y|
|00000e10| 3c 30 2e 30 30 31 20 80 | 79 3e 2d 30 2e 30 30 31 |<0.001 .|y>-0.001|
|00000e20| 20 8c 79 3d 30 0d 05 64 | 28 7a 3d 28 7a 2b 30 2e | .y=0..d|(z=(z+0.|
|00000e30| 30 29 2a 73 66 3a e7 7a | 3c 30 2e 30 30 31 20 80 |0)*sf:.z|<0.001 .|
|00000e40| 7a 3e 2d 30 2e 30 30 31 | 20 8c 7a 3d 30 0d 05 6e |z>-0.001| .z=0..n|
|00000e50| 19 73 74 61 63 6b 25 21 | 26 30 30 3d 73 74 61 63 |.stack%!|&00=stac|
|00000e60| 6b 25 2b 26 32 43 0d 05 | 78 10 73 74 61 63 6b 25 |k%+&2C..|x.stack%|
|00000e70| 21 26 30 34 3d 30 0d 05 | 82 10 73 74 61 63 6b 25 |!&04=0..|..stack%|
|00000e80| 21 26 30 43 3d 30 0d 05 | 8c 10 73 74 61 63 6b 25 |!&0C=0..|..stack%|
|00000e90| 21 26 31 34 3d 30 0d 05 | 96 10 73 74 61 63 6b 25 |!&14=0..|..stack%|
|00000ea0| 21 26 31 43 3d 30 0d 05 | a0 13 7c 28 73 74 61 63 |!&1C=0..|..|(stac|
|00000eb0| 6b 25 2b 26 30 38 29 3d | 78 0d 05 aa 13 7c 28 73 |k%+&08)=|x....|(s|
|00000ec0| 74 61 63 6b 25 2b 26 31 | 30 29 3d 79 0d 05 b4 13 |tack%+&1|0)=y....|
|00000ed0| 7c 28 73 74 61 63 6b 25 | 2b 26 31 38 29 3d 7a 0d ||(stack%|+&18)=z.|
|00000ee0| 05 be 10 73 74 61 63 6b | 25 21 26 32 30 3d 30 0d |...stack|%!&20=0.|
|00000ef0| 05 c8 10 73 74 61 63 6b | 25 21 26 32 34 3d 30 0d |...stack|%!&24=0.|
|00000f00| 05 d2 10 73 74 61 63 6b | 25 21 26 32 38 3d 30 0d |...stack|%!&28=0.|
|00000f10| 05 dc 0f 73 74 61 63 6b | 25 2b 3d 26 32 43 0d 05 |...stack|%+=&2C..|
|00000f20| e6 05 ed 0d 05 f0 13 21 | 28 73 74 61 63 6b 25 2d |.......!|(stack%-|
|00000f30| 26 32 43 29 3d 30 0d 05 | fa 04 0d 06 04 13 f4 20 |&2C)=0..|....... |
|00000f40| 4c 6f 61 64 20 69 6e 20 | 65 64 67 65 73 0d 06 0e |Load in |edges...|
|00000f50| 11 21 65 64 67 65 25 3d | 73 74 61 63 6b 25 0d 06 |.!edge%=|stack%..|
|00000f60| 18 19 e3 65 25 3d 30 b8 | 65 6e 25 3a e8 23 46 2c |...e%=0.|en%:.#F,|
|00000f70| 76 31 25 2c 76 32 25 0d | 06 22 19 73 74 61 63 6b |v1%,v2%.|.".stack|
|00000f80| 25 21 26 30 30 3d 73 74 | 61 63 6b 25 2b 26 31 38 |%!&00=st|ack%+&18|
|00000f90| 0d 06 2c 10 73 74 61 63 | 6b 25 21 26 30 34 3d 30 |..,.stac|k%!&04=0|
|00000fa0| 0d 06 36 1f 73 74 61 63 | 6b 25 21 26 30 38 3d 21 |..6.stac|k%!&08=!|
|00000fb0| 76 65 72 74 65 78 25 2b | 76 31 25 2a 26 32 43 0d |vertex%+|v1%*&2C.|
|00000fc0| 06 40 1f 73 74 61 63 6b | 25 21 26 30 43 3d 21 76 |.@.stack|%!&0C=!v|
|00000fd0| 65 72 74 65 78 25 2b 76 | 32 25 2a 26 32 43 0d 06 |ertex%+v|2%*&2C..|
|00000fe0| 4a 0f 73 74 61 63 6b 25 | 2b 3d 26 31 38 0d 06 54 |J.stack%|+=&18..T|
|00000ff0| 15 ed 3a 21 28 73 74 61 | 63 6b 25 2d 26 31 38 29 |..:!(sta|ck%-&18)|
|00001000| 3d 30 0d 06 5e 04 0d 06 | 68 16 f4 20 4c 6f 61 64 |=0..^...|h.. Load|
|00001010| 20 69 6e 20 70 6f 6c 79 | 67 6f 6e 73 0d 06 72 14 | in poly|gons..r.|
|00001020| 21 70 6f 6c 79 67 6f 6e | 25 3d 73 74 61 63 6b 25 |!polygon|%=stack%|
|00001030| 0d 06 7c 21 e3 70 25 3d | 30 b8 70 6e 25 3a e8 23 |..|!.p%=|0.pn%:.#|
|00001040| 46 2c 65 31 25 2c 65 32 | 25 2c 65 33 25 2c 65 34 |F,e1%,e2|%,e3%,e4|
|00001050| 25 0d 06 86 19 73 74 61 | 63 6b 25 21 26 30 30 3d |%....sta|ck%!&00=|
|00001060| 73 74 61 63 6b 25 2b 26 | 32 38 0d 06 90 10 73 74 |stack%+&|28....st|
|00001070| 61 63 6b 25 21 26 30 34 | 3d 30 0d 06 9a 1d 73 74 |ack%!&04|=0....st|
|00001080| 61 63 6b 25 21 26 31 38 | 3d 21 65 64 67 65 25 2b |ack%!&18|=!edge%+|
|00001090| 65 31 25 2a 26 31 38 0d | 06 a4 1d 73 74 61 63 6b |e1%*&18.|...stack|
|000010a0| 25 21 26 31 43 3d 21 65 | 64 67 65 25 2b 65 32 25 |%!&1C=!e|dge%+e2%|
|000010b0| 2a 26 31 38 0d 06 ae 1d | 73 74 61 63 6b 25 21 26 |*&18....|stack%!&|
|000010c0| 32 30 3d 21 65 64 67 65 | 25 2b 65 33 25 2a 26 31 |20=!edge|%+e3%*&1|
|000010d0| 38 0d 06 b8 1d 73 74 61 | 63 6b 25 21 26 32 34 3d |8....sta|ck%!&24=|
|000010e0| 21 65 64 67 65 25 2b 65 | 34 25 2a 26 31 38 0d 06 |!edge%+e|4%*&18..|
|000010f0| c2 0f 73 74 61 63 6b 25 | 2b 3d 26 32 38 0d 06 cc |..stack%|+=&28...|
|00001100| 15 ed 3a 21 28 73 74 61 | 63 6b 25 2d 26 32 38 29 |..:!(sta|ck%-&28)|
|00001110| 3d 30 0d 06 d6 10 6c 69 | 73 74 25 3d 73 74 61 63 |=0....li|st%=stac|
|00001120| 6b 25 0d 06 e0 07 d9 23 | 46 0d 06 ea 05 e1 0d 06 |k%.....#|F.......|
|00001130| f4 05 3a 0d 06 fe 22 dd | f2 52 6f 74 61 74 65 28 |..:...".|.Rotate(|
|00001140| 76 65 72 74 65 78 25 2c | 70 6f 6c 79 67 6f 6e 25 |vertex%,|polygon%|
|00001150| 2c 74 28 29 29 0d 07 08 | 0f 76 25 3d 21 76 65 72 |,t())...|.v%=!ver|
|00001160| 74 65 78 25 0d 07 12 0b | c8 95 76 25 3c 3e 30 0d |tex%....|..v%<>0.|
|00001170| 07 1c 30 70 28 30 29 3d | 7c 28 76 25 2b 26 30 38 |..0p(0)=||(v%+&08|
|00001180| 29 3a 70 28 31 29 3d 7c | 28 76 25 2b 26 31 30 29 |):p(1)=||(v%+&10)|
|00001190| 3a 70 28 32 29 3d 7c 28 | 76 25 2b 26 31 38 29 0d |:p(2)=|(|v%+&18).|
|000011a0| 07 26 0f 70 28 29 3d 74 | 28 29 2e 70 28 29 0d 07 |.&.p()=t|().p()..|
|000011b0| 30 30 7c 28 76 25 2b 26 | 30 38 29 3d 70 28 30 29 |00|(v%+&|08)=p(0)|
|000011c0| 3a 7c 28 76 25 2b 26 31 | 30 29 3d 70 28 31 29 3a |:|(v%+&1|0)=p(1):|
|000011d0| 7c 28 76 25 2b 26 31 38 | 29 3d 70 28 32 29 0d 07 ||(v%+&18|)=p(2)..|
|000011e0| 3a 0a 76 25 3d 21 76 25 | 0d 07 44 05 ce 0d 07 4e |:.v%=!v%|..D....N|
|000011f0| 10 70 25 3d 21 70 6f 6c | 79 67 6f 6e 25 0d 07 58 |.p%=!pol|ygon%..X|
|00001200| 0b c8 95 70 25 3c 3e 30 | 0d 07 62 15 f2 43 79 63 |...p%<>0|..b..Cyc|
|00001210| 6c 69 63 28 70 25 2c 6c | 69 73 74 25 29 0d 07 6c |lic(p%,l|ist%)..l|
|00001220| 18 f2 4e 6f 72 6d 61 6c | 56 65 63 74 6f 72 28 6c |..Normal|Vector(l|
|00001230| 69 73 74 25 29 0d 07 76 | 22 f4 20 46 69 6e 64 20 |ist%)..v|". Find |
|00001240| 6d 65 61 6e 20 70 6f 73 | 74 69 6f 6e 20 6f 66 20 |mean pos|tion of |
|00001250| 70 6f 6c 79 67 6f 6e 0d | 07 80 20 76 25 3d 6c 69 |polygon.|.. v%=li|
|00001260| 73 74 25 3a 6d 78 3d 30 | 3a 6d 79 3d 30 3a 6d 7a |st%:mx=0|:my=0:mz|
|00001270| 3d 30 3a 6e 25 3d 30 0d | 07 8a 05 f5 0d 07 94 39 |=0:n%=0.|.......9|
|00001280| 6d 78 2b 3d 7c 28 76 25 | 21 26 30 34 2b 26 30 38 |mx+=|(v%|!&04+&08|
|00001290| 29 3a 6d 79 2b 3d 7c 28 | 76 25 21 26 30 34 2b 26 |):my+=|(|v%!&04+&|
|000012a0| 31 30 29 3a 6d 7a 2b 3d | 7c 28 76 25 21 26 30 34 |10):mz+=||(v%!&04|
|000012b0| 2b 26 31 38 29 0d 07 9e | 10 6e 25 2b 3d 31 3a 76 |+&18)...|.n%+=1:v|
|000012c0| 25 3d 21 76 25 0d 07 a8 | 0d fd 76 25 3d 6c 69 73 |%=!v%...|..v%=lis|
|000012d0| 74 25 0d 07 b2 23 6d 78 | 3d 6d 78 2f 6e 25 3a 6d |t%...#mx|=mx/n%:m|
|000012e0| 79 3d 6d 79 2f 6e 25 3a | 6d 7a 3d 6d 7a 2f 6e 25 |y=my/n%:|mz=mz/n%|
|000012f0| 2d 70 65 72 25 0d 07 bc | 1d 64 69 73 74 3d b6 28 |-per%...|.dist=.(|
|00001300| 6d 78 2a 6d 78 2b 6d 79 | 2a 6d 79 2b 6d 7a 2a 6d |mx*mx+my|*my+mz*m|
|00001310| 7a 29 0d 07 c6 24 6d 78 | 3d 6d 78 2f 64 69 73 74 |z)...$mx|=mx/dist|
|00001320| 3a 6d 79 3d 6d 79 2f 64 | 69 73 74 3a 6d 7a 3d 6d |:my=my/d|ist:mz=m|
|00001330| 7a 2f 64 69 73 74 0d 07 | d0 22 f4 20 44 69 72 65 |z/dist..|.". Dire|
|00001340| 63 74 69 6f 6e 61 6c 69 | 73 65 20 6e 6f 72 6d 61 |ctionali|se norma|
|00001350| 6c 20 76 65 63 74 6f 72 | 0d 07 da 36 63 6f 73 3d |l vector|...6cos=|
|00001360| 6d 78 2a 6e 69 2b 6d 79 | 2a 6e 6a 2b 6d 7a 2a 6e |mx*ni+my|*nj+mz*n|
|00001370| 6b 3a e7 63 6f 73 3e 30 | 20 8c 6e 69 3d 2d 6e 69 |k:.cos>0| .ni=-ni|
|00001380| 3a 6e 6a 3d 2d 6e 6a 3a | 6e 6b 3d 2d 6e 6b 0d 07 |:nj=-nj:|nk=-nk..|
|00001390| e4 14 70 25 21 26 30 38 | 3d 6e 69 2a 26 31 30 30 |..p%!&08|=ni*&100|
|000013a0| 30 30 0d 07 ee 14 70 25 | 21 26 30 43 3d 6e 6a 2a |00....p%|!&0C=nj*|
|000013b0| 26 31 30 30 30 30 0d 07 | f8 14 70 25 21 26 31 30 |&10000..|..p%!&10|
|000013c0| 3d 6e 6b 2a 26 31 30 30 | 30 30 0d 08 02 14 70 25 |=nk*&100|00....p%|
|000013d0| 21 26 31 34 3d 2d 64 69 | 73 74 2a 32 35 36 0d 08 |!&14=-di|st*256..|
|000013e0| 0c 0a 70 25 3d 21 70 25 | 0d 08 16 05 ce 0d 08 20 |..p%=!p%|....... |
|000013f0| 05 e1 0d 08 2a 05 3a 0d | 08 34 19 dd f2 43 79 63 |....*.:.|.4...Cyc|
|00001400| 6c 69 63 28 70 6f 6c 79 | 25 2c 77 6f 72 6b 25 29 |lic(poly|%,work%)|
|00001410| 0d 08 3e 3b 65 31 25 3d | 70 6f 6c 79 25 21 26 31 |..>;e1%=|poly%!&1|
|00001420| 38 3a 65 32 25 3d 70 6f | 6c 79 25 21 26 31 43 3a |8:e2%=po|ly%!&1C:|
|00001430| 65 33 25 3d 70 6f 6c 79 | 25 21 26 32 30 3a 65 34 |e3%=poly|%!&20:e4|
|00001440| 25 3d 70 6f 6c 79 25 21 | 26 32 34 0d 08 48 2c e7 |%=poly%!|&24..H,.|
|00001450| 65 31 25 21 26 30 38 3d | 65 32 25 21 26 30 38 3a |e1%!&08=|e2%!&08:|
|00001460| 76 31 25 3d 65 31 25 21 | 26 30 38 3a 76 34 25 3d |v1%=e1%!|&08:v4%=|
|00001470| 65 31 25 21 26 30 43 0d | 08 52 2c e7 65 31 25 21 |e1%!&0C.|.R,.e1%!|
|00001480| 26 30 38 3d 65 32 25 21 | 26 30 43 3a 76 31 25 3d |&08=e2%!|&0C:v1%=|
|00001490| 65 31 25 21 26 30 38 3a | 76 34 25 3d 65 31 25 21 |e1%!&08:|v4%=e1%!|
|000014a0| 26 30 43 0d 08 5c 2c e7 | 65 31 25 21 26 30 43 3d |&0C..\,.|e1%!&0C=|
|000014b0| 65 32 25 21 26 30 38 3a | 76 31 25 3d 65 31 25 21 |e2%!&08:|v1%=e1%!|
|000014c0| 26 30 43 3a 76 34 25 3d | 65 31 25 21 26 30 38 0d |&0C:v4%=|e1%!&08.|
|000014d0| 08 66 2c e7 65 31 25 21 | 26 30 43 3d 65 32 25 21 |.f,.e1%!|&0C=e2%!|
|000014e0| 26 30 43 3a 76 31 25 3d | 65 31 25 21 26 30 43 3a |&0C:v1%=|e1%!&0C:|
|000014f0| 76 34 25 3d 65 31 25 21 | 26 30 38 0d 08 70 1c e7 |v4%=e1%!|&08..p..|
|00001500| 65 32 25 21 26 30 38 3d | 76 31 25 3a 76 32 25 3d |e2%!&08=|v1%:v2%=|
|00001510| 65 32 25 21 26 30 43 0d | 08 7a 1c e7 65 32 25 21 |e2%!&0C.|.z..e2%!|
|00001520| 26 30 43 3d 76 31 25 3a | 76 32 25 3d 65 32 25 21 |&0C=v1%:|v2%=e2%!|
|00001530| 26 30 38 0d 08 84 1c e7 | 65 33 25 21 26 30 38 3d |&08.....|e3%!&08=|
|00001540| 76 32 25 3a 76 33 25 3d | 65 33 25 21 26 30 43 0d |v2%:v3%=|e3%!&0C.|
|00001550| 08 8e 1c e7 65 33 25 21 | 26 30 43 3d 76 32 25 3a |....e3%!|&0C=v2%:|
|00001560| 76 33 25 3d 65 33 25 21 | 26 30 38 0d 08 98 25 77 |v3%=e3%!|&08...%w|
|00001570| 6f 72 6b 25 21 26 30 30 | 3d 77 6f 72 6b 25 2b 26 |ork%!&00|=work%+&|
|00001580| 30 38 3a 77 6f 72 6b 25 | 21 26 30 34 3d 76 31 25 |08:work%|!&04=v1%|
|00001590| 0d 08 a2 25 77 6f 72 6b | 25 21 26 30 38 3d 77 6f |...%work|%!&08=wo|
|000015a0| 72 6b 25 2b 26 31 30 3a | 77 6f 72 6b 25 21 26 30 |rk%+&10:|work%!&0|
|000015b0| 43 3d 76 32 25 0d 08 ac | 25 77 6f 72 6b 25 21 26 |C=v2%...|%work%!&|
|000015c0| 31 30 3d 77 6f 72 6b 25 | 2b 26 31 38 3a 77 6f 72 |10=work%|+&18:wor|
|000015d0| 6b 25 21 26 31 34 3d 76 | 33 25 0d 08 b6 25 77 6f |k%!&14=v|3%...%wo|
|000015e0| 72 6b 25 21 26 31 38 3d | 77 6f 72 6b 25 2b 26 30 |rk%!&18=|work%+&0|
|000015f0| 30 3a 77 6f 72 6b 25 21 | 26 31 43 3d 76 34 25 0d |0:work%!|&1C=v4%.|
|00001600| 08 c0 05 e1 0d 08 ca 05 | 3a 0d 08 d4 29 dd f2 56 |........|:...)..V|
|00001610| 65 72 74 65 78 4e 6f 72 | 6d 61 6c 73 28 76 65 72 |ertexNor|mals(ver|
|00001620| 74 65 78 25 2c 65 64 67 | 65 25 2c 73 70 61 63 65 |tex%,edg|e%,space|
|00001630| 25 29 0d 08 de 20 ea 76 | 25 2c 76 31 25 2c 76 32 |%)... .v|%,v1%,v2|
|00001640| 25 2c 76 66 25 2c 65 25 | 2c 65 66 25 2c 77 6f 72 |%,vf%,e%|,ef%,wor|
|00001650| 6b 25 0d 08 e8 0f 76 25 | 3d 21 76 65 72 74 65 78 |k%....v%|=!vertex|
|00001660| 25 0d 08 f2 0b c8 95 76 | 25 3c 3e 30 0d 08 fc 2e |%......v|%<>0....|
|00001670| 20 20 41 25 3d 65 64 67 | 65 25 3a 42 25 3d 76 25 | A%=edg|e%:B%=v%|
|00001680| 3a 43 25 3d 73 70 61 63 | 65 25 3a d6 20 76 65 72 |:C%=spac|e%:. ver|
|00001690| 74 65 78 6e 6f 72 6d 61 | 6c 73 0d 09 06 1b 20 20 |texnorma|ls.... |
|000016a0| f2 4e 6f 72 6d 61 6c 56 | 65 63 74 6f 72 28 73 70 |.NormalV|ector(sp|
|000016b0| 61 63 65 25 29 0d 09 10 | 38 20 20 76 25 21 26 32 |ace%)...|8 v%!&2|
|000016c0| 30 3d 6e 69 2a 26 31 30 | 30 30 30 3a 76 25 21 26 |0=ni*&10|000:v%!&|
|000016d0| 32 34 3d 6e 6a 2a 26 31 | 30 30 30 30 3a 76 25 21 |24=nj*&1|0000:v%!|
|000016e0| 26 32 38 3d 6e 6b 2a 26 | 31 30 30 30 30 0d 09 1a |&28=nk*&|10000...|
|000016f0| 0a 76 25 3d 21 76 25 0d | 09 24 05 ce 0d 09 2e 05 |.v%=!v%.|.$......|
|00001700| e1 0d 09 38 05 3a 0d 09 | 42 18 dd f2 4e 6f 72 6d |...8.:..|B...Norm|
|00001710| 61 6c 56 65 63 74 6f 72 | 28 70 74 72 25 29 0d 09 |alVector|(ptr%)..|
|00001720| 4c 2b ea 76 31 25 2c 76 | 32 25 2c 78 31 2c 79 31 |L+.v1%,v|2%,x1,y1|
|00001730| 2c 7a 31 2c 78 32 2c 79 | 32 2c 7a 32 2c 6e 78 2c |,z1,x2,y|2,z2,nx,|
|00001740| 6e 79 2c 6e 7a 2c 6d 61 | 67 0d 09 56 1b 76 31 25 |ny,nz,ma|g..V.v1%|
|00001750| 3d 70 74 72 25 3a 6e 78 | 3d 30 3a 6e 79 3d 30 3a |=ptr%:nx|=0:ny=0:|
|00001760| 6e 7a 3d 30 0d 09 60 05 | f5 0d 09 6a 0c 76 32 25 |nz=0..`.|...j.v2%|
|00001770| 3d 21 76 31 25 0d 09 74 | 39 78 31 3d 7c 28 76 31 |=!v1%..t|9x1=|(v1|
|00001780| 25 21 26 30 34 2b 26 30 | 38 29 3a 79 31 3d 7c 28 |%!&04+&0|8):y1=|(|
|00001790| 76 31 25 21 26 30 34 2b | 26 31 30 29 3a 7a 31 3d |v1%!&04+|&10):z1=|
|000017a0| 7c 28 76 31 25 21 26 30 | 34 2b 26 31 38 29 0d 09 ||(v1%!&0|4+&18)..|
|000017b0| 7e 39 78 32 3d 7c 28 76 | 32 25 21 26 30 34 2b 26 |~9x2=|(v|2%!&04+&|
|000017c0| 30 38 29 3a 79 32 3d 7c | 28 76 32 25 21 26 30 34 |08):y2=||(v2%!&04|
|000017d0| 2b 26 31 30 29 3a 7a 32 | 3d 7c 28 76 32 25 21 26 |+&10):z2|=|(v2%!&|
|000017e0| 30 34 2b 26 31 38 29 0d | 09 88 17 6e 78 2b 3d 28 |04+&18).|...nx+=(|
|000017f0| 7a 31 2b 7a 32 29 2a 28 | 79 32 2d 79 31 29 0d 09 |z1+z2)*(|y2-y1)..|
|00001800| 92 17 6e 79 2b 3d 28 78 | 31 2b 78 32 29 2a 28 7a |..ny+=(x|1+x2)*(z|
|00001810| 32 2d 7a 31 29 0d 09 9c | 17 6e 7a 2b 3d 28 79 31 |2-z1)...|.nz+=(y1|
|00001820| 2b 79 32 29 2a 28 78 32 | 2d 78 31 29 0d 09 a6 0b |+y2)*(x2|-x1)....|
|00001830| 76 31 25 3d 76 32 25 0d | 09 b0 0d fd 76 31 25 3d |v1%=v2%.|....v1%=|
|00001840| 70 74 72 25 0d 09 ba 3a | 6d 61 67 3d b6 28 6e 78 |ptr%...:|mag=.(nx|
|00001850| 2a 6e 78 2b 6e 79 2a 6e | 79 2b 6e 7a 2a 6e 7a 29 |*nx+ny*n|y+nz*nz)|
|00001860| 3a 6e 69 3d 6e 78 2f 6d | 61 67 3a 6e 6a 3d 6e 79 |:ni=nx/m|ag:nj=ny|
|00001870| 2f 6d 61 67 3a 6e 6b 3d | 6e 7a 2f 6d 61 67 0d 09 |/mag:nk=|nz/mag..|
|00001880| c4 05 e1 0d 09 ce 05 3a | 0d 09 d8 24 dd f2 43 6f |.......:|...$..Co|
|00001890| 6d 70 61 63 74 56 65 72 | 74 69 63 65 73 28 76 65 |mpactVer|tices(ve|
|000018a0| 72 74 65 78 25 2c 65 64 | 67 65 25 29 0d 09 e2 29 |rtex%,ed|ge%)...)|
|000018b0| 41 25 3d 76 65 72 74 65 | 78 25 3a 42 25 3d 65 64 |A%=verte|x%:B%=ed|
|000018c0| 67 65 25 3a d6 20 63 6f | 6d 70 61 63 74 76 65 72 |ge%:. co|mpactver|
|000018d0| 74 69 63 65 73 0d 09 ec | 05 e1 0d 09 f6 05 3a 0d |tices...|......:.|
|000018e0| 0a 00 22 dd f2 43 6f 6d | 70 61 63 74 45 64 67 65 |.."..Com|pactEdge|
|000018f0| 73 28 65 64 67 65 25 2c | 70 6f 6c 79 67 6f 6e 25 |s(edge%,|polygon%|
|00001900| 29 0d 0a 0a 27 41 25 3d | 65 64 67 65 25 3a 42 25 |)...'A%=|edge%:B%|
|00001910| 3d 70 6f 6c 79 67 6f 6e | 25 3a d6 20 63 6f 6d 70 |=polygon|%:. comp|
|00001920| 61 63 74 65 64 67 65 73 | 0d 0a 14 05 e1 0d 0a 1e |actedges|........|
|00001930| 05 3a 0d 0a 28 25 dd f2 | 44 65 67 65 6e 65 72 61 |.:..(%..|Degenera|
|00001940| 74 65 45 64 67 65 73 28 | 65 64 67 65 25 2c 70 6f |teEdges(|edge%,po|
|00001950| 6c 79 67 6f 6e 25 29 0d | 0a 32 0f ea 65 31 25 2c |lygon%).|.2..e1%,|
|00001960| 65 32 25 2c 70 25 0d 0a | 3c 16 65 32 25 3d 65 64 |e2%,p%..|<.e2%=ed|
|00001970| 67 65 25 3a 65 31 25 3d | 21 65 32 25 0d 0a 46 0c |ge%:e1%=|!e2%..F.|
|00001980| c8 95 65 31 25 3c 3e 30 | 0d 0a 50 16 e7 65 31 25 |..e1%<>0|..P..e1%|
|00001990| 21 26 30 38 3d 65 31 25 | 21 26 30 43 20 8c 0d 0a |!&08=e1%|!&0C ...|
|000019a0| 5a 12 20 20 70 25 3d 21 | 70 6f 6c 79 67 6f 6e 25 |Z. p%=!|polygon%|
|000019b0| 0d 0a 64 0d 20 20 c8 95 | 70 25 3c 3e 30 0d 0a 6e |..d. ..|p%<>0..n|
|000019c0| 2b 20 20 e7 70 25 21 26 | 31 38 3d 65 31 25 20 8c |+ .p%!&|18=e1% .|
|000019d0| 70 25 21 26 31 38 3d 70 | 25 21 26 31 43 3a 70 25 |p%!&18=p|%!&1C:p%|
|000019e0| 21 26 31 43 3d 65 31 25 | 0d 0a 78 2b 20 20 e7 70 |!&1C=e1%|..x+ .p|
|000019f0| 25 21 26 31 43 3d 65 31 | 25 20 8c 70 25 21 26 31 |%!&1C=e1|% .p%!&1|
|00001a00| 43 3d 70 25 21 26 32 30 | 3a 70 25 21 26 32 30 3d |C=p%!&20|:p%!&20=|
|00001a10| 65 31 25 0d 0a 82 2b 20 | 20 e7 70 25 21 26 32 30 |e1%...+ | .p%!&20|
|00001a20| 3d 65 31 25 20 8c 70 25 | 21 26 32 30 3d 70 25 21 |=e1% .p%|!&20=p%!|
|00001a30| 26 32 34 3a 70 25 21 26 | 32 34 3d 65 31 25 0d 0a |&24:p%!&|24=e1%..|
|00001a40| 8c 1b 20 20 e7 70 25 21 | 26 32 34 3d 65 31 25 20 |.. .p%!|&24=e1% |
|00001a50| 8c 70 25 21 26 32 34 3d | 30 0d 0a 96 0c 20 20 70 |.p%!&24=|0.... p|
|00001a60| 25 3d 21 70 25 0d 0a a0 | 07 20 20 ce 0d 0a aa 17 |%=!p%...|. .....|
|00001a70| 20 20 21 65 32 25 3d 21 | 65 31 25 3a 65 31 25 3d | !e2%=!|e1%:e1%=|
|00001a80| 65 32 25 0d 0a b4 05 cd | 0d 0a be 14 65 32 25 3d |e2%.....|....e2%=|
|00001a90| 65 31 25 3a 65 31 25 3d | 21 65 32 25 0d 0a c8 05 |e1%:e1%=|!e2%....|
|00001aa0| ce 0d 0a d2 05 e1 0d 0a | dc 05 3a 0d 0a e6 29 dd |........|..:...).|
|00001ab0| f2 43 72 6f 73 73 52 65 | 66 65 72 65 6e 63 65 45 |.CrossRe|ferenceE|
|00001ac0| 64 67 65 73 28 65 64 67 | 65 25 2c 70 6f 6c 79 67 |dges(edg|e%,polyg|
|00001ad0| 6f 6e 25 29 0d 0a f0 0d | 65 25 3d 21 65 64 67 65 |on%)....|e%=!edge|
|00001ae0| 25 0d 0a fa 0b c8 95 65 | 25 3c 3e 30 0d 0b 04 15 |%......e|%<>0....|
|00001af0| 65 25 21 26 31 30 3d 30 | 3a 65 25 21 26 31 34 3d |e%!&10=0|:e%!&14=|
|00001b00| 30 0d 0b 0e 0a 65 25 3d | 21 65 25 0d 0b 18 05 ce |0....e%=|!e%.....|
|00001b10| 0d 0b 22 10 70 25 3d 21 | 70 6f 6c 79 67 6f 6e 25 |..".p%=!|polygon%|
|00001b20| 0d 0b 2c 0b c8 95 70 25 | 3c 3e 30 0d 0b 36 31 65 |..,...p%|<>0..61e|
|00001b30| 6e 25 3d 70 25 21 26 31 | 38 3a e7 65 6e 25 21 26 |n%=p%!&1|8:.en%!&|
|00001b40| 31 30 3d 30 20 8c 65 6e | 25 21 26 31 30 3d 70 25 |10=0 .en|%!&10=p%|
|00001b50| 20 8b 65 6e 25 21 26 31 | 34 3d 70 25 0d 0b 40 31 | .en%!&1|4=p%..@1|
|00001b60| 65 6e 25 3d 70 25 21 26 | 31 43 3a e7 65 6e 25 21 |en%=p%!&|1C:.en%!|
|00001b70| 26 31 30 3d 30 20 8c 65 | 6e 25 21 26 31 30 3d 70 |&10=0 .e|n%!&10=p|
|00001b80| 25 20 8b 65 6e 25 21 26 | 31 34 3d 70 25 0d 0b 4a |% .en%!&|14=p%..J|
|00001b90| 31 65 6e 25 3d 70 25 21 | 26 32 30 3a e7 65 6e 25 |1en%=p%!|&20:.en%|
|00001ba0| 21 26 31 30 3d 30 20 8c | 65 6e 25 21 26 31 30 3d |!&10=0 .|en%!&10=|
|00001bb0| 70 25 20 8b 65 6e 25 21 | 26 31 34 3d 70 25 0d 0b |p% .en%!|&14=p%..|
|00001bc0| 54 14 e7 70 25 21 26 32 | 34 3d 30 20 8c e5 8d 44 |T..p%!&2|4=0 ...D|
|00001bd0| 68 4b 0d 0b 5e 31 65 6e | 25 3d 70 25 21 26 32 34 |hK..^1en|%=p%!&24|
|00001be0| 3a e7 65 6e 25 21 26 31 | 30 3d 30 20 8c 65 6e 25 |:.en%!&1|0=0 .en%|
|00001bf0| 21 26 31 30 3d 70 25 20 | 8b 65 6e 25 21 26 31 34 |!&10=p% |.en%!&14|
|00001c00| 3d 70 25 0d 0b 68 0a 70 | 25 3d 21 70 25 0d 0b 72 |=p%..h.p|%=!p%..r|
|00001c10| 05 ce 0d 0b 7c 05 e1 0d | 0b 86 05 3a 0d 0b 90 0d |....|...|...:....|
|00001c20| dd f2 50 61 6c 65 74 74 | 65 0d 0b 9a 14 ea 20 70 |..Palett|e..... p|
|00001c30| 25 2c 63 25 2c 72 25 2c | 62 25 2c 67 25 0d 0b a4 |%,c%,r%,|b%,g%...|
|00001c40| 1a de 20 70 25 20 26 37 | 38 2c 66 25 28 31 35 29 |.. p% &7|8,f%(15)|
|00001c50| 2c 69 25 28 31 35 29 0d | 0b ae 19 ff 22 4c 4f 41 |,i%(15).|...."LOA|
|00001c60| 44 20 21 47 72 65 79 20 | 22 2b c3 7e 28 70 25 29 |D !Grey |"+.~(p%)|
|00001c70| 0d 0b b8 0c e3 63 25 3d | 30 b8 31 35 0d 0b c2 14 |.....c%=|0.15....|
|00001c80| 72 25 3d 70 25 2b 63 25 | 2a 26 30 36 2b 26 30 33 |r%=p%+c%|*&06+&03|
|00001c90| 0d 0b cc 14 67 25 3d 70 | 25 2b 63 25 2a 26 30 36 |....g%=p|%+c%*&06|
|00001ca0| 2b 26 30 34 0d 0b d6 14 | 62 25 3d 70 25 2b 63 25 |+&04....|b%=p%+c%|
|00001cb0| 2a 26 30 36 2b 26 30 35 | 0d 0b e0 21 66 25 28 63 |*&06+&05|...!f%(c|
|00001cc0| 25 29 3d 3f 72 25 20 81 | 31 36 3a 69 25 28 3f 72 |%)=?r% .|16:i%(?r|
|00001cd0| 25 20 81 31 36 29 3d 63 | 25 0d 0b ea 14 fb 20 63 |% .16)=c|%..... c|
|00001ce0| 25 2c 3f 72 25 2c 3f 67 | 25 2c 3f 62 25 0d 0b f4 |%,?r%,?g|%,?b%...|
|00001cf0| 05 ed 0d 0b fe 0d fb 30 | 3a fb 31 33 35 3a db 0d |.......0|:.135:..|
|00001d00| 0c 08 05 e1 0d 0c 12 05 | 3a 0d 0c 1c 23 dd f2 50 |........|:...#..P|
|00001d10| 72 6f 63 65 73 73 4e 6f | 69 73 65 28 78 31 25 2c |rocessNo|ise(x1%,|
|00001d20| 79 31 25 2c 78 32 25 2c | 79 32 25 29 0d 0c a8 21 |y1%,x2%,|y2%)...!|
|00001d30| ea 20 78 25 2c 79 25 2c | 70 2c 6e 2c 73 2c 77 2c |. x%,y%,|p,n,s,w,|
|00001d40| 65 2c 6e 77 2c 6e 65 2c | 73 77 2c 73 65 0d 0c b2 |e,nw,ne,|sw,se...|
|00001d50| 13 e3 78 25 3d 78 31 25 | b8 78 32 25 2b 34 88 32 |..x%=x1%|.x2%+4.2|
|00001d60| 0d 0c bc 23 70 3d 66 25 | 28 b0 78 25 2c 79 31 25 |...#p=f%|(.x%,y1%|
|00001d70| 2d 34 29 29 3a 6e 3d 66 | 25 28 b0 78 25 2c 79 31 |-4)):n=f|%(.x%,y1|
|00001d80| 25 29 29 0d 0c c6 28 77 | 3d 66 25 28 b0 78 25 2d |%))...(w|=f%(.x%-|
|00001d90| 32 2c 79 31 25 2d 34 29 | 29 3a 6e 77 3d 66 25 28 |2,y1%-4)|):nw=f%(|
|00001da0| b0 78 25 2d 32 2c 79 31 | 25 29 29 0d 0c d0 28 65 |.x%-2,y1|%))...(e|
|00001db0| 3d 66 25 28 b0 78 25 2b | 32 2c 79 31 25 2d 34 29 |=f%(.x%+|2,y1%-4)|
|00001dc0| 29 3a 6e 65 3d 66 25 28 | b0 78 25 2b 32 2c 79 31 |):ne=f%(|.x%+2,y1|
|00001dd0| 25 29 29 0d 0c da 11 e3 | 79 25 3d 79 31 25 b8 79 |%)).....|y%=y1%.y|
|00001de0| 32 25 88 34 0d 0c e4 1f | 73 3d 70 3a 70 3d 6e 3a |2%.4....|s=p:p=n:|
|00001df0| 73 77 3d 77 3a 77 3d 6e | 77 3a 73 65 3d 65 3a 65 |sw=w:w=n|w:se=e:e|
|00001e00| 3d 6e 65 0d 0c ee 39 6e | 3d 66 25 28 b0 78 25 2c |=ne...9n|=f%(.x%,|
|00001e10| 79 25 2b 34 29 29 3a 6e | 77 3d 66 25 28 b0 78 25 |y%+4)):n|w=f%(.x%|
|00001e20| 2d 32 2c 79 25 2b 34 29 | 29 3a 6e 65 3d 66 25 28 |-2,y%+4)|):ne=f%(|
|00001e30| b0 78 25 2b 32 2c 79 25 | 2b 34 29 29 0d 0c f8 38 |.x%+2,y%|+4))...8|
|00001e40| 73 75 72 72 6f 75 6e 64 | 3d 28 28 6e 2b 73 29 2b |surround|=((n+s)+|
|00001e50| 32 2a 28 77 2b 65 29 2b | 30 2e 38 39 2a 28 6e 77 |2*(w+e)+|0.89*(nw|
|00001e60| 2b 6e 65 2b 73 77 2b 73 | 65 29 29 2f 39 2e 35 36 |+ne+sw+s|e))/9.56|
|00001e70| 2b 30 2e 35 0d 0d 02 1d | e7 70 2d 73 75 72 72 6f |+0.5....|.p-surro|
|00001e80| 75 6e 64 3e 32 20 8c 70 | 3d 73 75 72 72 6f 75 6e |und>2 .p|=surroun|
|00001e90| 64 0d 0d 0c 16 e6 69 25 | 28 70 29 3a f0 36 39 2c |d.....i%|(p):.69,|
|00001ea0| 78 25 2d 34 2c 79 25 0d | 0d 16 05 ed 0d 0d 20 05 |x%-4,y%.|...... .|
|00001eb0| ed 0d 0d 2a 05 e1 0d 0d | 34 05 3a 0d 0d 3e 0c dd |...*....|4.:..>..|
|00001ec0| f2 43 72 75 6e 63 68 0d | 0d 48 1c de 20 69 6e 70 |.Crunch.|.H.. inp|
|00001ed0| 75 74 25 20 26 30 37 2c | 6f 75 74 70 75 74 25 20 |ut% &07,|output% |
|00001ee0| 26 30 33 0d 0d 52 20 69 | 6e 70 75 74 25 21 26 30 |&03..R i|nput%!&0|
|00001ef0| 30 3d 31 34 38 3a 69 6e | 70 75 74 25 21 26 30 34 |0=148:in|put%!&04|
|00001f00| 3d 2d 31 0d 0d 5c 2a c8 | 99 22 4f 53 5f 52 65 61 |=-1..\*.|."OS_Rea|
|00001f10| 64 56 64 75 56 61 72 69 | 61 62 6c 65 73 22 2c 69 |dVduVari|ables",i|
|00001f20| 6e 70 75 74 25 2c 6f 75 | 74 70 75 74 25 0d 0d 66 |nput%,ou|tput%..f|
|00001f30| 2a 73 63 72 65 65 6e 73 | 74 61 72 74 25 3d 21 6f |*screens|tart%=!o|
|00001f40| 75 74 70 75 74 25 3a 62 | 6c 61 63 6b 25 3d 26 37 |utput%:b|lack%=&7|
|00001f50| 37 37 37 37 37 37 37 0d | 0d 70 1e 73 74 6f 72 65 |7777777.|.p.store|
|00001f60| 25 3d 73 63 72 65 65 6e | 73 74 61 72 74 25 3a 74 |%=screen|start%:t|
|00001f70| 6f 74 25 3d 30 0d 0d 7a | 2d e3 73 63 61 6e 25 3d |ot%=0..z|-.scan%=|
|00001f80| 73 63 72 65 65 6e 73 74 | 61 72 74 25 b8 73 63 72 |screenst|art%.scr|
|00001f90| 65 65 6e 73 74 61 72 74 | 25 2b 26 31 33 46 46 43 |eenstart|%+&13FFC|
|00001fa0| 88 34 0d 0d 84 14 77 6f | 72 64 31 25 3d 73 63 61 |.4....wo|rd1%=sca|
|00001fb0| 6e 25 21 26 30 30 0d 0d | 8e 3a e7 73 63 61 6e 25 |n%!&00..|.:.scan%|
|00001fc0| 3d 73 63 72 65 65 6e 73 | 74 61 72 74 25 2b 26 31 |=screens|tart%+&1|
|00001fd0| 33 46 46 43 20 8c 77 6f | 72 64 32 25 3d 31 20 8b |3FFC .wo|rd2%=1 .|
|00001fe0| 77 6f 72 64 32 25 3d 73 | 63 61 6e 25 21 26 30 34 |word2%=s|can%!&04|
|00001ff0| 0d 0d 98 69 e7 77 6f 72 | 64 31 25 3d 62 6c 61 63 |...i.wor|d1%=blac|
|00002000| 6b 25 3a 74 6f 74 25 3d | 74 6f 74 25 2b 31 3a e7 |k%:tot%=|tot%+1:.|
|00002010| 77 6f 72 64 32 25 3c 3e | 62 6c 61 63 6b 25 3a 73 |word2%<>|black%:s|
|00002020| 74 6f 72 65 25 21 26 30 | 30 3d 62 6c 61 63 6b 25 |tore%!&0|0=black%|
|00002030| 3a 73 74 6f 72 65 25 21 | 26 30 34 3d 74 6f 74 25 |:store%!|&04=tot%|
|00002040| 2d 31 3a 74 6f 74 25 3d | 30 3a 73 74 6f 72 65 25 |-1:tot%=|0:store%|
|00002050| 3d 73 74 6f 72 65 25 2b | 38 0d 0d a2 32 e7 77 6f |=store%+|8...2.wo|
|00002060| 72 64 31 25 3c 3e 62 6c | 61 63 6b 25 3a 21 73 74 |rd1%<>bl|ack%:!st|
|00002070| 6f 72 65 25 3d 77 6f 72 | 64 31 25 3a 73 74 6f 72 |ore%=wor|d1%:stor|
|00002080| 65 25 3d 73 74 6f 72 65 | 25 2b 34 0d 0d ac 05 ed |e%=store|%+4.....|
|00002090| 0d 0d b6 3f ff 22 53 41 | 56 45 20 46 72 61 6d 65 |...?."SA|VE Frame|
|000020a0| 22 2b c3 28 66 72 61 6d | 65 25 29 2b 22 20 22 2b |"+.(fram|e%)+" "+|
|000020b0| c3 7e 28 73 63 72 65 65 | 6e 73 74 61 72 74 25 29 |.~(scree|nstart%)|
|000020c0| 2b 22 20 22 2b c3 7e 28 | 73 74 6f 72 65 25 29 0d |+" "+.~(|store%).|
|000020d0| 0d c0 05 e1 0d 0d ca 05 | 3a 0d 0d d4 0b dd f2 41 |........|:......A|
|000020e0| 73 73 65 6d 0d 0d de 11 | de 20 63 6f 64 65 25 20 |ssem....|. code% |
|000020f0| 26 32 30 30 30 0d 0d e8 | 0f e3 70 61 73 73 3d 30 |&2000...|..pass=0|
|00002100| b8 32 88 32 0d 0d f2 0c | 50 25 3d 63 6f 64 65 25 |.2.2....|P%=code%|
|00002110| 0d 0d fc 05 3a 0d 0e 06 | 1f f4 20 63 6f 6d 70 61 |....:...|.. compa|
|00002120| 63 74 76 65 72 74 69 63 | 65 73 20 72 65 67 69 73 |ctvertic|es regis|
|00002130| 74 65 72 73 0d 0e 10 2b | 70 63 20 20 3d 31 35 3a |ters...+|pc =15:|
|00002140| 6c 69 6e 6b 3d 31 34 3a | 73 70 20 20 3d 31 33 3a |link=14:|sp =13:|
|00002150| 65 20 20 20 3d 31 34 3a | 74 65 6d 70 3d 31 32 0d |e =14:|temp=12.|
|00002160| 0e 1a 23 76 33 20 20 3d | 20 30 3a 65 64 67 65 3d |..#v3 =| 0:edge=|
|00002170| 20 31 3a 76 31 20 20 3d | 20 33 3a 76 32 20 20 3d | 1:v1 =| 3:v2 =|
|00002180| 20 34 0d 0e 24 1b 70 74 | 72 20 3d 20 35 3a 70 74 | 4..$.pt|r = 5:pt|
|00002190| 72 31 3d 20 35 3a 70 74 | 72 32 3d 20 39 0d 0e 2e |r1= 5:pt|r2= 9...|
|000021a0| 05 3a 0d 0e 38 0c 5b 4f | 50 54 70 61 73 73 0d 0e |.:..8.[O|PTpass..|
|000021b0| 42 05 3b 0d 0e 4c 30 3b | 52 6f 75 74 69 6e 65 20 |B.;..L0;|Routine |
|000021c0| 66 6f 72 20 65 6c 69 6d | 69 6e 61 74 69 6e 67 20 |for elim|inating |
|000021d0| 63 6f 69 6e 63 69 64 65 | 6e 74 20 76 65 72 74 69 |coincide|nt verti|
|000021e0| 63 65 73 0d 0e 56 29 3b | 52 65 67 69 73 74 65 72 |ces..V);|Register|
|000021f0| 20 70 61 72 61 6d 65 74 | 65 72 73 20 61 72 65 20 | paramet|ers are |
|00002200| 61 73 20 66 6f 6c 6c 6f | 77 73 20 3a 0d 0e 60 2b |as follo|ws :..`+|
|00002210| 3b 20 20 20 52 30 20 3d | 20 70 6f 69 6e 74 65 72 |; R0 =| pointer|
|00002220| 20 74 6f 20 76 65 72 74 | 65 78 20 6c 69 73 74 20 | to vert|ex list |
|00002230| 70 6f 69 6e 74 65 72 0d | 0e 6a 29 3b 20 20 20 52 |pointer.|.j); R|
|00002240| 31 20 3d 20 70 6f 69 6e | 74 65 72 20 74 6f 20 65 |1 = poin|ter to e|
|00002250| 64 67 65 20 6c 69 73 74 | 20 70 6f 69 6e 74 65 72 |dge list| pointer|
|00002260| 0d 0e 74 05 3b 0d 0e 7e | 14 2e 63 6f 6d 70 61 63 |..t.;..~|..compac|
|00002270| 74 76 65 72 74 69 63 65 | 73 0d 0e 88 16 53 54 4d |tvertice|s....STM|
|00002280| 46 44 20 28 73 70 29 21 | 2c 7b 6c 69 6e 6b 7d 0d |FD (sp)!|,{link}.|
|00002290| 0e 92 0f 4c 44 52 20 76 | 32 2c 5b 76 33 5d 0d 0e |...LDR v|2,[v3]..|
|000022a0| 9c 0b 2e 77 68 69 6c 65 | 31 0d 0e a6 18 43 4d 50 |...while|1....CMP|
|000022b0| 20 76 32 2c 23 26 30 30 | 3a 42 45 51 20 6f 75 74 | v2,#&00|:BEQ out|
|000022c0| 31 0d 0e b0 0f 4c 44 52 | 20 76 31 2c 5b 76 32 5d |1....LDR| v1,[v2]|
|000022d0| 0d 0e ba 0b 2e 77 68 69 | 6c 65 32 0d 0e c4 18 43 |.....whi|le2....C|
|000022e0| 4d 50 20 76 31 2c 23 26 | 30 30 3a 42 45 51 20 6f |MP v1,#&|00:BEQ o|
|000022f0| 75 74 32 0d 0e ce 25 41 | 44 44 20 70 74 72 31 2c |ut2...%A|DD ptr1,|
|00002300| 76 31 2c 23 26 30 38 3a | 41 44 44 20 70 74 72 32 |v1,#&08:|ADD ptr2|
|00002310| 2c 76 32 2c 23 26 30 38 | 0d 0e d8 40 4c 44 4d 49 |,v2,#&08|...@LDMI|
|00002320| 41 20 28 70 74 72 31 29 | 21 2c 7b 52 36 2c 52 37 |A (ptr1)|!,{R6,R7|
|00002330| 7d 3a 4c 44 4d 49 41 20 | 28 70 74 72 32 29 21 2c |}:LDMIA |(ptr2)!,|
|00002340| 7b 52 31 30 2c 52 31 31 | 7d 3a 53 55 42 53 20 52 |{R10,R11|}:SUBS R|
|00002350| 36 2c 52 36 2c 52 31 30 | 0d 0e e2 4e 52 53 42 4d |6,R6,R10|...NRSBM|
|00002360| 49 20 52 36 2c 52 36 2c | 23 26 30 30 3a 4d 4f 56 |I R6,R6,|#&00:MOV|
|00002370| 53 20 52 36 2c 52 36 2c | 4c 53 52 20 23 31 32 3a |S R6,R6,|LSR #12:|
|00002380| 42 4e 45 20 63 6f 6e 74 | 69 6e 75 65 31 3a 43 4d |BNE cont|inue1:CM|
|00002390| 50 20 52 37 2c 52 31 31 | 3a 42 4e 45 20 63 6f 6e |P R7,R11|:BNE con|
|000023a0| 74 69 6e 75 65 31 0d 0e | ec 40 4c 44 4d 49 41 20 |tinue1..|.@LDMIA |
|000023b0| 28 70 74 72 31 29 21 2c | 7b 52 36 2c 52 37 7d 3a |(ptr1)!,|{R6,R7}:|
|000023c0| 4c 44 4d 49 41 20 28 70 | 74 72 32 29 21 2c 7b 52 |LDMIA (p|tr2)!,{R|
|000023d0| 31 30 2c 52 31 31 7d 3a | 53 55 42 53 20 52 36 2c |10,R11}:|SUBS R6,|
|000023e0| 52 36 2c 52 31 30 0d 0e | f6 4e 52 53 42 4d 49 20 |R6,R10..|.NRSBMI |
|000023f0| 52 36 2c 52 36 2c 23 26 | 30 30 3a 4d 4f 56 53 20 |R6,R6,#&|00:MOVS |
|00002400| 52 36 2c 52 36 2c 4c 53 | 52 20 23 31 32 3a 42 4e |R6,R6,LS|R #12:BN|
|00002410| 45 20 63 6f 6e 74 69 6e | 75 65 31 3a 43 4d 50 20 |E contin|ue1:CMP |
|00002420| 52 37 2c 52 31 31 3a 42 | 4e 45 20 63 6f 6e 74 69 |R7,R11:B|NE conti|
|00002430| 6e 75 65 31 0d 0f 00 40 | 4c 44 4d 49 41 20 28 70 |nue1...@|LDMIA (p|
|00002440| 74 72 31 29 21 2c 7b 52 | 36 2c 52 37 7d 3a 4c 44 |tr1)!,{R|6,R7}:LD|
|00002450| 4d 49 41 20 28 70 74 72 | 32 29 21 2c 7b 52 31 30 |MIA (ptr|2)!,{R10|
|00002460| 2c 52 31 31 7d 3a 53 55 | 42 53 20 52 36 2c 52 36 |,R11}:SU|BS R6,R6|
|00002470| 2c 52 31 30 0d 0f 0a 4e | 52 53 42 4d 49 20 52 36 |,R10...N|RSBMI R6|
|00002480| 2c 52 36 2c 23 26 30 30 | 3a 4d 4f 56 53 20 52 36 |,R6,#&00|:MOVS R6|
|00002490| 2c 52 36 2c 4c 53 52 20 | 23 31 32 3a 42 4e 45 20 |,R6,LSR |#12:BNE |
|000024a0| 63 6f 6e 74 69 6e 75 65 | 31 3a 43 4d 50 20 52 37 |continue|1:CMP R7|
|000024b0| 2c 52 31 31 3a 42 4e 45 | 20 63 6f 6e 74 69 6e 75 |,R11:BNE| continu|
|000024c0| 65 31 0d 0f 14 12 20 20 | 4c 44 52 20 65 2c 5b 65 |e1.... |LDR e,[e|
|000024d0| 64 67 65 5d 0d 0f 1e 0d | 20 20 2e 77 68 69 6c 65 |dge]....| .while|
|000024e0| 33 0d 0f 28 19 20 20 43 | 4d 50 20 65 2c 23 26 30 |3..(. C|MP e,#&0|
|000024f0| 30 3a 42 45 51 20 6f 75 | 74 33 0d 0f 32 26 20 20 |0:BEQ ou|t3..2& |
|00002500| 41 44 44 20 70 74 72 2c | 65 2c 23 26 30 38 3a 4c |ADD ptr,|e,#&08:L|
|00002510| 44 4d 49 41 20 70 74 72 | 2c 7b 52 36 2c 52 37 7d |DMIA ptr|,{R6,R7}|
|00002520| 0d 0f 3c 21 20 20 43 4d | 50 20 52 36 2c 76 32 3a |..<! CM|P R6,v2:|
|00002530| 53 54 52 45 51 20 76 31 | 2c 5b 65 2c 23 26 30 38 |STREQ v1|,[e,#&08|
|00002540| 5d 0d 0f 46 21 20 20 43 | 4d 50 20 52 37 2c 76 32 |]..F! C|MP R7,v2|
|00002550| 3a 53 54 52 45 51 20 76 | 31 2c 5b 65 2c 23 26 30 |:STREQ v|1,[e,#&0|
|00002560| 43 5d 0d 0f 50 18 20 20 | 4c 44 52 20 65 2c 5b 65 |C]..P. |LDR e,[e|
|00002570| 5d 3a 42 20 77 68 69 6c | 65 33 0d 0f 5a 0b 20 20 |]:B whil|e3..Z. |
|00002580| 2e 6f 75 74 33 0d 0f 64 | 31 20 20 41 44 52 20 76 |.out3..d|1 ADR v|
|00002590| 31 2c 6e 75 6c 6c 3a 4c | 44 52 20 65 2c 5b 76 32 |1,null:L|DR e,[v2|
|000025a0| 5d 3a 53 54 52 20 65 2c | 5b 76 33 5d 3a 4d 4f 56 |]:STR e,|[v3]:MOV|
|000025b0| 20 76 32 2c 76 33 0d 0f | 6e 0e 2e 63 6f 6e 74 69 | v2,v3..|n..conti|
|000025c0| 6e 75 65 31 0d 0f 78 18 | 4c 44 52 20 76 31 2c 5b |nue1..x.|LDR v1,[|
|000025d0| 76 31 5d 3a 42 20 77 68 | 69 6c 65 32 0d 0f 82 09 |v1]:B wh|ile2....|
|000025e0| 2e 6f 75 74 32 0d 0f 8c | 22 4d 4f 56 20 76 33 2c |.out2...|"MOV v3,|
|000025f0| 76 32 3a 4c 44 52 20 76 | 32 2c 5b 76 33 5d 3a 42 |v2:LDR v|2,[v3]:B|
|00002600| 20 77 68 69 6c 65 31 0d | 0f 96 09 2e 6f 75 74 31 | while1.|....out1|
|00002610| 0d 0f a0 22 4c 44 4d 46 | 44 20 28 73 70 29 21 2c |..."LDMF|D (sp)!,|
|00002620| 7b 6c 69 6e 6b 7d 3a 4d | 4f 56 20 70 63 2c 6c 69 |{link}:M|OV pc,li|
|00002630| 6e 6b 0d 0f aa 05 3b 0d | 0f b4 12 2e 6e 75 6c 6c |nk....;.|....null|
|00002640| 20 20 20 45 51 55 44 20 | 30 0d 0f be 05 3b 0d 0f | EQUD |0....;..|
|00002650| c8 05 5d 0d 0f d2 05 3a | 0d 0f dc 1c f4 20 63 6f |..]....:|..... co|
|00002660| 6d 70 61 63 74 65 64 67 | 65 73 20 72 65 67 69 73 |mpactedg|es regis|
|00002670| 74 65 72 73 0d 0f e6 2b | 65 33 20 20 3d 20 30 3a |ters...+|e3 = 0:|
|00002680| 70 6f 6c 79 3d 20 31 3a | 65 31 20 20 3d 20 32 3a |poly= 1:|e1 = 2:|
|00002690| 65 32 20 20 3d 20 33 3a | 70 20 20 20 3d 20 34 0d |e2 = 3:|p = 4.|
|000026a0| 0f f0 2b 76 31 20 20 3d | 20 35 3a 76 32 20 20 3d |..+v1 =| 5:v2 =|
|000026b0| 20 36 3a 76 33 20 20 3d | 20 37 3a 76 34 20 20 3d | 6:v3 =| 7:v4 =|
|000026c0| 20 38 3a 70 74 72 20 3d | 20 39 0d 0f fa 05 3a 0d | 8:ptr =| 9....:.|
|000026d0| 10 04 0c 5b 4f 50 54 70 | 61 73 73 0d 10 0e 05 3b |...[OPTp|ass....;|
|000026e0| 0d 10 18 2d 3b 52 6f 75 | 74 69 6e 65 20 66 6f 72 |...-;Rou|tine for|
|000026f0| 20 65 6c 69 6d 69 6e 61 | 74 69 6e 67 20 63 6f 69 | elimina|ting coi|
|00002700| 6e 63 69 64 65 6e 74 20 | 65 64 67 65 73 0d 10 22 |ncident |edges.."|
|00002710| 29 3b 52 65 67 69 73 74 | 65 72 20 70 61 72 61 6d |);Regist|er param|
|00002720| 65 74 65 72 73 20 61 72 | 65 20 61 73 20 66 6f 6c |eters ar|e as fol|
|00002730| 6c 6f 77 73 20 3a 0d 10 | 2c 29 3b 20 20 20 52 30 |lows :..|,); R0|
|00002740| 20 3d 20 70 6f 69 6e 74 | 65 72 20 74 6f 20 65 64 | = point|er to ed|
|00002750| 67 65 20 6c 69 73 74 20 | 70 6f 69 6e 74 65 72 0d |ge list |pointer.|
|00002760| 10 36 2c 3b 20 20 20 52 | 31 20 3d 20 70 6f 69 6e |.6,; R|1 = poin|
|00002770| 74 65 72 20 74 6f 20 70 | 6f 6c 79 67 6f 6e 20 6c |ter to p|olygon l|
|00002780| 69 73 74 20 70 6f 69 6e | 74 65 72 0d 10 40 05 3b |ist poin|ter..@.;|
|00002790| 0d 10 4a 11 2e 63 6f 6d | 70 61 63 74 65 64 67 65 |..J..com|pactedge|
|000027a0| 73 0d 10 54 0f 4c 44 52 | 20 65 32 2c 5b 65 33 5d |s..T.LDR| e2,[e3]|
|000027b0| 0d 10 5e 0b 2e 77 68 69 | 6c 65 34 0d 10 68 18 43 |..^..whi|le4..h.C|
|000027c0| 4d 50 20 65 32 2c 23 26 | 30 30 3a 42 45 51 20 6f |MP e2,#&|00:BEQ o|
|000027d0| 75 74 34 0d 10 72 0f 4c | 44 52 20 65 31 2c 5b 65 |ut4..r.L|DR e1,[e|
|000027e0| 32 5d 0d 10 7c 0b 2e 77 | 68 69 6c 65 35 0d 10 86 |2]..|..w|hile5...|
|000027f0| 18 43 4d 50 20 65 31 2c | 23 26 30 30 3a 42 45 51 |.CMP e1,|#&00:BEQ|
|00002800| 20 6f 75 74 35 0d 10 90 | 23 41 44 44 20 76 31 2c | out5...|#ADD v1,|
|00002810| 65 31 2c 23 26 30 38 3a | 4c 44 4d 49 41 20 76 31 |e1,#&08:|LDMIA v1|
|00002820| 2c 7b 76 31 2c 76 32 7d | 0d 10 9a 23 41 44 44 20 |,{v1,v2}|...#ADD |
|00002830| 76 33 2c 65 32 2c 23 26 | 30 38 3a 4c 44 4d 49 41 |v3,e2,#&|08:LDMIA|
|00002840| 20 76 33 2c 7b 76 33 2c | 76 34 7d 0d 10 a4 29 43 | v3,{v3,|v4}...)C|
|00002850| 4d 50 20 76 31 2c 76 33 | 3a 43 4d 50 45 51 20 76 |MP v1,v3|:CMPEQ v|
|00002860| 32 2c 76 34 3a 42 45 51 | 20 67 65 74 6f 6e 77 69 |2,v4:BEQ| getonwi|
|00002870| 74 68 69 74 0d 10 ae 26 | 43 4d 50 20 76 31 2c 76 |thit...&|CMP v1,v|
|00002880| 34 3a 43 4d 50 45 51 20 | 76 32 2c 76 33 3a 42 4e |4:CMPEQ |v2,v3:BN|
|00002890| 45 20 66 6f 72 67 65 74 | 69 74 0d 10 b8 10 2e 67 |E forget|it.....g|
|000028a0| 65 74 6f 6e 77 69 74 68 | 69 74 0d 10 c2 12 20 20 |etonwith|it.... |
|000028b0| 4c 44 52 20 70 2c 5b 70 | 6f 6c 79 5d 0d 10 cc 0d |LDR p,[p|oly]....|
|000028c0| 20 20 2e 77 68 69 6c 65 | 36 0d 10 d6 19 20 20 43 | .while|6.... C|
|000028d0| 4d 50 20 70 2c 23 26 30 | 30 3a 42 45 51 20 6f 75 |MP p,#&0|0:BEQ ou|
|000028e0| 74 36 0d 10 e0 2f 20 20 | 41 44 44 20 70 74 72 2c |t6.../ |ADD ptr,|
|000028f0| 70 2c 23 26 31 38 3a 4c | 44 4d 49 41 20 70 74 72 |p,#&18:L|DMIA ptr|
|00002900| 2c 7b 52 39 2c 52 31 30 | 2c 52 31 31 2c 52 31 32 |,{R9,R10|,R11,R12|
|00002910| 7d 0d 10 ea 22 20 20 43 | 4d 50 20 52 39 20 2c 65 |}..." C|MP R9 ,e|
|00002920| 32 3a 53 54 52 45 51 20 | 65 31 2c 5b 70 2c 23 26 |2:STREQ |e1,[p,#&|
|00002930| 31 38 5d 0d 10 f4 22 20 | 20 43 4d 50 20 52 31 30 |18]..." | CMP R10|
|00002940| 2c 65 32 3a 53 54 52 45 | 51 20 65 31 2c 5b 70 2c |,e2:STRE|Q e1,[p,|
|00002950| 23 26 31 43 5d 0d 10 fe | 22 20 20 43 4d 50 20 52 |#&1C]...|" CMP R|
|00002960| 31 31 2c 65 32 3a 53 54 | 52 45 51 20 65 31 2c 5b |11,e2:ST|REQ e1,[|
|00002970| 70 2c 23 26 32 30 5d 0d | 11 08 22 20 20 43 4d 50 |p,#&20].|.." CMP|
|00002980| 20 52 31 32 2c 65 32 3a | 53 54 52 45 51 20 65 31 | R12,e2:|STREQ e1|
|00002990| 2c 5b 70 2c 23 26 32 34 | 5d 0d 11 12 18 20 20 4c |,[p,#&24|].... L|
|000029a0| 44 52 20 70 2c 5b 70 5d | 3a 42 20 77 68 69 6c 65 |DR p,[p]|:B while|
|000029b0| 36 0d 11 1c 0b 20 20 2e | 6f 75 74 36 0d 11 26 31 |6.... .|out6..&1|
|000029c0| 20 20 41 44 52 20 65 31 | 2c 6e 75 6c 6c 3a 4c 44 | ADR e1|,null:LD|
|000029d0| 52 20 70 2c 5b 65 32 5d | 3a 53 54 52 20 70 2c 5b |R p,[e2]|:STR p,[|
|000029e0| 65 33 5d 3a 4d 4f 56 20 | 65 32 2c 65 33 0d 11 30 |e3]:MOV |e2,e3..0|
|000029f0| 0d 2e 66 6f 72 67 65 74 | 69 74 0d 11 3a 18 4c 44 |..forget|it..:.LD|
|00002a00| 52 20 65 31 2c 5b 65 31 | 5d 3a 42 20 77 68 69 6c |R e1,[e1|]:B whil|
|00002a10| 65 35 0d 11 44 09 2e 6f | 75 74 35 0d 11 4e 22 4d |e5..D..o|ut5..N"M|
|00002a20| 4f 56 20 65 33 2c 65 32 | 3a 4c 44 52 20 65 32 2c |OV e3,e2|:LDR e2,|
|00002a30| 5b 65 33 5d 3a 42 20 77 | 68 69 6c 65 34 0d 11 58 |[e3]:B w|hile4..X|
|00002a40| 09 2e 6f 75 74 34 0d 11 | 62 0f 4d 4f 56 20 70 63 |..out4..|b.MOV pc|
|00002a50| 2c 6c 69 6e 6b 0d 11 6c | 05 3b 0d 11 76 05 5d 0d |,link..l|.;..v.].|
|00002a60| 11 80 05 3a 0d 11 8a 1c | f4 20 76 65 72 74 65 78 |...:....|. vertex|
|00002a70| 6e 6f 72 6d 61 6c 20 72 | 65 67 69 73 74 65 72 73 |normal r|egisters|
|00002a80| 0d 11 94 33 65 20 20 20 | 3d 20 30 3a 76 20 20 20 |...3e |= 0:v |
|00002a90| 3d 20 31 3a 73 70 61 63 | 3d 20 32 3a 74 65 6d 70 |= 1:spac|= 2:temp|
|00002aa0| 3d 20 33 3a 76 6e 20 20 | 3d 20 34 3a 65 6e 20 20 |= 3:vn |= 4:en |
|00002ab0| 3d 20 35 0d 11 9e 23 70 | 6e 20 20 3d 20 36 3a 65 |= 5...#p|n = 6:e|
|00002ac0| 74 20 20 3d 20 37 3a 77 | 6f 72 6b 3d 20 38 3a 65 |t = 7:w|ork= 8:e|
|00002ad0| 66 20 20 3d 20 39 0d 11 | a8 05 3a 0d 11 b2 0c 5b |f = 9..|..:....[|
|00002ae0| 4f 50 54 70 61 73 73 0d | 11 bc 05 3b 0d 11 c6 36 |OPTpass.|...;...6|
|00002af0| 3b 52 6f 75 74 69 6e 65 | 20 74 6f 20 73 70 65 65 |;Routine| to spee|
|00002b00| 64 20 75 70 20 63 61 6c | 63 75 6c 61 74 69 6f 6e |d up cal|culation|
|00002b10| 20 6f 66 20 76 65 72 74 | 65 78 20 6e 6f 72 6d 61 | of vert|ex norma|
|00002b20| 6c 73 0d 11 d0 22 3b 20 | 20 20 20 52 30 20 3d 20 |ls..."; | R0 = |
|00002b30| 70 6f 69 6e 74 65 72 20 | 74 6f 20 65 64 67 65 20 |pointer |to edge |
|00002b40| 6c 69 73 74 0d 11 da 1b | 3b 20 20 20 20 52 31 20 |list....|; R1 |
|00002b50| 3d 20 76 65 72 74 65 78 | 20 6e 75 6d 62 65 72 0d |= vertex| number.|
|00002b60| 11 e4 22 3b 20 20 20 20 | 52 32 20 3d 20 70 6f 69 |.."; |R2 = poi|
|00002b70| 6e 74 65 72 20 74 6f 20 | 77 6f 72 6b 73 70 61 63 |nter to |workspac|
|00002b80| 65 0d 11 ee 05 3b 0d 11 | f8 0d 2e 72 65 74 75 72 |e....;..|...retur|
|00002b90| 6e 65 6e 0d 12 02 0a 45 | 51 55 44 20 30 0d 12 0c |nen....E|QUD 0...|
|00002ba0| 05 3b 0d 12 16 0d 2e 72 | 65 74 75 72 6e 65 66 0d |.;.....r|eturnef.|
|00002bb0| 12 20 0a 45 51 55 44 20 | 30 0d 12 2a 05 3b 0d 12 |. .EQUD |0..*.;..|
|00002bc0| 34 0d 2e 72 65 74 75 72 | 6e 70 6e 0d 12 3e 0a 45 |4..retur|npn..>.E|
|00002bd0| 51 55 44 20 30 0d 12 48 | 05 3b 0d 12 52 12 2e 76 |QUD 0..H|.;..R..v|
|00002be0| 65 72 74 65 78 6e 6f 72 | 6d 61 6c 73 0d 12 5c 0d |ertexnor|mals..\.|
|00002bf0| 4c 44 52 20 65 2c 5b 65 | 5d 0d 12 66 0b 2e 77 68 |LDR e,[e|]..f..wh|
|00002c00| 69 6c 65 37 0d 12 70 17 | 43 4d 50 20 65 2c 23 26 |ile7..p.|CMP e,#&|
|00002c10| 30 30 3a 42 45 51 20 6f | 75 74 37 0d 12 7a 31 4c |00:BEQ o|ut7..z1L|
|00002c20| 44 52 20 76 6e 2c 5b 65 | 2c 23 26 30 38 5d 3a 43 |DR vn,[e|,#&08]:C|
|00002c30| 4d 50 20 76 6e 2c 76 3a | ec 51 20 65 66 2c 65 3a |MP vn,v:|.Q ef,e:|
|00002c40| 41 44 52 45 51 20 65 2c | 6e 75 6c 6c 0d 12 84 31 |ADREQ e,|null...1|
|00002c50| 4c 44 52 20 76 6e 2c 5b | 65 2c 23 26 30 43 5d 3a |LDR vn,[|e,#&0C]:|
|00002c60| 43 4d 50 20 76 6e 2c 76 | 3a ec 51 20 65 66 2c 65 |CMP vn,v|:.Q ef,e|
|00002c70| 3a 41 44 52 45 51 20 65 | 2c 6e 75 6c 6c 0d 12 8e |:ADREQ e|,null...|
|00002c80| 16 4c 44 52 20 65 2c 5b | 65 5d 3a 42 20 77 68 69 |.LDR e,[|e]:B whi|
|00002c90| 6c 65 37 0d 12 98 09 2e | 6f 75 74 37 0d 12 a2 34 |le7.....|out7...4|
|00002ca0| 4d 4f 56 20 65 6e 2c 65 | 66 3a 4c 44 52 20 70 6e |MOV en,e|f:LDR pn|
|00002cb0| 2c 5b 65 6e 2c 23 26 31 | 30 5d 3a 43 4d 50 20 70 |,[en,#&1|0]:CMP p|
|00002cc0| 6e 2c 23 26 30 30 3a 42 | 45 51 20 62 69 67 69 66 |n,#&00:B|EQ bigif|
|00002cd0| 0d 12 ac 05 3b 0d 12 b6 | 0c 2e 72 65 70 65 61 74 |....;...|..repeat|
|00002ce0| 37 0d 12 c0 28 4c 44 52 | 20 65 74 2c 5b 70 6e 2c |7...(LDR| et,[pn,|
|00002cf0| 23 26 31 38 5d 3a 43 4d | 50 20 65 74 2c 65 6e 3a |#&18]:CM|P et,en:|
|00002d00| 42 45 51 20 6e 65 78 74 | 31 0d 12 ca 45 4c 44 52 |BEQ next|1...ELDR|
|00002d10| 20 76 6e 2c 5b 65 74 2c | 23 26 30 38 5d 3a 43 4d | vn,[et,|#&08]:CM|
|00002d20| 50 20 76 6e 2c 76 3a 4c | 44 52 4e 45 20 76 6e 2c |P vn,v:L|DRNE vn,|
|00002d30| 5b 65 74 2c 23 26 30 43 | 5d 3a 43 4d 50 4e 45 20 |[et,#&0C|]:CMPNE |
|00002d40| 76 6e 2c 76 3a 42 45 51 | 20 64 6f 6e 65 31 0d 12 |vn,v:BEQ| done1..|
|00002d50| d4 0a 2e 6e 65 78 74 31 | 0d 12 de 28 4c 44 52 20 |...next1|...(LDR |
|00002d60| 65 74 2c 5b 70 6e 2c 23 | 26 31 43 5d 3a 43 4d 50 |et,[pn,#|&1C]:CMP|
|00002d70| 20 65 74 2c 65 6e 3a 42 | 45 51 20 6e 65 78 74 32 | et,en:B|EQ next2|
|00002d80| 0d 12 e8 45 4c 44 52 20 | 76 6e 2c 5b 65 74 2c 23 |...ELDR |vn,[et,#|
|00002d90| 26 30 38 5d 3a 43 4d 50 | 20 76 6e 2c 76 3a 4c 44 |&08]:CMP| vn,v:LD|
|00002da0| 52 4e 45 20 76 6e 2c 5b | 65 74 2c 23 26 30 43 5d |RNE vn,[|et,#&0C]|
|00002db0| 3a 43 4d 50 4e 45 20 76 | 6e 2c 76 3a 42 45 51 20 |:CMPNE v|n,v:BEQ |
|00002dc0| 64 6f 6e 65 31 0d 12 f2 | 0a 2e 6e 65 78 74 32 0d |done1...|..next2.|
|00002dd0| 12 fc 28 4c 44 52 20 65 | 74 2c 5b 70 6e 2c 23 26 |..(LDR e|t,[pn,#&|
|00002de0| 32 30 5d 3a 43 4d 50 20 | 65 74 2c 65 6e 3a 42 45 |20]:CMP |et,en:BE|
|00002df0| 51 20 6e 65 78 74 33 0d | 13 06 45 4c 44 52 20 76 |Q next3.|..ELDR v|
|00002e00| 6e 2c 5b 65 74 2c 23 26 | 30 38 5d 3a 43 4d 50 20 |n,[et,#&|08]:CMP |
|00002e10| 76 6e 2c 76 3a 4c 44 52 | 4e 45 20 76 6e 2c 5b 65 |vn,v:LDR|NE vn,[e|
|00002e20| 74 2c 23 26 30 43 5d 3a | 43 4d 50 4e 45 20 76 6e |t,#&0C]:|CMPNE vn|
|00002e30| 2c 76 3a 42 45 51 20 64 | 6f 6e 65 31 0d 13 10 0a |,v:BEQ d|one1....|
|00002e40| 2e 6e 65 78 74 33 0d 13 | 1a 28 4c 44 52 20 65 74 |.next3..|.(LDR et|
|00002e50| 2c 5b 70 6e 2c 23 26 32 | 34 5d 3a 43 4d 50 20 65 |,[pn,#&2|4]:CMP e|
|00002e60| 74 2c 65 6e 3a 42 45 51 | 20 6e 65 78 74 34 0d 13 |t,en:BEQ| next4..|
|00002e70| 24 45 4c 44 52 20 76 6e | 2c 5b 65 74 2c 23 26 30 |$ELDR vn|,[et,#&0|
|00002e80| 38 5d 3a 43 4d 50 20 76 | 6e 2c 76 3a 4c 44 52 4e |8]:CMP v|n,v:LDRN|
|00002e90| 45 20 76 6e 2c 5b 65 74 | 2c 23 26 30 43 5d 3a 43 |E vn,[et|,#&0C]:C|
|00002ea0| 4d 50 4e 45 20 76 6e 2c | 76 3a 42 45 51 20 64 6f |MPNE vn,|v:BEQ do|
|00002eb0| 6e 65 31 0d 13 2e 0a 2e | 6e 65 78 74 34 0d 13 38 |ne1.....|next4..8|
|00002ec0| 0a 2e 64 6f 6e 65 31 0d | 13 42 0d 4d 4f 56 20 65 |..done1.|.B.MOV e|
|00002ed0| 6e 2c 65 74 0d 13 4c 3d | 4c 44 52 20 76 6e 2c 5b |n,et..L=|LDR vn,[|
|00002ee0| 65 6e 2c 23 26 31 30 5d | 3a 43 4d 50 20 76 6e 2c |en,#&10]|:CMP vn,|
|00002ef0| 70 6e 3a 4c 44 52 45 51 | 20 70 6e 2c 5b 65 6e 2c |pn:LDREQ| pn,[en,|
|00002f00| 23 26 31 34 5d 3a 4d 4f | 56 4e 45 20 70 6e 2c 76 |#&14]:MO|VNE pn,v|
|00002f10| 6e 0d 13 56 27 43 4d 50 | 20 65 6e 2c 65 66 3a 43 |n..V'CMP| en,ef:C|
|00002f20| 4d 50 4e 45 20 70 6e 2c | 23 26 30 30 3a 42 4e 45 |MPNE pn,|#&00:BNE|
|00002f30| 20 72 65 70 65 61 74 37 | 0d 13 60 05 3b 0d 13 6a | repeat7|..`.;..j|
|00002f40| 0a 2e 62 69 67 69 66 0d | 13 74 33 53 54 52 20 65 |..bigif.|.t3STR e|
|00002f50| 6e 2c 72 65 74 75 72 6e | 65 6e 3a 53 54 52 20 70 |n,return|en:STR p|
|00002f60| 6e 2c 72 65 74 75 72 6e | 70 6e 3a 53 54 52 20 65 |n,return|pn:STR e|
|00002f70| 66 2c 72 65 74 75 72 6e | 65 66 0d 13 7e 04 0d 13 |f,return|ef..~...|
|00002f80| 88 29 4d 4f 56 20 77 6f | 72 6b 2c 73 70 61 63 3a |.)MOV wo|rk,spac:|
|00002f90| 43 4d 50 20 70 6e 2c 23 | 26 30 30 3a 42 45 51 20 |CMP pn,#|&00:BEQ |
|00002fa0| 62 69 67 65 6c 73 65 0d | 13 92 0c 2e 62 69 67 74 |bigelse.|....bigt|
|00002fb0| 68 65 6e 0d 13 9c 0e 20 | 20 2e 72 65 70 65 61 74 |hen.... | .repeat|
|00002fc0| 38 0d 13 a6 2a 20 20 4c | 44 52 20 65 74 2c 5b 70 |8...* L|DR et,[p|
|00002fd0| 6e 2c 23 26 31 38 5d 3a | 43 4d 50 20 65 74 2c 65 |n,#&18]:|CMP et,e|
|00002fe0| 6e 3a 42 45 51 20 74 68 | 65 6e 31 0d 13 b0 40 20 |n:BEQ th|en1...@ |
|00002ff0| 20 4c 44 52 20 74 65 6d | 70 2c 5b 65 74 2c 23 26 | LDR tem|p,[et,#&|
|00003000| 30 38 5d 3a 43 4d 50 20 | 74 65 6d 70 2c 76 3a 4c |08]:CMP |temp,v:L|
|00003010| 44 52 45 51 20 76 6e 2c | 5b 65 74 2c 23 26 30 43 |DREQ vn,|[et,#&0C|
|00003020| 5d 3a 42 45 51 20 64 6f | 6e 65 32 0d 13 ba 40 20 |]:BEQ do|ne2...@ |
|00003030| 20 4c 44 52 20 74 65 6d | 70 2c 5b 65 74 2c 23 26 | LDR tem|p,[et,#&|
|00003040| 30 43 5d 3a 43 4d 50 20 | 74 65 6d 70 2c 76 3a 4c |0C]:CMP |temp,v:L|
|00003050| 44 52 45 51 20 76 6e 2c | 5b 65 74 2c 23 26 30 38 |DREQ vn,|[et,#&08|
|00003060| 5d 3a 42 45 51 20 64 6f | 6e 65 32 0d 13 c4 0c 20 |]:BEQ do|ne2.... |
|00003070| 20 2e 74 68 65 6e 31 0d | 13 ce 2a 20 20 4c 44 52 | .then1.|..* LDR|
|00003080| 20 65 74 2c 5b 70 6e 2c | 23 26 31 43 5d 3a 43 4d | et,[pn,|#&1C]:CM|
|00003090| 50 20 65 74 2c 65 6e 3a | 42 45 51 20 74 68 65 6e |P et,en:|BEQ then|
|000030a0| 32 0d 13 d8 40 20 20 4c | 44 52 20 74 65 6d 70 2c |2...@ L|DR temp,|
|000030b0| 5b 65 74 2c 23 26 30 38 | 5d 3a 43 4d 50 20 74 65 |[et,#&08|]:CMP te|
|000030c0| 6d 70 2c 76 3a 4c 44 52 | 45 51 20 76 6e 2c 5b 65 |mp,v:LDR|EQ vn,[e|
|000030d0| 74 2c 23 26 30 43 5d 3a | 42 45 51 20 64 6f 6e 65 |t,#&0C]:|BEQ done|
|000030e0| 32 0d 13 e2 40 20 20 4c | 44 52 20 74 65 6d 70 2c |2...@ L|DR temp,|
|000030f0| 5b 65 74 2c 23 26 30 43 | 5d 3a 43 4d 50 20 74 65 |[et,#&0C|]:CMP te|
|00003100| 6d 70 2c 76 3a 4c 44 52 | 45 51 20 76 6e 2c 5b 65 |mp,v:LDR|EQ vn,[e|
|00003110| 74 2c 23 26 30 38 5d 3a | 42 45 51 20 64 6f 6e 65 |t,#&08]:|BEQ done|
|00003120| 32 0d 13 ec 0c 20 20 2e | 74 68 65 6e 32 0d 13 f6 |2.... .|then2...|
|00003130| 2a 20 20 4c 44 52 20 65 | 74 2c 5b 70 6e 2c 23 26 |* LDR e|t,[pn,#&|
|00003140| 32 30 5d 3a 43 4d 50 20 | 65 74 2c 65 6e 3a 42 45 |20]:CMP |et,en:BE|
|00003150| 51 20 74 68 65 6e 33 0d | 14 00 40 20 20 4c 44 52 |Q then3.|..@ LDR|
|00003160| 20 74 65 6d 70 2c 5b 65 | 74 2c 23 26 30 38 5d 3a | temp,[e|t,#&08]:|
|00003170| 43 4d 50 20 74 65 6d 70 | 2c 76 3a 4c 44 52 45 51 |CMP temp|,v:LDREQ|
|00003180| 20 76 6e 2c 5b 65 74 2c | 23 26 30 43 5d 3a 42 45 | vn,[et,|#&0C]:BE|
|00003190| 51 20 64 6f 6e 65 32 0d | 14 0a 40 20 20 4c 44 52 |Q done2.|..@ LDR|
|000031a0| 20 74 65 6d 70 2c 5b 65 | 74 2c 23 26 30 43 5d 3a | temp,[e|t,#&0C]:|
|000031b0| 43 4d 50 20 74 65 6d 70 | 2c 76 3a 4c 44 52 45 51 |CMP temp|,v:LDREQ|
|000031c0| 20 76 6e 2c 5b 65 74 2c | 23 26 30 38 5d 3a 42 45 | vn,[et,|#&08]:BE|
|000031d0| 51 20 64 6f 6e 65 32 0d | 14 14 0c 20 20 2e 74 68 |Q done2.|... .th|
|000031e0| 65 6e 33 0d 14 1e 2a 20 | 20 4c 44 52 20 65 74 2c |en3...* | LDR et,|
|000031f0| 5b 70 6e 2c 23 26 32 34 | 5d 3a 43 4d 50 20 65 74 |[pn,#&24|]:CMP et|
|00003200| 2c 65 6e 3a 42 45 51 20 | 74 68 65 6e 34 0d 14 28 |,en:BEQ |then4..(|
|00003210| 40 20 20 4c 44 52 20 74 | 65 6d 70 2c 5b 65 74 2c |@ LDR t|emp,[et,|
|00003220| 23 26 30 38 5d 3a 43 4d | 50 20 74 65 6d 70 2c 76 |#&08]:CM|P temp,v|
|00003230| 3a 4c 44 52 45 51 20 76 | 6e 2c 5b 65 74 2c 23 26 |:LDREQ v|n,[et,#&|
|00003240| 30 43 5d 3a 42 45 51 20 | 64 6f 6e 65 32 0d 14 32 |0C]:BEQ |done2..2|
|00003250| 40 20 20 4c 44 52 20 74 | 65 6d 70 2c 5b 65 74 2c |@ LDR t|emp,[et,|
|00003260| 23 26 30 43 5d 3a 43 4d | 50 20 74 65 6d 70 2c 76 |#&0C]:CM|P temp,v|
|00003270| 3a 4c 44 52 45 51 20 76 | 6e 2c 5b 65 74 2c 23 26 |:LDREQ v|n,[et,#&|
|00003280| 30 38 5d 3a 42 45 51 20 | 64 6f 6e 65 32 0d 14 3c |08]:BEQ |done2..<|
|00003290| 0c 20 20 2e 74 68 65 6e | 34 0d 14 46 0c 20 20 2e |. .then|4..F. .|
|000032a0| 64 6f 6e 65 32 0d 14 50 | 0f 20 20 4d 4f 56 20 65 |done2..P|. MOV e|
|000032b0| 6e 2c 65 74 0d 14 5a 30 | 20 20 41 44 44 20 74 65 |n,et..Z0| ADD te|
|000032c0| 6d 70 2c 77 6f 72 6b 2c | 23 26 30 38 3a 53 54 4d |mp,work,|#&08:STM|
|000032d0| 49 41 20 28 77 6f 72 6b | 29 21 2c 7b 74 65 6d 70 |IA (work|)!,{temp|
|000032e0| 2c 76 6e 7d 0d 14 64 45 | 20 20 4c 44 52 20 74 65 |,vn}..dE| LDR te|
|000032f0| 6d 70 2c 5b 65 6e 2c 23 | 26 31 30 5d 3a 43 4d 50 |mp,[en,#|&10]:CMP|
|00003300| 20 74 65 6d 70 2c 70 6e | 3a 4c 44 52 45 51 20 70 | temp,pn|:LDREQ p|
|00003310| 6e 2c 5b 65 6e 2c 23 26 | 31 34 5d 3a 4d 4f 56 4e |n,[en,#&|14]:MOVN|
|00003320| 45 20 70 6e 2c 74 65 6d | 70 0d 14 6e 1b 20 20 43 |E pn,tem|p..n. C|
|00003330| 4d 50 20 65 6e 2c 65 66 | 3a 42 4e 45 20 72 65 70 |MP en,ef|:BNE rep|
|00003340| 65 61 74 38 0d 14 78 34 | 20 20 53 55 42 20 74 65 |eat8..x4| SUB te|
|00003350| 6d 70 2c 77 6f 72 6b 2c | 23 26 30 38 3a 53 54 52 |mp,work,|#&08:STR|
|00003360| 20 73 70 61 63 2c 5b 74 | 65 6d 70 5d 3a 42 20 62 | spac,[t|emp]:B b|
|00003370| 69 67 66 69 6e 69 73 68 | 0d 14 82 0c 2e 62 69 67 |igfinish|.....big|
|00003380| 65 6c 73 65 0d 14 8c 26 | 20 20 4c 44 52 20 20 20 |else...&| LDR |
|00003390| 76 6e 2c 5b 65 6e 2c 23 | 26 31 30 5d 3a 43 4d 50 |vn,[en,#|&10]:CMP|
|000033a0| 20 20 20 76 6e 2c 23 26 | 30 30 0d 14 96 34 20 20 | vn,#&|00...4 |
|000033b0| 4c 44 52 45 51 20 76 6e | 2c 5b 65 6e 2c 23 26 31 |LDREQ vn|,[en,#&1|
|000033c0| 34 5d 3a 43 4d 50 45 51 | 20 76 6e 2c 23 26 30 30 |4]:CMPEQ| vn,#&00|
|000033d0| 3a 42 45 51 20 62 69 67 | 66 69 6e 69 73 68 0d 14 |:BEQ big|finish..|
|000033e0| a0 47 20 20 4c 44 52 20 | 74 65 6d 70 2c 5b 65 6e |.G LDR |temp,[en|
|000033f0| 2c 23 26 31 30 5d 3a 43 | 4d 50 20 74 65 6d 70 2c |,#&10]:C|MP temp,|
|00003400| 23 26 30 30 3a 4c 44 52 | 45 51 20 70 6e 2c 5b 65 |#&00:LDR|EQ pn,[e|
|00003410| 6e 2c 23 26 31 34 5d 3a | 4d 4f 56 4e 45 20 70 6e |n,#&14]:|MOVNE pn|
|00003420| 2c 74 65 6d 70 0d 14 aa | 32 20 20 4c 44 52 20 76 |,temp...|2 LDR v|
|00003430| 6e 2c 5b 65 6e 2c 23 26 | 30 38 5d 3a 43 4d 50 20 |n,[en,#&|08]:CMP |
|00003440| 76 6e 2c 76 3a 4c 44 52 | 45 51 20 76 6e 2c 5b 65 |vn,v:LDR|EQ vn,[e|
|00003450| 6e 2c 23 26 30 43 5d 0d | 14 b4 30 20 20 41 44 44 |n,#&0C].|..0 ADD|
|00003460| 20 74 65 6d 70 2c 77 6f | 72 6b 2c 23 26 30 38 3a | temp,wo|rk,#&08:|
|00003470| 53 54 4d 49 41 20 28 77 | 6f 72 6b 29 21 2c 7b 74 |STMIA (w|ork)!,{t|
|00003480| 65 6d 70 2c 76 6e 7d 0d | 14 be 0e 20 20 2e 72 65 |emp,vn}.|... .re|
|00003490| 70 65 61 74 39 0d 14 c8 | 2a 20 20 4c 44 52 20 65 |peat9...|* LDR e|
|000034a0| 74 2c 5b 70 6e 2c 23 26 | 31 38 5d 3a 43 4d 50 20 |t,[pn,#&|18]:CMP |
|000034b0| 65 74 2c 65 6e 3a 42 45 | 51 20 65 6c 73 65 31 0d |et,en:BE|Q else1.|
|000034c0| 14 d2 40 20 20 4c 44 52 | 20 74 65 6d 70 2c 5b 65 |..@ LDR| temp,[e|
|000034d0| 74 2c 23 26 30 38 5d 3a | 43 4d 50 20 74 65 6d 70 |t,#&08]:|CMP temp|
|000034e0| 2c 76 3a 4c 44 52 45 51 | 20 76 6e 2c 5b 65 74 2c |,v:LDREQ| vn,[et,|
|000034f0| 23 26 30 43 5d 3a 42 45 | 51 20 64 6f 6e 65 33 0d |#&0C]:BE|Q done3.|
|00003500| 14 dc 40 20 20 4c 44 52 | 20 74 65 6d 70 2c 5b 65 |..@ LDR| temp,[e|
|00003510| 74 2c 23 26 30 43 5d 3a | 43 4d 50 20 74 65 6d 70 |t,#&0C]:|CMP temp|
|00003520| 2c 76 3a 4c 44 52 45 51 | 20 76 6e 2c 5b 65 74 2c |,v:LDREQ| vn,[et,|
|00003530| 23 26 30 38 5d 3a 42 45 | 51 20 64 6f 6e 65 33 0d |#&08]:BE|Q done3.|
|00003540| 14 e6 0c 20 20 2e 65 6c | 73 65 31 0d 14 f0 2a 20 |... .el|se1...* |
|00003550| 20 4c 44 52 20 65 74 2c | 5b 70 6e 2c 23 26 31 43 | LDR et,|[pn,#&1C|
|00003560| 5d 3a 43 4d 50 20 65 74 | 2c 65 6e 3a 42 45 51 20 |]:CMP et|,en:BEQ |
|00003570| 65 6c 73 65 32 0d 14 fa | 40 20 20 4c 44 52 20 74 |else2...|@ LDR t|
|00003580| 65 6d 70 2c 5b 65 74 2c | 23 26 30 38 5d 3a 43 4d |emp,[et,|#&08]:CM|
|00003590| 50 20 74 65 6d 70 2c 76 | 3a 4c 44 52 45 51 20 76 |P temp,v|:LDREQ v|
|000035a0| 6e 2c 5b 65 74 2c 23 26 | 30 43 5d 3a 42 45 51 20 |n,[et,#&|0C]:BEQ |
|000035b0| 64 6f 6e 65 33 0d 15 04 | 40 20 20 4c 44 52 20 74 |done3...|@ LDR t|
|000035c0| 65 6d 70 2c 5b 65 74 2c | 23 26 30 43 5d 3a 43 4d |emp,[et,|#&0C]:CM|
|000035d0| 50 20 74 65 6d 70 2c 76 | 3a 4c 44 52 45 51 20 76 |P temp,v|:LDREQ v|
|000035e0| 6e 2c 5b 65 74 2c 23 26 | 30 38 5d 3a 42 45 51 20 |n,[et,#&|08]:BEQ |
|000035f0| 64 6f 6e 65 33 0d 15 0e | 0c 20 20 2e 65 6c 73 65 |done3...|. .else|
|00003600| 32 0d 15 18 2a 20 20 4c | 44 52 20 65 74 2c 5b 70 |2...* L|DR et,[p|
|00003610| 6e 2c 23 26 32 30 5d 3a | 43 4d 50 20 65 74 2c 65 |n,#&20]:|CMP et,e|
|00003620| 6e 3a 42 45 51 20 65 6c | 73 65 33 0d 15 22 40 20 |n:BEQ el|se3.."@ |
|00003630| 20 4c 44 52 20 74 65 6d | 70 2c 5b 65 74 2c 23 26 | LDR tem|p,[et,#&|
|00003640| 30 38 5d 3a 43 4d 50 20 | 74 65 6d 70 2c 76 3a 4c |08]:CMP |temp,v:L|
|00003650| 44 52 45 51 20 76 6e 2c | 5b 65 74 2c 23 26 30 43 |DREQ vn,|[et,#&0C|
|00003660| 5d 3a 42 45 51 20 64 6f | 6e 65 33 0d 15 2c 40 20 |]:BEQ do|ne3..,@ |
|00003670| 20 4c 44 52 20 74 65 6d | 70 2c 5b 65 74 2c 23 26 | LDR tem|p,[et,#&|
|00003680| 30 43 5d 3a 43 4d 50 20 | 74 65 6d 70 2c 76 3a 4c |0C]:CMP |temp,v:L|
|00003690| 44 52 45 51 20 76 6e 2c | 5b 65 74 2c 23 26 30 38 |DREQ vn,|[et,#&08|
|000036a0| 5d 3a 42 45 51 20 64 6f | 6e 65 33 0d 15 36 0c 20 |]:BEQ do|ne3..6. |
|000036b0| 20 2e 65 6c 73 65 33 0d | 15 40 2a 20 20 4c 44 52 | .else3.|.@* LDR|
|000036c0| 20 65 74 2c 5b 70 6e 2c | 23 26 32 34 5d 3a 43 4d | et,[pn,|#&24]:CM|
|000036d0| 50 20 65 74 2c 65 6e 3a | 42 45 51 20 65 6c 73 65 |P et,en:|BEQ else|
|000036e0| 34 0d 15 4a 40 20 20 4c | 44 52 20 74 65 6d 70 2c |4..J@ L|DR temp,|
|000036f0| 5b 65 74 2c 23 26 30 38 | 5d 3a 43 4d 50 20 74 65 |[et,#&08|]:CMP te|
|00003700| 6d 70 2c 76 3a 4c 44 52 | 45 51 20 76 6e 2c 5b 65 |mp,v:LDR|EQ vn,[e|
|00003710| 74 2c 23 26 30 43 5d 3a | 42 45 51 20 64 6f 6e 65 |t,#&0C]:|BEQ done|
|00003720| 33 0d 15 54 40 20 20 4c | 44 52 20 74 65 6d 70 2c |3..T@ L|DR temp,|
|00003730| 5b 65 74 2c 23 26 30 43 | 5d 3a 43 4d 50 20 74 65 |[et,#&0C|]:CMP te|
|00003740| 6d 70 2c 76 3a 4c 44 52 | 45 51 20 76 6e 2c 5b 65 |mp,v:LDR|EQ vn,[e|
|00003750| 74 2c 23 26 30 38 5d 3a | 42 45 51 20 64 6f 6e 65 |t,#&08]:|BEQ done|
|00003760| 33 0d 15 5e 0c 20 20 2e | 65 6c 73 65 34 0d 15 68 |3..^. .|else4..h|
|00003770| 0c 20 20 2e 64 6f 6e 65 | 33 0d 15 72 0f 20 20 4d |. .done|3..r. M|
|00003780| 4f 56 20 65 6e 2c 65 74 | 0d 15 7c 30 20 20 41 44 |OV en,et|..|0 AD|
|00003790| 44 20 74 65 6d 70 2c 77 | 6f 72 6b 2c 23 26 30 38 |D temp,w|ork,#&08|
|000037a0| 3a 53 54 4d 49 41 20 28 | 77 6f 72 6b 29 21 2c 7b |:STMIA (|work)!,{|
|000037b0| 74 65 6d 70 2c 76 6e 7d | 0d 15 86 3f 20 20 4c 44 |temp,vn}|...? LD|
|000037c0| 52 20 76 6e 2c 5b 65 6e | 2c 23 26 31 30 5d 3a 43 |R vn,[en|,#&10]:C|
|000037d0| 4d 50 20 76 6e 2c 70 6e | 3a 4c 44 52 45 51 20 70 |MP vn,pn|:LDREQ p|
|000037e0| 6e 2c 5b 65 6e 2c 23 26 | 31 34 5d 3a 4d 4f 56 4e |n,[en,#&|14]:MOVN|
|000037f0| 45 20 70 6e 2c 76 6e 0d | 15 90 1d 20 20 43 4d 50 |E pn,vn.|... CMP|
|00003800| 20 70 6e 2c 23 26 30 30 | 3a 42 4e 45 20 72 65 70 | pn,#&00|:BNE rep|
|00003810| 65 61 74 39 0d 15 9a 27 | 20 20 53 54 52 20 73 70 |eat9...'| STR sp|
|00003820| 61 63 2c 5b 77 6f 72 6b | 5d 3a 53 54 52 20 76 2c |ac,[work|]:STR v,|
|00003830| 5b 77 6f 72 6b 2c 23 26 | 30 34 5d 0d 15 a4 0e 2e |[work,#&|04].....|
|00003840| 62 69 67 66 69 6e 69 73 | 68 0d 15 ae 0f 4d 4f 56 |bigfinis|h....MOV|
|00003850| 20 70 63 2c 6c 69 6e 6b | 0d 15 b8 05 3b 0d 15 c2 | pc,link|....;...|
|00003860| 05 5d 0d 15 cc 05 3a 0d | 15 d6 1a f4 20 44 65 70 |.]....:.|.... Dep|
|00003870| 74 68 20 73 6f 72 74 20 | 72 65 67 69 73 74 65 72 |th sort |register|
|00003880| 73 0d 15 e0 2b 70 20 20 | 20 3d 20 30 3a 61 6e 73 |s...+p | = 0:ans|
|00003890| 20 3d 20 31 3a 64 6d 61 | 78 3d 20 32 3a 64 20 20 | = 1:dma|x= 2:d |
|000038a0| 20 3d 20 33 3a 74 65 6d | 70 3d 20 34 0d 15 ea 05 | = 3:tem|p= 4....|
|000038b0| 3a 0d 15 f4 0c 5b 4f 50 | 54 70 61 73 73 0d 15 fe |:....[OP|Tpass...|
|000038c0| 05 3b 0d 16 08 34 3b 52 | 6f 75 74 69 6e 65 20 74 |.;...4;R|outine t|
|000038d0| 6f 20 64 65 70 74 68 20 | 73 6f 72 74 20 70 6f 6c |o depth |sort pol|
|000038e0| 79 67 6f 6e 73 20 70 72 | 69 6f 72 20 74 6f 20 64 |ygons pr|ior to d|
|000038f0| 72 61 77 69 6e 67 0d 16 | 12 20 3b 20 20 20 52 30 |rawing..|. ; R0|
|00003900| 20 3d 20 70 6f 69 6e 74 | 65 72 20 74 6f 20 70 6f | = point|er to po|
|00003910| 6c 79 67 6f 6e 73 0d 16 | 1c 05 3b 0d 16 26 0b 2e |lygons..|..;..&..|
|00003920| 61 6e 73 77 65 72 0d 16 | 30 0a 45 51 55 44 20 30 |answer..|0.EQUD 0|
|00003930| 0d 16 3a 0a 2e 64 65 70 | 74 68 0d 16 44 0a 45 51 |..:..dep|th..D.EQ|
|00003940| 55 44 20 30 0d 16 4e 05 | 3b 0d 16 58 0e 2e 64 65 |UD 0..N.|;..X..de|
|00003950| 70 74 68 73 6f 72 74 0d | 16 62 27 4d 56 4e 20 64 |pthsort.|.b'MVN d|
|00003960| 6d 61 78 2c 23 26 30 30 | 3a 4d 4f 56 20 64 6d 61 |max,#&00|:MOV dma|
|00003970| 78 2c 64 6d 61 78 2c 4c | 53 52 20 23 30 34 0d 16 |x,dmax,L|SR #04..|
|00003980| 6c 0b 2e 72 65 70 65 61 | 74 0d 16 76 24 4c 44 52 |l..repea|t..v$LDR|
|00003990| 20 64 2c 5b 70 2c 23 26 | 31 34 5d 3a 4c 44 52 20 | d,[p,#&|14]:LDR |
|000039a0| 74 65 6d 70 2c 5b 70 2c | 23 26 30 34 5d 0d 16 80 |temp,[p,|#&04]...|
|000039b0| 37 43 4d 50 20 74 65 6d | 70 2c 23 26 30 30 3a 43 |7CMP tem|p,#&00:C|
|000039c0| 4d 50 45 51 20 64 2c 64 | 6d 61 78 3a 4d 4f 56 4d |MPEQ d,d|max:MOVM|
|000039d0| 49 20 64 6d 61 78 2c 64 | 3a 4d 4f 56 4d 49 20 61 |I dmax,d|:MOVMI a|
|000039e0| 6e 73 2c 70 0d 16 8a 23 | 4c 44 52 20 70 2c 5b 70 |ns,p...#|LDR p,[p|
|000039f0| 5d 3a 43 4d 50 20 70 2c | 23 26 30 30 3a 42 4e 45 |]:CMP p,|#&00:BNE|
|00003a00| 20 72 65 70 65 61 74 0d | 16 94 05 3b 0d 16 9e 43 | repeat.|...;...C|
|00003a10| 53 54 52 20 61 6e 73 2c | 61 6e 73 77 65 72 3a 53 |STR ans,|answer:S|
|00003a20| 54 52 20 64 6d 61 78 2c | 64 65 70 74 68 3a 4d 4f |TR dmax,|depth:MO|
|00003a30| 56 20 74 65 6d 70 2c 23 | 26 30 31 3a 53 54 52 20 |V temp,#|&01:STR |
|00003a40| 74 65 6d 70 2c 5b 61 6e | 73 2c 23 26 30 34 5d 0d |temp,[an|s,#&04].|
|00003a50| 16 a8 0f 4d 4f 56 20 70 | 63 2c 6c 69 6e 6b 0d 16 |...MOV p|c,link..|
|00003a60| b2 05 3b 0d 16 bc 05 5d | 0d 16 c6 05 ed 0d 16 d0 |..;....]|........|
|00003a70| 05 e1 0d 16 da 05 3a 0d | 16 e4 32 dc 20 20 20 20 |......:.|..2. |
|00003a80| 31 2c 20 20 20 30 2c 20 | 20 20 30 2c 20 20 20 30 |1, 0, | 0, 0|
|00003a90| 2c 20 63 73 74 2c 2d 73 | 6e 74 2c 20 20 20 30 2c |, cst,-s|nt, 0,|
|00003aa0| 20 73 6e 74 2c 20 63 73 | 74 0d 16 ee 32 dc 20 20 | snt, cs|t...2. |
|00003ab0| 63 73 74 2c 20 20 20 30 | 2c 20 73 6e 74 2c 20 20 |cst, 0|, snt, |
|00003ac0| 20 30 2c 20 20 20 31 2c | 20 20 20 30 2c 2d 73 6e | 0, 1,| 0,-sn|
|00003ad0| 74 2c 20 20 20 30 2c 20 | 63 73 74 0d 16 f8 32 dc |t, 0, |cst...2.|
|00003ae0| 20 20 63 73 74 2c 2d 73 | 6e 74 2c 20 20 20 30 2c | cst,-s|nt, 0,|
|00003af0| 20 73 6e 74 2c 20 63 73 | 74 2c 20 20 20 30 2c 20 | snt, cs|t, 0, |
|00003b00| 20 20 30 2c 20 20 20 30 | 2c 20 20 20 31 0d 17 02 | 0, 0|, 1...|
|00003b10| 32 dc 20 20 20 20 31 2c | 20 20 20 30 2c 20 20 20 |2. 1,| 0, |
|00003b20| 30 2c 20 20 20 30 2c 20 | 63 73 74 2c 20 73 6e 74 |0, 0, |cst, snt|
|00003b30| 2c 20 20 20 30 2c 2d 73 | 6e 74 2c 20 63 73 74 0d |, 0,-s|nt, cst.|
|00003b40| 17 0c 32 dc 20 20 63 73 | 74 2c 20 20 20 30 2c 2d |..2. cs|t, 0,-|
|00003b50| 73 6e 74 2c 20 20 20 30 | 2c 20 20 20 31 2c 20 20 |snt, 0|, 1, |
|00003b60| 20 30 2c 20 73 6e 74 2c | 20 20 20 30 2c 20 63 73 | 0, snt,| 0, cs|
|00003b70| 74 0d 17 16 32 dc 20 20 | 63 73 74 2c 20 73 6e 74 |t...2. |cst, snt|
|00003b80| 2c 20 20 20 30 2c 2d 73 | 6e 74 2c 20 63 73 74 2c |, 0,-s|nt, cst,|
|00003b90| 20 20 20 30 2c 20 20 20 | 30 2c 20 20 20 30 2c 20 | 0, |0, 0, |
|00003ba0| 20 20 31 0d ff | | 1.. | |
+--------+-------------------------+-------------------------+--------+--------+