home *** CD-ROM | disk | FTP | other *** search
view JSON data
|
view as text
|
open on a Mac
|
open on a PC
This file was processed as: SHell self-extracting ARchive
(archive/shar).
You can browse this item here: part03
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| SHell self-extracting ARchive (archive/shar)
| magic
| Supported |
100%
| dexvert
| Internet Message Format (text/imf)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news, ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| dexmagic
| PrintFox/Pagefox WEAK
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/329 Shell Archive Format
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/news
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 50 61 74 68 3a 20 75 75 | 6e 65 74 21 63 73 2e 75 |Path: uu|net!cs.u|
|00000010| 74 65 78 61 73 2e 65 64 | 75 21 73 75 6e 2d 62 61 |texas.ed|u!sun-ba|
|00000020| 72 72 21 63 72 6f 6e 6b | 69 74 65 2e 43 65 6e 74 |rr!cronk|ite.Cent|
|00000030| 72 61 6c 2e 53 75 6e 2e | 43 4f 4d 21 65 78 6f 64 |ral.Sun.|COM!exod|
|00000040| 75 73 21 61 6e 64 72 65 | 77 2e 63 6d 75 2e 65 64 |us!andre|w.cmu.ed|
|00000050| 75 0a 46 72 6f 6d 3a 20 | 64 64 32 69 2b 40 61 6e |u.From: |dd2i+@an|
|00000060| 64 72 65 77 2e 63 6d 75 | 2e 65 64 75 20 28 44 6f |drew.cmu|.edu (Do|
|00000070| 75 67 6c 61 73 20 4d 69 | 63 68 61 65 6c 20 44 65 |uglas Mi|chael De|
|00000080| 43 61 72 6c 6f 29 0a 4e | 65 77 73 67 72 6f 75 70 |Carlo).N|ewsgroup|
|00000090| 73 3a 20 63 6f 6d 70 2e | 73 6f 75 72 63 65 73 2e |s: comp.|sources.|
|000000a0| 78 0a 53 75 62 6a 65 63 | 74 3a 20 76 31 34 69 30 |x.Subjec|t: v14i0|
|000000b0| 32 37 3a 20 78 73 70 72 | 69 6e 67 69 65 73 20 2d |27: xspr|ingies -|
|000000c0| 2d 20 69 74 27 73 20 61 | 20 73 70 72 69 6e 67 20 |- it's a| spring |
|000000d0| 73 69 6d 75 6c 61 74 6f | 72 2e 2e 2e 6e 6f 2c 20 |simulato|r...no, |
|000000e0| 69 74 27 73 20 61 20 67 | 61 6d 65 2c 20 50 61 72 |it's a g|ame, Par|
|000000f0| 74 30 33 2f 30 36 0a 4d | 65 73 73 61 67 65 2d 49 |t03/06.M|essage-I|
|00000100| 44 3a 20 3c 31 39 31 34 | 39 40 65 78 6f 64 75 73 |D: <1914|9@exodus|
|00000110| 2e 45 6e 67 2e 53 75 6e | 2e 43 4f 4d 3e 0a 44 61 |.Eng.Sun|.COM>.Da|
|00000120| 74 65 3a 20 32 38 20 41 | 75 67 20 39 31 20 30 31 |te: 28 A|ug 91 01|
|00000130| 3a 35 30 3a 35 32 20 47 | 4d 54 0a 52 65 66 65 72 |:50:52 G|MT.Refer|
|00000140| 65 6e 63 65 73 3a 20 3c | 63 73 78 2d 31 34 69 30 |ences: <|csx-14i0|
|00000150| 32 35 2d 78 70 73 72 69 | 6e 67 69 65 73 40 75 75 |25-xpsri|ngies@uu|
|00000160| 6e 65 74 2e 55 55 2e 4e | 45 54 3e 0a 53 65 6e 64 |net.UU.N|ET>.Send|
|00000170| 65 72 3a 20 6e 65 77 73 | 40 65 78 6f 64 75 73 2e |er: news|@exodus.|
|00000180| 45 6e 67 2e 53 75 6e 2e | 43 4f 4d 0a 4c 69 6e 65 |Eng.Sun.|COM.Line|
|00000190| 73 3a 20 32 30 32 39 0a | 41 70 70 72 6f 76 65 64 |s: 2029.|Approved|
|000001a0| 3a 20 61 72 67 76 40 73 | 75 6e 2e 63 6f 6d 0a 0a |: argv@s|un.com..|
|000001b0| 53 75 62 6d 69 74 74 65 | 64 2d 62 79 3a 20 44 6f |Submitte|d-by: Do|
|000001c0| 75 67 6c 61 73 20 4d 69 | 63 68 61 65 6c 20 44 65 |uglas Mi|chael De|
|000001d0| 43 61 72 6c 6f 20 3c 64 | 64 32 69 2b 40 61 6e 64 |Carlo <d|d2i+@and|
|000001e0| 72 65 77 2e 63 6d 75 2e | 65 64 75 3e 0a 50 6f 73 |rew.cmu.|edu>.Pos|
|000001f0| 74 69 6e 67 2d 6e 75 6d | 62 65 72 3a 20 56 6f 6c |ting-num|ber: Vol|
|00000200| 75 6d 65 20 31 34 2c 20 | 49 73 73 75 65 20 32 37 |ume 14, |Issue 27|
|00000210| 0a 41 72 63 68 69 76 65 | 2d 6e 61 6d 65 3a 20 78 |.Archive|-name: x|
|00000220| 70 73 72 69 6e 67 69 65 | 73 2f 70 61 72 74 30 33 |psringie|s/part03|
|00000230| 0a 0a 23 21 20 2f 62 69 | 6e 2f 73 68 0a 23 20 54 |..#! /bi|n/sh.# T|
|00000240| 68 69 73 20 69 73 20 61 | 20 73 68 65 6c 6c 20 61 |his is a| shell a|
|00000250| 72 63 68 69 76 65 2e 20 | 20 52 65 6d 6f 76 65 20 |rchive. | Remove |
|00000260| 61 6e 79 74 68 69 6e 67 | 20 62 65 66 6f 72 65 20 |anything| before |
|00000270| 74 68 69 73 20 6c 69 6e | 65 2c 20 74 68 65 6e 20 |this lin|e, then |
|00000280| 75 6e 70 61 63 6b 0a 23 | 20 69 74 20 62 79 20 73 |unpack.#| it by s|
|00000290| 61 76 69 6e 67 20 69 74 | 20 69 6e 74 6f 20 61 20 |aving it| into a |
|000002a0| 66 69 6c 65 20 61 6e 64 | 20 74 79 70 69 6e 67 20 |file and| typing |
|000002b0| 22 73 68 20 66 69 6c 65 | 22 2e 20 20 54 6f 20 6f |"sh file|". To o|
|000002c0| 76 65 72 77 72 69 74 65 | 20 65 78 69 73 74 69 6e |verwrite| existin|
|000002d0| 67 0a 23 20 66 69 6c 65 | 73 2c 20 74 79 70 65 20 |g.# file|s, type |
|000002e0| 22 73 68 20 66 69 6c 65 | 20 2d 63 22 2e 20 20 59 |"sh file| -c". Y|
|000002f0| 6f 75 20 63 61 6e 20 61 | 6c 73 6f 20 66 65 65 64 |ou can a|lso feed|
|00000300| 20 74 68 69 73 20 61 73 | 20 73 74 61 6e 64 61 72 | this as| standar|
|00000310| 64 20 69 6e 70 75 74 20 | 76 69 61 0a 23 20 75 6e |d input |via.# un|
|00000320| 73 68 61 72 2c 20 6f 72 | 20 62 79 20 74 79 70 69 |shar, or| by typi|
|00000330| 6e 67 20 22 73 68 20 3c | 66 69 6c 65 22 2c 20 65 |ng "sh <|file", e|
|00000340| 2e 67 2e 2e 20 20 49 66 | 20 74 68 69 73 20 61 72 |.g.. If| this ar|
|00000350| 63 68 69 76 65 20 69 73 | 20 63 6f 6d 70 6c 65 74 |chive is| complet|
|00000360| 65 2c 20 79 6f 75 0a 23 | 20 77 69 6c 6c 20 73 65 |e, you.#| will se|
|00000370| 65 20 74 68 65 20 66 6f | 6c 6c 6f 77 69 6e 67 20 |e the fo|llowing |
|00000380| 6d 65 73 73 61 67 65 20 | 61 74 20 74 68 65 20 65 |message |at the e|
|00000390| 6e 64 3a 0a 23 09 09 22 | 45 6e 64 20 6f 66 20 61 |nd:.#.."|End of a|
|000003a0| 72 63 68 69 76 65 20 33 | 20 28 6f 66 20 36 29 2e |rchive 3| (of 6).|
|000003b0| 22 0a 23 20 43 6f 6e 74 | 65 6e 74 73 3a 20 20 2e |".# Cont|ents: .|
|000003c0| 2f 6c 69 62 2f 68 61 6d | 6d 65 72 2e 78 73 70 20 |/lib/ham|mer.xsp |
|000003d0| 2e 2f 6f 62 6a 2e 63 20 | 2e 2f 70 68 79 73 2e 63 |./obj.c |./phys.c|
|000003e0| 20 2e 2f 78 73 70 72 69 | 6e 67 69 65 73 2e 6d 61 | ./xspri|ngies.ma|
|000003f0| 6e 0a 23 20 57 72 61 70 | 70 65 64 20 62 79 20 64 |n.# Wrap|ped by d|
|00000400| 64 32 69 40 72 61 6b 65 | 72 2e 61 6e 64 72 65 77 |d2i@rake|r.andrew|
|00000410| 2e 63 6d 75 2e 65 64 75 | 20 6f 6e 20 46 72 69 20 |.cmu.edu| on Fri |
|00000420| 4a 75 6c 20 32 36 20 32 | 32 3a 35 36 3a 30 33 20 |Jul 26 2|2:56:03 |
|00000430| 31 39 39 31 0a 50 41 54 | 48 3d 2f 62 69 6e 3a 2f |1991.PAT|H=/bin:/|
|00000440| 75 73 72 2f 62 69 6e 3a | 2f 75 73 72 2f 75 63 62 |usr/bin:|/usr/ucb|
|00000450| 20 3b 20 65 78 70 6f 72 | 74 20 50 41 54 48 0a 69 | ; expor|t PATH.i|
|00000460| 66 20 74 65 73 74 20 2d | 66 20 2e 2f 6c 69 62 2f |f test -|f ./lib/|
|00000470| 68 61 6d 6d 65 72 2e 78 | 73 70 20 2d 61 20 22 24 |hammer.x|sp -a "$|
|00000480| 7b 31 7d 22 20 21 3d 20 | 22 2d 63 22 20 3b 20 74 |{1}" != |"-c" ; t|
|00000490| 68 65 6e 20 0a 20 20 65 | 63 68 6f 20 73 68 61 72 |hen . e|cho shar|
|000004a0| 3a 20 57 69 6c 6c 20 6e | 6f 74 20 6f 76 65 72 2d |: Will n|ot over-|
|000004b0| 77 72 69 74 65 20 65 78 | 69 73 74 69 6e 67 20 66 |write ex|isting f|
|000004c0| 69 6c 65 20 5c 22 2e 2f | 6c 69 62 2f 68 61 6d 6d |ile \"./|lib/hamm|
|000004d0| 65 72 2e 78 73 70 5c 22 | 0a 65 6c 73 65 0a 65 63 |er.xsp\"|.else.ec|
|000004e0| 68 6f 20 73 68 61 72 3a | 20 45 78 74 72 61 63 74 |ho shar:| Extract|
|000004f0| 69 6e 67 20 5c 22 2e 2f | 6c 69 62 2f 68 61 6d 6d |ing \"./|lib/hamm|
|00000500| 65 72 2e 78 73 70 5c 22 | 20 5c 28 34 32 35 34 20 |er.xsp\"| \(4254 |
|00000510| 63 68 61 72 61 63 74 65 | 72 73 5c 29 0a 73 65 64 |characte|rs\).sed|
|00000520| 20 22 73 2f 5e 58 2f 2f | 22 20 3e 2e 2f 6c 69 62 | "s/^X//|" >./lib|
|00000530| 2f 68 61 6d 6d 65 72 2e | 78 73 70 20 3c 3c 27 45 |/hammer.|xsp <<'E|
|00000540| 4e 44 5f 4f 46 5f 2e 2f | 6c 69 62 2f 68 61 6d 6d |ND_OF_./|lib/hamm|
|00000550| 65 72 2e 78 73 70 27 0a | 58 23 31 2e 30 20 2a 2a |er.xsp'.|X#1.0 **|
|00000560| 2a 20 58 53 70 72 69 6e | 67 69 65 73 20 64 61 74 |* XSprin|gies dat|
|00000570| 61 20 66 69 6c 65 0a 58 | 63 6d 61 73 20 30 2e 34 |a file.X|cmas 0.4|
|00000580| 30 30 30 30 30 0a 58 65 | 6c 61 73 20 30 2e 30 0a |00000.Xe|las 0.0.|
|00000590| 58 6b 73 70 72 20 34 30 | 2e 30 0a 58 6b 64 6d 70 |Xkspr 40|.0.Xkdmp|
|000005a0| 20 30 2e 36 30 30 30 30 | 30 0a 58 66 69 78 6d 20 | 0.60000|0.Xfixm |
|000005b0| 30 0a 58 73 68 77 73 20 | 31 0a 58 63 65 6e 74 20 |0.Xshws |1.Xcent |
|000005c0| 2d 31 0a 58 66 72 63 65 | 20 30 20 30 20 31 30 2e |-1.Xfrce| 0 0 10.|
|000005d0| 30 20 30 2e 30 0a 58 66 | 72 63 65 20 31 20 30 20 |0 0.0.Xf|rce 1 0 |
|000005e0| 35 2e 30 20 32 2e 30 0a | 58 66 72 63 65 20 32 20 |5.0 2.0.|Xfrce 2 |
|000005f0| 30 20 31 30 2e 30 20 30 | 2e 30 0a 58 66 72 63 65 |0 10.0 0|.0.Xfrce|
|00000600| 20 33 20 30 20 31 30 30 | 30 30 2e 30 20 31 2e 30 | 3 0 100|00.0 1.0|
|00000610| 0a 58 76 69 73 63 20 30 | 2e 30 0a 58 73 74 63 6b |.Xvisc 0|.0.Xstck|
|00000620| 20 30 2e 30 0a 58 73 74 | 65 70 20 30 2e 30 38 30 | 0.0.Xst|ep 0.080|
|00000630| 30 30 30 0a 58 70 72 65 | 63 20 31 2e 30 0a 58 61 |000.Xpre|c 1.0.Xa|
|00000640| 64 70 74 20 30 0a 58 67 | 73 6e 70 20 32 30 2e 30 |dpt 0.Xg|snp 20.0|
|00000650| 20 30 0a 58 77 61 6c 6c | 20 30 20 30 20 30 20 31 | 0.Xwall| 0 0 0 1|
|00000660| 0a 58 6d 61 73 73 20 31 | 20 2d 31 33 31 33 33 2e |.Xmass 1| -13133.|
|00000670| 37 32 35 33 32 34 20 2d | 36 34 32 35 2e 33 36 30 |725324 -|6425.360|
|00000680| 32 37 31 20 30 2e 30 20 | 2d 31 31 33 2e 33 33 38 |271 0.0 |-113.338|
|00000690| 31 38 39 20 30 2e 34 30 | 30 30 30 30 20 31 2e 30 |189 0.40|0000 1.0|
|000006a0| 0a 58 6d 61 73 73 20 32 | 20 38 39 38 2e 33 30 33 |.Xmass 2| 898.303|
|000006b0| 33 38 30 20 38 2e 38 38 | 37 36 31 37 20 30 2e 30 |380 8.88|7617 0.0|
|000006c0| 32 34 35 38 30 20 30 2e | 38 33 34 35 30 39 20 31 |24580 0.|834509 1|
|000006d0| 30 2e 35 30 36 36 36 37 | 20 31 2e 30 0a 58 6d 61 |0.506667| 1.0.Xma|
|000006e0| 73 73 20 33 20 39 33 37 | 2e 32 33 39 34 39 35 20 |ss 3 937|.239495 |
|000006f0| 39 2e 35 37 39 32 33 31 | 20 2d 30 2e 30 32 34 35 |9.579231| -0.0245|
|00000700| 38 30 20 2d 30 2e 32 37 | 33 33 36 37 20 31 30 2e |80 -0.27|3367 10.|
|00000710| 35 30 36 36 36 37 20 31 | 2e 30 0a 58 6d 61 73 73 |506667 1|.0.Xmass|
|00000720| 20 34 20 32 30 32 2e 30 | 20 33 35 39 2e 30 20 30 | 4 202.0| 359.0 0|
|00000730| 2e 30 20 30 2e 30 20 2d | 31 2e 30 20 31 2e 30 0a |.0 0.0 -|1.0 1.0.|
|00000740| 58 6d 61 73 73 20 35 20 | 31 38 38 2e 38 38 39 36 |Xmass 5 |188.8896|
|00000750| 34 35 20 33 37 37 2e 31 | 30 39 37 34 33 20 2d 30 |45 377.1|09743 -0|
|00000760| 2e 32 34 38 36 33 38 20 | 2d 30 2e 31 39 38 32 38 |.248638 |-0.19828|
|00000770| 39 20 30 2e 34 30 30 30 | 30 30 20 31 2e 30 0a 58 |9 0.4000|00 1.0.X|
|00000780| 6d 61 73 73 20 36 20 32 | 31 37 2e 32 35 31 36 39 |mass 6 2|17.25169|
|00000790| 35 20 33 33 38 2e 35 34 | 36 36 37 33 20 30 2e 33 |5 338.54|6673 0.3|
|000007a0| 30 34 33 32 35 20 30 2e | 31 39 30 34 31 32 20 30 |04325 0.|190412 0|
|000007b0| 2e 34 30 30 30 30 30 20 | 31 2e 30 0a 58 6d 61 73 |.400000 |1.0.Xmas|
|000007c0| 73 20 37 20 31 35 31 2e | 33 31 33 37 39 36 20 33 |s 7 151.|313796 3|
|000007d0| 32 33 2e 37 39 30 32 37 | 33 20 30 2e 35 37 33 36 |23.79027|3 0.5736|
|000007e0| 35 34 20 2d 30 2e 38 31 | 38 32 35 30 20 30 2e 34 |54 -0.81|8250 0.4|
|000007f0| 30 30 30 30 30 20 31 2e | 30 0a 58 6d 61 73 73 20 |00000 1.|0.Xmass |
|00000800| 38 20 31 35 39 2e 30 20 | 32 30 33 2e 30 20 30 2e |8 159.0 |203.0 0.|
|00000810| 30 20 30 2e 30 20 2d 31 | 2e 30 20 31 2e 30 0a 58 |0 0.0 -1|.0 1.0.X|
|00000820| 6d 61 73 73 20 39 20 31 | 36 36 2e 39 39 33 38 32 |mass 9 1|66.99382|
|00000830| 30 20 31 37 37 2e 38 35 | 38 32 32 34 20 2d 34 2e |0 177.85|8224 -4.|
|00000840| 39 34 33 39 33 32 20 2d | 31 2e 34 33 30 38 38 34 |943932 -|1.430884|
|00000850| 20 30 2e 34 30 30 30 30 | 30 20 31 2e 30 0a 58 6d | 0.40000|0 1.0.Xm|
|00000860| 61 73 73 20 31 30 20 31 | 38 35 2e 38 32 35 38 36 |ass 10 1|85.82586|
|00000870| 32 20 31 38 32 2e 38 39 | 36 35 35 31 20 2d 33 2e |2 182.89|6551 -3.|
|00000880| 39 31 36 34 32 34 20 2d | 35 2e 31 37 31 32 37 31 |916424 -|5.171271|
|00000890| 20 30 2e 34 30 30 30 30 | 30 20 31 2e 30 0a 58 6d | 0.40000|0 1.0.Xm|
|000008a0| 61 73 73 20 31 31 20 31 | 34 36 2e 37 34 34 30 32 |ass 11 1|46.74402|
|000008b0| 39 20 31 37 31 2e 31 31 | 38 35 31 36 20 2d 36 2e |9 171.11|8516 -6.|
|000008c0| 34 33 30 36 31 36 20 32 | 2e 36 34 35 35 30 30 20 |430616 2|.645500 |
|000008d0| 30 2e 34 30 30 30 30 30 | 20 31 2e 30 0a 58 6d 61 |0.400000| 1.0.Xma|
|000008e0| 73 73 20 31 32 20 31 39 | 36 2e 34 38 33 35 36 30 |ss 12 19|6.483560|
|000008f0| 20 38 32 2e 34 36 39 38 | 31 37 20 2d 32 34 2e 34 | 82.4698|17 -24.4|
|00000900| 37 32 30 35 30 20 2d 37 | 2e 33 33 36 35 38 30 20 |72050 -7|.336580 |
|00000910| 31 34 2e 33 32 36 36 36 | 37 20 31 2e 30 0a 58 6d |14.32666|7 1.0.Xm|
|00000920| 61 73 73 20 31 33 20 32 | 36 37 2e 33 36 30 36 35 |ass 13 2|67.36065|
|00000930| 38 20 34 31 31 2e 30 32 | 39 38 39 30 20 2d 30 2e |8 411.02|9890 -0.|
|00000940| 36 34 37 32 34 33 20 30 | 2e 38 30 37 34 30 36 20 |647243 0|.807406 |
|00000950| 30 2e 34 30 30 30 30 30 | 20 31 2e 30 0a 58 6d 61 |0.400000| 1.0.Xma|
|00000960| 73 73 20 31 34 20 32 35 | 30 2e 38 37 34 37 34 35 |ss 14 25|0.874745|
|00000970| 20 37 36 2e 39 33 31 38 | 34 38 20 2d 31 2e 31 38 | 76.9318|48 -1.18|
|00000980| 39 37 39 35 20 30 2e 31 | 37 30 36 38 33 20 30 2e |9795 0.1|70683 0.|
|00000990| 34 30 30 30 30 30 20 31 | 2e 30 0a 58 6d 61 73 73 |400000 1|.0.Xmass|
|000009a0| 20 31 35 20 32 36 39 2e | 32 32 35 33 33 33 20 36 | 15 269.|225333 6|
|000009b0| 36 2e 37 30 31 34 37 36 | 20 2d 30 2e 39 31 33 36 |6.701476| -0.9136|
|000009c0| 38 33 20 30 2e 35 37 32 | 30 32 31 20 30 2e 34 30 |83 0.572|021 0.40|
|000009d0| 30 30 30 30 20 31 2e 30 | 0a 58 6d 61 73 73 20 31 |0000 1.0|.Xmass 1|
|000009e0| 36 20 32 33 36 2e 30 39 | 37 35 31 31 20 35 31 2e |6 236.09|7511 51.|
|000009f0| 38 33 37 33 37 39 20 2d | 30 2e 35 38 31 34 33 36 |837379 -|0.581436|
|00000a00| 20 2d 30 2e 31 31 31 30 | 37 33 20 30 2e 34 30 30 | -0.1110|73 0.400|
|00000a10| 30 30 30 20 31 2e 30 0a | 58 6d 61 73 73 20 31 37 |000 1.0.|Xmass 17|
|00000a20| 20 32 35 34 2e 35 30 32 | 38 30 34 20 34 31 2e 36 | 254.502|804 41.6|
|00000a30| 34 37 38 31 34 20 2d 30 | 2e 32 34 31 35 31 35 20 |47814 -0|.241515 |
|00000a40| 30 2e 33 32 31 30 30 38 | 20 30 2e 34 30 30 30 30 |0.321008| 0.40000|
|00000a50| 30 20 31 2e 30 0a 58 6d | 61 73 73 20 31 38 20 32 |0 1.0.Xm|ass 18 2|
|00000a60| 32 30 2e 37 32 30 36 35 | 30 20 33 31 2e 30 32 38 |20.72065|0 31.028|
|00000a70| 31 32 36 20 30 2e 31 32 | 32 36 32 39 20 2d 30 2e |126 0.12|2629 -0.|
|00000a80| 36 32 36 35 33 36 20 30 | 2e 34 30 30 30 30 30 20 |626536 0|.400000 |
|00000a90| 31 2e 30 0a 58 6d 61 73 | 73 20 31 39 20 32 34 34 |1.0.Xmas|s 19 244|
|00000aa0| 2e 30 35 35 30 35 33 20 | 31 37 2e 35 31 35 30 38 |.055053 |17.51508|
|00000ab0| 30 20 30 2e 34 37 37 30 | 39 37 20 30 2e 30 39 38 |0 0.4770|97 0.098|
|00000ac0| 30 39 39 20 30 2e 34 30 | 30 30 30 30 20 31 2e 30 |099 0.40|0000 1.0|
|00000ad0| 0a 58 6d 61 73 73 20 32 | 30 20 32 38 31 2e 30 32 |.Xmass 2|0 281.02|
|00000ae0| 33 30 31 30 20 38 36 2e | 36 38 33 31 39 34 20 2d |3010 86.|683194 -|
|00000af0| 31 2e 33 36 38 37 34 37 | 20 30 2e 37 36 35 39 33 |1.368747| 0.76593|
|00000b00| 35 20 30 2e 34 30 30 30 | 30 30 20 31 2e 30 0a 58 |5 0.4000|00 1.0.X|
|00000b10| 6d 61 73 73 20 32 31 20 | 32 37 33 2e 34 33 35 38 |mass 21 |273.4358|
|00000b20| 38 39 20 31 31 37 2e 37 | 31 32 38 38 31 20 2d 32 |89 117.7|12881 -2|
|00000b30| 2e 32 37 36 35 39 32 20 | 30 2e 34 33 38 32 37 32 |.276592 |0.438272|
|00000b40| 20 30 2e 34 30 30 30 30 | 30 20 31 2e 30 0a 58 6d | 0.40000|0 1.0.Xm|
|00000b50| 61 73 73 20 32 32 20 32 | 39 32 2e 30 39 30 38 34 |ass 22 2|92.09084|
|00000b60| 31 20 31 30 38 2e 34 30 | 33 32 33 39 20 2d 31 2e |1 108.40|3239 -1.|
|00000b70| 38 34 39 33 32 37 20 31 | 2e 30 36 37 35 33 35 20 |849327 1|.067535 |
|00000b80| 30 2e 34 30 30 30 30 30 | 20 31 2e 30 0a 58 6d 61 |0.400000| 1.0.Xma|
|00000b90| 73 73 20 32 33 20 32 35 | 39 2e 36 36 31 30 38 33 |ss 23 25|9.661083|
|00000ba0| 20 31 33 30 2e 34 34 35 | 37 31 33 20 2d 32 2e 39 | 130.445|713 -2.9|
|00000bb0| 39 30 34 35 38 20 2d 30 | 2e 34 31 38 30 30 33 20 |90458 -0|.418003 |
|00000bc0| 30 2e 34 30 30 30 30 30 | 20 31 2e 30 0a 58 6d 61 |0.400000| 1.0.Xma|
|00000bd0| 73 73 20 32 34 20 32 37 | 39 2e 32 32 36 32 34 34 |ss 24 27|9.226244|
|00000be0| 20 31 33 31 2e 36 36 37 | 34 31 37 20 2d 32 2e 39 | 131.667|417 -2.9|
|00000bf0| 39 36 31 34 37 20 30 2e | 35 38 33 31 37 34 20 30 |96147 0.|583174 0|
|00000c00| 2e 34 30 30 30 30 30 20 | 31 2e 30 0a 58 6d 61 73 |.400000 |1.0.Xmas|
|00000c10| 73 20 32 35 20 32 39 38 | 2e 38 31 35 32 37 35 20 |s 25 298|.815275 |
|00000c20| 31 32 31 2e 38 30 34 31 | 31 34 20 2d 32 2e 35 39 |121.8041|14 -2.59|
|00000c30| 37 37 31 31 20 31 2e 34 | 39 39 34 35 35 20 30 2e |7711 1.4|99455 0.|
|00000c40| 34 30 30 30 30 30 20 30 | 2e 30 0a 58 6d 61 73 73 |400000 0|.0.Xmass|
|00000c50| 20 32 36 20 33 30 38 2e | 30 34 31 33 32 35 20 39 | 26 308.|041325 9|
|00000c60| 33 2e 30 31 31 32 31 39 | 20 2d 30 2e 32 36 30 34 |3.011219| -0.2604|
|00000c70| 33 32 20 32 2e 33 31 30 | 38 35 30 20 30 2e 34 30 |32 2.310|850 0.40|
|00000c80| 30 30 30 30 20 30 2e 30 | 0a 58 6d 61 73 73 20 32 |0000 0.0|.Xmass 2|
|00000c90| 37 20 33 32 30 2e 39 34 | 35 38 35 34 20 31 31 37 |7 320.94|5854 117|
|00000ca0| 2e 39 36 32 32 38 37 20 | 2d 32 2e 34 33 33 39 34 |.962287 |-2.43394|
|00000cb0| 31 20 33 2e 34 34 39 33 | 32 33 20 30 2e 34 30 30 |1 3.4493|23 0.400|
|00000cc0| 30 30 30 20 30 2e 30 0a | 58 6d 61 73 73 20 32 38 |000 0.0.|Xmass 28|
|00000cd0| 20 32 33 36 2e 30 20 33 | 35 2e 30 20 30 2e 30 20 | 236.0 3|5.0 0.0 |
|00000ce0| 30 2e 30 20 2d 31 2e 30 | 20 31 2e 30 0a 58 6d 61 |0.0 -1.0| 1.0.Xma|
|00000cf0| 73 73 20 32 39 20 33 30 | 31 2e 30 36 32 32 37 30 |ss 29 30|1.062270|
|00000d00| 20 39 36 2e 30 30 30 38 | 31 36 20 2d 30 2e 35 37 | 96.0008|16 -0.57|
|00000d10| 37 32 32 30 20 31 2e 37 | 35 30 39 36 32 20 30 2e |7220 1.7|50962 0.|
|00000d20| 34 30 30 30 30 30 20 30 | 2e 30 0a 58 6d 61 73 73 |400000 0|.0.Xmass|
|00000d30| 20 33 30 20 33 31 33 2e | 39 34 39 38 30 35 20 31 | 30 313.|949805 1|
|00000d40| 32 30 2e 38 38 38 38 32 | 36 20 2d 32 2e 36 37 32 |20.88882|6 -2.672|
|00000d50| 33 39 36 20 32 2e 37 39 | 34 33 39 38 20 30 2e 34 |396 2.79|4398 0.4|
|00000d60| 30 30 30 30 30 20 30 2e | 30 0a 58 6d 61 73 73 20 |00000 0.|0.Xmass |
|00000d70| 33 31 20 32 36 32 2e 30 | 30 32 31 38 31 20 39 38 |31 262.0|02181 98|
|00000d80| 2e 33 30 36 35 38 38 20 | 2d 31 2e 36 37 37 33 30 |.306588 |-1.67730|
|00000d90| 35 20 30 2e 33 31 33 30 | 38 38 20 30 2e 34 30 30 |5 0.3130|88 0.400|
|00000da0| 30 30 30 20 31 2e 30 0a | 58 73 70 6e 67 20 31 20 |000 1.0.|Xspng 1 |
|00000db0| 32 20 33 20 31 30 2e 30 | 20 30 2e 36 30 30 30 30 |2 3 10.0| 0.60000|
|00000dc0| 30 20 33 39 2e 30 0a 58 | 73 70 6e 67 20 32 20 35 |0 39.0.X|spng 2 5|
|00000dd0| 20 34 20 35 35 2e 30 20 | 30 2e 36 30 30 30 30 30 | 4 55.0 |0.600000|
|00000de0| 20 32 32 2e 30 0a 58 73 | 70 6e 67 20 33 20 34 20 | 22.0.Xs|png 3 4 |
|00000df0| 36 20 35 35 2e 30 20 30 | 2e 36 30 30 30 30 30 20 |6 55.0 0|.600000 |
|00000e00| 32 36 2e 30 0a 58 73 70 | 6e 67 20 34 20 38 20 31 |26.0.Xsp|ng 4 8 1|
|00000e10| 30 20 35 35 2e 30 20 30 | 2e 36 30 30 30 30 30 20 |0 55.0 0|.600000 |
|00000e20| 33 32 2e 38 30 32 34 33 | 39 0a 58 73 70 6e 67 20 |32.80243|9.Xspng |
|00000e30| 35 20 31 30 20 39 20 35 | 35 2e 30 20 30 2e 36 30 |5 10 9 5|5.0 0.60|
|00000e40| 30 30 30 30 20 32 30 2e | 30 32 34 39 38 34 0a 58 |0000 20.|024984.X|
|00000e50| 73 70 6e 67 20 36 20 39 | 20 31 31 20 35 35 2e 30 |spng 6 9| 11 55.0|
|00000e60| 20 30 2e 36 30 30 30 30 | 30 20 32 32 2e 30 0a 58 | 0.60000|0 22.0.X|
|00000e70| 73 70 6e 67 20 37 20 31 | 31 20 38 20 35 35 2e 30 |spng 7 1|1 8 55.0|
|00000e80| 20 30 2e 36 30 30 30 30 | 30 20 33 33 2e 33 30 31 | 0.60000|0 33.301|
|00000e90| 36 35 32 0a 58 73 70 6e | 67 20 38 20 38 20 39 20 |652.Xspn|g 8 8 9 |
|00000ea0| 35 35 2e 30 20 30 2e 36 | 30 30 30 30 30 20 32 35 |55.0 0.6|00000 25|
|00000eb0| 2e 30 0a 58 73 70 6e 67 | 20 39 20 31 31 20 31 32 |.0.Xspng| 9 11 12|
|00000ec0| 20 35 35 2e 30 20 30 2e | 36 30 30 30 30 30 20 31 | 55.0 0.|600000 1|
|00000ed0| 30 31 2e 30 0a 58 73 70 | 6e 67 20 31 30 20 31 30 |01.0.Xsp|ng 10 10|
|00000ee0| 20 31 32 20 35 35 2e 30 | 20 30 2e 36 30 30 30 30 | 12 55.0| 0.60000|
|00000ef0| 30 20 31 30 30 2e 34 33 | 39 30 33 36 0a 58 73 70 |0 100.43|9036.Xsp|
|00000f00| 6e 67 20 31 31 20 31 32 | 20 39 20 35 35 2e 30 20 |ng 11 12| 9 55.0 |
|00000f10| 30 2e 36 30 30 30 30 30 | 20 39 39 2e 30 32 30 32 |0.600000| 99.0202|
|00000f20| 30 30 0a 58 73 70 6e 67 | 20 31 32 20 37 20 39 20 |00.Xspng| 12 7 9 |
|00000f30| 35 35 2e 30 20 30 2e 36 | 30 30 30 30 30 20 31 34 |55.0 0.6|00000 14|
|00000f40| 37 2e 33 35 37 33 33 30 | 0a 58 73 70 6e 67 20 31 |7.357330|.Xspng 1|
|00000f50| 33 20 37 20 35 20 35 35 | 2e 30 20 30 2e 36 30 30 |3 7 5 55|.0 0.600|
|00000f60| 30 30 30 20 36 35 2e 39 | 31 32 37 34 37 0a 58 73 |000 65.9|12747.Xs|
|00000f70| 70 6e 67 20 31 34 20 34 | 20 37 20 35 35 2e 30 20 |png 14 4| 7 55.0 |
|00000f80| 30 2e 36 30 30 30 30 30 | 20 36 31 2e 39 38 37 32 |0.600000| 61.9872|
|00000f90| 33 30 0a 58 73 70 6e 67 | 20 31 35 20 37 20 36 20 |30.Xspng| 15 7 6 |
|00000fa0| 35 35 2e 30 20 30 2e 36 | 30 30 30 30 30 20 36 36 |55.0 0.6|00000 66|
|00000fb0| 2e 38 38 30 38 37 35 0a | 58 73 70 6e 67 20 31 36 |.880875.|Xspng 16|
|00000fc0| 20 36 20 31 33 20 35 35 | 2e 30 20 30 2e 36 30 30 | 6 13 55|.0 0.600|
|00000fd0| 30 30 30 20 38 37 2e 34 | 35 36 34 31 39 0a 58 73 |000 87.4|56419.Xs|
|00000fe0| 70 6e 67 20 31 37 20 34 | 20 31 33 20 35 35 2e 30 |png 17 4| 13 55.0|
|00000ff0| 20 30 2e 36 30 30 30 30 | 30 20 38 33 2e 32 39 34 | 0.60000|0 83.294|
|00001000| 36 35 38 0a 58 73 70 6e | 67 20 31 38 20 35 20 31 |658.Xspn|g 18 5 1|
|00001010| 33 20 35 35 2e 30 20 30 | 2e 36 30 30 30 30 30 20 |3 55.0 0|.600000 |
|00001020| 38 36 2e 31 34 30 37 37 | 33 0a 58 73 70 6e 67 20 |86.14077|3.Xspng |
|00001030| 31 39 20 31 38 20 31 39 | 20 34 30 2e 30 20 30 2e |19 18 19| 40.0 0.|
|00001040| 36 30 30 30 30 30 20 32 | 37 2e 30 38 31 31 30 34 |600000 2|7.081104|
|00001050| 0a 58 73 70 6e 67 20 32 | 30 20 31 39 20 32 38 20 |.Xspng 2|0 19 28 |
|00001060| 34 30 2e 30 20 30 2e 36 | 30 30 30 30 30 20 31 39 |40.0 0.6|00000 19|
|00001070| 2e 30 36 37 36 34 36 0a | 58 73 70 6e 67 20 32 31 |.067646.|Xspng 21|
|00001080| 20 32 38 20 31 37 20 34 | 30 2e 30 20 30 2e 36 30 | 28 17 4|0.0 0.60|
|00001090| 30 30 30 30 20 31 39 2e | 39 34 35 34 39 31 0a 58 |0000 19.|945491.X|
|000010a0| 73 70 6e 67 20 32 32 20 | 31 37 20 31 36 20 34 30 |spng 22 |17 16 40|
|000010b0| 2e 30 20 30 2e 36 30 30 | 30 30 30 20 32 30 2e 38 |.0 0.600|000 20.8|
|000010c0| 33 31 38 33 37 0a 58 73 | 70 6e 67 20 32 33 20 31 |31837.Xs|png 23 1|
|000010d0| 36 20 31 38 20 34 30 2e | 30 20 30 2e 36 30 30 30 |6 18 40.|0 0.6000|
|000010e0| 30 30 20 32 35 2e 39 35 | 35 32 38 39 0a 58 73 70 |00 25.95|5289.Xsp|
|000010f0| 6e 67 20 32 34 20 31 38 | 20 32 38 20 34 30 2e 30 |ng 24 18| 28 40.0|
|00001100| 20 30 2e 36 30 30 30 30 | 30 20 31 35 2e 36 33 39 | 0.60000|0 15.639|
|00001110| 39 30 32 0a 58 73 70 6e | 67 20 32 35 20 32 38 20 |902.Xspn|g 25 28 |
|00001120| 31 36 20 34 30 2e 30 20 | 30 2e 36 30 30 30 30 30 |16 40.0 |0.600000|
|00001130| 20 31 37 2e 31 30 36 34 | 38 32 0a 58 73 70 6e 67 | 17.1064|82.Xspng|
|00001140| 20 32 36 20 31 39 20 31 | 37 20 34 30 2e 30 20 30 | 26 19 1|7 40.0 0|
|00001150| 2e 36 30 30 30 30 30 20 | 32 36 2e 34 31 31 38 30 |.600000 |26.41180|
|00001160| 36 0a 58 73 70 6e 67 20 | 32 37 20 31 36 20 31 34 |6.Xspng |27 16 14|
|00001170| 20 34 30 2e 30 20 30 2e | 36 30 30 30 30 30 20 32 | 40.0 0.|600000 2|
|00001180| 39 2e 33 33 30 32 36 38 | 0a 58 73 70 6e 67 20 32 |9.330268|.Xspng 2|
|00001190| 38 20 31 34 20 31 35 20 | 34 30 2e 30 20 30 2e 36 |8 14 15 |40.0 0.6|
|000011a0| 30 30 30 30 30 20 32 30 | 2e 39 30 33 34 39 38 0a |00000 20|.903498.|
|000011b0| 58 73 70 6e 67 20 32 39 | 20 31 35 20 31 36 20 34 |Xspng 29| 15 16 4|
|000011c0| 30 2e 30 20 30 2e 36 30 | 30 30 30 30 20 33 36 2e |0.0 0.60|0000 36.|
|000011d0| 34 32 34 35 30 30 0a 58 | 73 70 6e 67 20 33 30 20 |424500.X|spng 30 |
|000011e0| 31 35 20 31 37 20 34 30 | 2e 30 20 30 2e 36 30 30 |15 17 40|.0 0.600|
|000011f0| 30 30 30 20 32 39 2e 33 | 32 30 32 31 32 0a 58 73 |000 29.3|20212.Xs|
|00001200| 70 6e 67 20 33 31 20 31 | 37 20 31 34 20 34 30 2e |png 31 1|7 14 40.|
|00001210| 30 20 30 2e 36 30 30 30 | 30 30 20 33 35 2e 35 35 |0 0.6000|00 35.55|
|00001220| 34 33 34 37 0a 58 73 70 | 6e 67 20 33 32 20 31 35 |4347.Xsp|ng 32 15|
|00001230| 20 33 31 20 34 30 2e 30 | 20 30 2e 36 30 30 30 30 | 31 40.0| 0.60000|
|00001240| 30 20 33 32 2e 35 32 35 | 30 36 31 0a 58 73 70 6e |0 32.525|061.Xspn|
|00001250| 67 20 33 33 20 33 31 20 | 32 30 20 34 30 2e 30 20 |g 33 31 |20 40.0 |
|00001260| 30 2e 36 30 30 30 30 30 | 20 32 32 2e 30 38 31 36 |0.600000| 22.0816|
|00001270| 39 37 0a 58 73 70 6e 67 | 20 33 34 20 32 30 20 31 |97.Xspng| 34 20 1|
|00001280| 34 20 34 30 2e 30 20 30 | 2e 36 30 30 30 30 30 20 |4 40.0 0|.600000 |
|00001290| 33 31 2e 37 33 39 38 39 | 31 0a 58 73 70 6e 67 20 |31.73989|1.Xspng |
|000012a0| 33 35 20 31 35 20 32 30 | 20 34 30 2e 30 20 30 2e |35 15 20| 40.0 0.|
|000012b0| 36 30 30 30 30 30 20 32 | 33 2e 34 37 36 32 33 30 |600000 2|3.476230|
|000012c0| 0a 58 73 70 6e 67 20 33 | 36 20 31 34 20 33 31 20 |.Xspng 3|6 14 31 |
|000012d0| 34 30 2e 30 20 30 2e 36 | 30 30 30 30 30 20 32 34 |40.0 0.6|00000 24|
|000012e0| 2e 33 32 34 32 36 30 0a | 58 73 70 6e 67 20 33 37 |.324260.|Xspng 37|
|000012f0| 20 33 31 20 32 31 20 34 | 30 2e 30 20 30 2e 36 30 | 31 21 4|0.0 0.60|
|00001300| 30 30 30 30 20 32 32 2e | 37 30 39 32 35 32 0a 58 |0000 22.|709252.X|
|00001310| 73 70 6e 67 20 33 38 20 | 32 31 20 32 32 20 34 30 |spng 38 |21 22 40|
|00001320| 2e 30 20 30 2e 36 30 30 | 30 30 30 20 32 30 2e 38 |.0 0.600|000 20.8|
|00001330| 39 34 34 39 38 0a 58 73 | 70 6e 67 20 33 39 20 32 |94498.Xs|png 39 2|
|00001340| 32 20 33 31 20 34 30 2e | 30 20 30 2e 36 30 30 30 |2 31 40.|0 0.6000|
|00001350| 30 30 20 33 31 2e 38 37 | 38 30 34 37 0a 58 73 70 |00 31.87|8047.Xsp|
|00001360| 6e 67 20 34 30 20 32 30 | 20 32 32 20 34 30 2e 30 |ng 40 20| 22 40.0|
|00001370| 20 30 2e 36 30 30 30 30 | 30 20 32 34 2e 32 39 39 | 0.60000|0 24.299|
|00001380| 37 32 36 0a 58 73 70 6e | 67 20 34 31 20 32 31 20 |726.Xspn|g 41 21 |
|00001390| 32 30 20 34 30 2e 30 20 | 30 2e 36 30 30 30 30 30 |20 40.0 |0.600000|
|000013a0| 20 33 31 2e 37 38 33 37 | 31 33 0a 58 73 70 6e 67 | 31.7837|13.Xspng|
|000013b0| 20 34 32 20 32 33 20 32 | 31 20 34 30 2e 30 20 30 | 42 23 2|1 40.0 0|
|000013c0| 2e 36 30 30 30 30 30 20 | 31 38 2e 37 35 32 34 31 |.600000 |18.75241|
|000013d0| 33 0a 58 73 70 6e 67 20 | 34 33 20 32 31 20 32 34 |3.Xspng |43 21 24|
|000013e0| 20 34 30 2e 30 20 30 2e | 36 30 30 30 30 30 20 31 | 40.0 0.|600000 1|
|000013f0| 35 2e 31 33 37 38 30 38 | 0a 58 73 70 6e 67 20 34 |5.137808|.Xspng 4|
|00001400| 34 20 32 34 20 32 33 20 | 34 30 2e 30 20 30 2e 36 |4 24 23 |40.0 0.6|
|00001410| 30 30 30 30 30 20 31 39 | 2e 35 37 38 38 37 30 0a |00000 19|.578870.|
|00001420| 58 73 70 6e 67 20 34 35 | 20 32 34 20 32 35 20 34 |Xspng 45| 24 25 4|
|00001430| 30 2e 30 20 30 2e 36 30 | 30 30 30 30 20 32 31 2e |0.0 0.60|0000 21.|
|00001440| 38 39 38 31 35 38 0a 58 | 73 70 6e 67 20 34 36 20 |898158.X|spng 46 |
|00001450| 32 35 20 32 31 20 34 30 | 2e 30 20 30 2e 36 30 30 |25 21 40|.0 0.600|
|00001460| 30 30 30 20 32 35 2e 37 | 35 37 30 32 37 0a 58 73 |000 25.7|57027.Xs|
|00001470| 70 6e 67 20 34 37 20 32 | 32 20 32 34 20 34 30 2e |png 47 2|2 24 40.|
|00001480| 30 20 30 2e 36 30 30 30 | 30 30 20 32 36 2e 35 36 |0 0.6000|00 26.56|
|00001490| 35 37 37 38 0a 58 73 70 | 6e 67 20 34 38 20 32 32 |5778.Xsp|ng 48 22|
|000014a0| 20 32 39 20 34 30 2e 30 | 20 30 2e 36 30 30 30 30 | 29 40.0| 0.60000|
|000014b0| 30 20 31 35 2e 33 38 32 | 31 38 36 0a 58 73 70 6e |0 15.382|186.Xspn|
|000014c0| 67 20 34 39 20 32 39 20 | 33 30 20 34 30 2e 30 20 |g 49 29 |30 40.0 |
|000014d0| 30 2e 36 30 30 30 30 30 | 20 32 38 2e 30 0a 58 73 |0.600000| 28.0.Xs|
|000014e0| 70 6e 67 20 35 30 20 33 | 30 20 32 35 20 34 30 2e |png 50 3|0 25 40.|
|000014f0| 30 20 30 2e 36 30 30 30 | 30 30 20 31 35 2e 31 36 |0 0.6000|00 15.16|
|00001500| 30 34 39 33 0a 58 73 70 | 6e 67 20 35 31 20 32 32 |0493.Xsp|ng 51 22|
|00001510| 20 33 30 20 34 30 2e 30 | 20 30 2e 36 30 30 30 30 | 30 40.0| 0.60000|
|00001520| 30 20 32 35 2e 32 33 38 | 34 37 35 0a 58 73 70 6e |0 25.238|475.Xspn|
|00001530| 67 20 35 32 20 32 35 20 | 32 39 20 34 30 2e 30 20 |g 52 25 |29 40.0 |
|00001540| 30 2e 36 30 30 30 30 30 | 20 32 35 2e 38 37 31 30 |0.600000| 25.8710|
|00001550| 35 37 0a 58 73 70 6e 67 | 20 35 33 20 32 32 20 32 |57.Xspng| 53 22 2|
|00001560| 35 20 34 30 2e 30 20 30 | 2e 36 30 30 30 30 30 20 |5 40.0 0|.600000 |
|00001570| 31 34 2e 39 39 37 33 37 | 36 0a 58 73 70 6e 67 20 |14.99737|6.Xspng |
|00001580| 35 34 20 32 39 20 32 36 | 20 34 30 2e 30 20 30 2e |54 29 26| 40.0 0.|
|00001590| 36 30 30 30 30 30 20 37 | 2e 36 31 38 36 35 36 0a |600000 7|.618656.|
|000015a0| 58 73 70 6e 67 20 35 35 | 20 32 36 20 32 37 20 34 |Xspng 55| 26 27 4|
|000015b0| 30 2e 30 20 30 2e 36 30 | 30 30 30 30 20 32 38 2e |0.0 0.60|0000 28.|
|000015c0| 30 39 34 37 39 30 0a 58 | 73 70 6e 67 20 35 36 20 |094790.X|spng 56 |
|000015d0| 33 30 20 32 36 20 34 30 | 2e 30 20 30 2e 36 30 30 |30 26 40|.0 0.600|
|000015e0| 30 30 30 20 32 38 2e 34 | 38 30 39 35 38 0a 58 73 |000 28.4|80958.Xs|
|000015f0| 70 6e 67 20 35 37 20 33 | 30 20 32 37 20 34 30 2e |png 57 3|0 27 40.|
|00001600| 30 20 30 2e 36 30 30 30 | 30 30 20 37 2e 36 30 31 |0 0.6000|00 7.601|
|00001610| 30 38 35 0a 58 73 70 6e | 67 20 35 38 20 32 37 20 |085.Xspn|g 58 27 |
|00001620| 32 39 20 34 30 2e 30 20 | 30 2e 36 30 30 30 30 30 |29 40.0 |0.600000|
|00001630| 20 32 39 2e 36 33 30 34 | 34 31 0a 58 73 70 6e 67 | 29.6304|41.Xspng|
|00001640| 20 35 39 20 31 33 20 32 | 30 20 34 30 2e 30 20 30 | 59 13 2|0 40.0 0|
|00001650| 2e 36 30 30 30 30 30 20 | 33 32 35 2e 32 32 37 38 |.600000 |325.2278|
|00001660| 35 39 0a 45 4e 44 5f 4f | 46 5f 2e 2f 6c 69 62 2f |59.END_O|F_./lib/|
|00001670| 68 61 6d 6d 65 72 2e 78 | 73 70 0a 69 66 20 74 65 |hammer.x|sp.if te|
|00001680| 73 74 20 34 32 35 34 20 | 2d 6e 65 20 60 77 63 20 |st 4254 |-ne `wc |
|00001690| 2d 63 20 3c 2e 2f 6c 69 | 62 2f 68 61 6d 6d 65 72 |-c <./li|b/hammer|
|000016a0| 2e 78 73 70 60 3b 20 74 | 68 65 6e 0a 20 20 20 20 |.xsp`; t|hen. |
|000016b0| 65 63 68 6f 20 73 68 61 | 72 3a 20 5c 22 2e 2f 6c |echo sha|r: \"./l|
|000016c0| 69 62 2f 68 61 6d 6d 65 | 72 2e 78 73 70 5c 22 20 |ib/hamme|r.xsp\" |
|000016d0| 75 6e 70 61 63 6b 65 64 | 20 77 69 74 68 20 77 72 |unpacked| with wr|
|000016e0| 6f 6e 67 20 73 69 7a 65 | 21 0a 66 69 0a 23 20 65 |ong size|!.fi.# e|
|000016f0| 6e 64 20 6f 66 20 6f 76 | 65 72 77 72 69 74 69 6e |nd of ov|erwritin|
|00001700| 67 20 63 68 65 63 6b 0a | 66 69 0a 69 66 20 74 65 |g check.|fi.if te|
|00001710| 73 74 20 2d 66 20 2e 2f | 6f 62 6a 2e 63 20 2d 61 |st -f ./|obj.c -a|
|00001720| 20 22 24 7b 31 7d 22 20 | 21 3d 20 22 2d 63 22 20 | "${1}" |!= "-c" |
|00001730| 3b 20 74 68 65 6e 20 0a | 20 20 65 63 68 6f 20 73 |; then .| echo s|
|00001740| 68 61 72 3a 20 57 69 6c | 6c 20 6e 6f 74 20 6f 76 |har: Wil|l not ov|
|00001750| 65 72 2d 77 72 69 74 65 | 20 65 78 69 73 74 69 6e |er-write| existin|
|00001760| 67 20 66 69 6c 65 20 5c | 22 2e 2f 6f 62 6a 2e 63 |g file \|"./obj.c|
|00001770| 5c 22 0a 65 6c 73 65 0a | 65 63 68 6f 20 73 68 61 |\".else.|echo sha|
|00001780| 72 3a 20 45 78 74 72 61 | 63 74 69 6e 67 20 5c 22 |r: Extra|cting \"|
|00001790| 2e 2f 6f 62 6a 2e 63 5c | 22 20 5c 28 31 35 31 36 |./obj.c\|" \(1516|
|000017a0| 35 20 63 68 61 72 61 63 | 74 65 72 73 5c 29 0a 73 |5 charac|ters\).s|
|000017b0| 65 64 20 22 73 2f 5e 58 | 2f 2f 22 20 3e 2e 2f 6f |ed "s/^X|//" >./o|
|000017c0| 62 6a 2e 63 20 3c 3c 27 | 45 4e 44 5f 4f 46 5f 2e |bj.c <<'|END_OF_.|
|000017d0| 2f 6f 62 6a 2e 63 27 0a | 58 2f 2a 20 6f 62 6a 2e |/obj.c'.|X/* obj.|
|000017e0| 63 20 2d 2d 20 78 73 70 | 72 69 6e 67 69 65 73 20 |c -- xsp|ringies |
|000017f0| 6f 62 6a 65 63 74 20 28 | 6d 61 73 73 65 73 2c 20 |object (|masses, |
|00001800| 73 70 72 69 6e 67 73 29 | 20 68 61 6e 64 6c 69 6e |springs)| handlin|
|00001810| 67 0a 58 20 2a 20 43 6f | 70 79 72 69 67 68 74 20 |g.X * Co|pyright |
|00001820| 28 43 29 20 31 39 39 31 | 20 20 44 6f 75 67 6c 61 |(C) 1991| Dougla|
|00001830| 73 20 4d 2e 20 44 65 43 | 61 72 6c 6f 0a 58 20 2a |s M. DeC|arlo.X *|
|00001840| 0a 58 20 2a 20 54 68 69 | 73 20 66 69 6c 65 20 69 |.X * Thi|s file i|
|00001850| 73 20 70 61 72 74 20 6f | 66 20 58 53 70 72 69 6e |s part o|f XSprin|
|00001860| 67 69 65 73 2c 20 61 20 | 6d 61 73 73 20 61 6e 64 |gies, a |mass and|
|00001870| 20 73 70 72 69 6e 67 20 | 73 69 6d 75 6c 61 74 69 | spring |simulati|
|00001880| 6f 6e 20 73 79 73 74 65 | 6d 20 66 6f 72 20 58 0a |on syste|m for X.|
|00001890| 58 20 2a 0a 58 20 2a 20 | 58 53 70 72 69 6e 67 69 |X *.X * |XSpringi|
|000018a0| 65 73 20 69 73 20 66 72 | 65 65 20 73 6f 66 74 77 |es is fr|ee softw|
|000018b0| 61 72 65 3b 20 79 6f 75 | 20 63 61 6e 20 72 65 64 |are; you| can red|
|000018c0| 69 73 74 72 69 62 75 74 | 65 20 69 74 20 61 6e 64 |istribut|e it and|
|000018d0| 2f 6f 72 20 6d 6f 64 69 | 66 79 0a 58 20 2a 20 69 |/or modi|fy.X * i|
|000018e0| 74 20 75 6e 64 65 72 20 | 74 68 65 20 74 65 72 6d |t under |the term|
|000018f0| 73 20 6f 66 20 74 68 65 | 20 47 4e 55 20 47 65 6e |s of the| GNU Gen|
|00001900| 65 72 61 6c 20 50 75 62 | 6c 69 63 20 4c 69 63 65 |eral Pub|lic Lice|
|00001910| 6e 73 65 20 61 73 20 70 | 75 62 6c 69 73 68 65 64 |nse as p|ublished|
|00001920| 20 62 79 0a 58 20 2a 20 | 74 68 65 20 46 72 65 65 | by.X * |the Free|
|00001930| 20 53 6f 66 74 77 61 72 | 65 20 46 6f 75 6e 64 61 | Softwar|e Founda|
|00001940| 74 69 6f 6e 3b 20 65 69 | 74 68 65 72 20 76 65 72 |tion; ei|ther ver|
|00001950| 73 69 6f 6e 20 31 2c 20 | 6f 72 20 28 61 74 20 79 |sion 1, |or (at y|
|00001960| 6f 75 72 20 6f 70 74 69 | 6f 6e 29 0a 58 20 2a 20 |our opti|on).X * |
|00001970| 61 6e 79 20 6c 61 74 65 | 72 20 76 65 72 73 69 6f |any late|r versio|
|00001980| 6e 2e 0a 58 20 2a 0a 58 | 20 2a 20 58 53 70 72 69 |n..X *.X| * XSpri|
|00001990| 6e 67 69 65 73 20 69 73 | 20 64 69 73 74 72 69 62 |ngies is| distrib|
|000019a0| 75 74 65 64 20 69 6e 20 | 74 68 65 20 68 6f 70 65 |uted in |the hope|
|000019b0| 20 74 68 61 74 20 69 74 | 20 77 69 6c 6c 20 62 65 | that it| will be|
|000019c0| 20 75 73 65 66 75 6c 2c | 0a 58 20 2a 20 62 75 74 | useful,|.X * but|
|000019d0| 20 57 49 54 48 4f 55 54 | 20 41 4e 59 20 57 41 52 | WITHOUT| ANY WAR|
|000019e0| 52 41 4e 54 59 3b 20 77 | 69 74 68 6f 75 74 20 65 |RANTY; w|ithout e|
|000019f0| 76 65 6e 20 74 68 65 20 | 69 6d 70 6c 69 65 64 20 |ven the |implied |
|00001a00| 77 61 72 72 61 6e 74 79 | 20 6f 66 0a 58 20 2a 20 |warranty| of.X * |
|00001a10| 4d 45 52 43 48 41 4e 54 | 41 42 49 4c 49 54 59 20 |MERCHANT|ABILITY |
|00001a20| 6f 72 20 46 49 54 4e 45 | 53 53 20 46 4f 52 20 41 |or FITNE|SS FOR A|
|00001a30| 20 50 41 52 54 49 43 55 | 4c 41 52 20 50 55 52 50 | PARTICU|LAR PURP|
|00001a40| 4f 53 45 2e 20 20 53 65 | 65 20 74 68 65 0a 58 20 |OSE. Se|e the.X |
|00001a50| 2a 20 47 4e 55 20 47 65 | 6e 65 72 61 6c 20 50 75 |* GNU Ge|neral Pu|
|00001a60| 62 6c 69 63 20 4c 69 63 | 65 6e 73 65 20 66 6f 72 |blic Lic|ense for|
|00001a70| 20 6d 6f 72 65 20 64 65 | 74 61 69 6c 73 2e 0a 58 | more de|tails..X|
|00001a80| 20 2a 20 0a 58 20 2a 20 | 59 6f 75 20 73 68 6f 75 | * .X * |You shou|
|00001a90| 6c 64 20 68 61 76 65 20 | 72 65 63 65 69 76 65 64 |ld have |received|
|00001aa0| 20 61 20 63 6f 70 79 20 | 6f 66 20 74 68 65 20 47 | a copy |of the G|
|00001ab0| 4e 55 20 47 65 6e 65 72 | 61 6c 20 50 75 62 6c 69 |NU Gener|al Publi|
|00001ac0| 63 20 4c 69 63 65 6e 73 | 65 0a 58 20 2a 20 61 6c |c Licens|e.X * al|
|00001ad0| 6f 6e 67 20 77 69 74 68 | 20 58 53 70 72 69 6e 67 |ong with| XSpring|
|00001ae0| 69 65 73 3b 20 73 65 65 | 20 74 68 65 20 66 69 6c |ies; see| the fil|
|00001af0| 65 20 43 4f 50 59 49 4e | 47 2e 20 20 49 66 20 6e |e COPYIN|G. If n|
|00001b00| 6f 74 2c 20 77 72 69 74 | 65 20 74 6f 0a 58 20 2a |ot, writ|e to.X *|
|00001b10| 20 74 68 65 20 46 72 65 | 65 20 53 6f 66 74 77 61 | the Fre|e Softwa|
|00001b20| 72 65 20 46 6f 75 6e 64 | 61 74 69 6f 6e 2c 20 36 |re Found|ation, 6|
|00001b30| 37 35 20 4d 61 73 73 20 | 41 76 65 2c 20 43 61 6d |75 Mass |Ave, Cam|
|00001b40| 62 72 69 64 67 65 2c 20 | 4d 41 20 30 32 31 33 39 |bridge, |MA 02139|
|00001b50| 2c 20 55 53 41 2e 0a 58 | 20 2a 0a 58 20 2a 2f 0a |, USA..X| *.X */.|
|00001b60| 58 0a 58 23 69 6e 63 6c | 75 64 65 20 22 64 65 66 |X.X#incl|ude "def|
|00001b70| 73 2e 68 22 0a 58 23 69 | 6e 63 6c 75 64 65 20 22 |s.h".X#i|nclude "|
|00001b80| 6f 62 6a 2e 68 22 0a 58 | 0a 58 23 64 65 66 69 6e |obj.h".X|.X#defin|
|00001b90| 65 20 4d 50 52 4f 58 49 | 4d 49 54 59 09 38 2e 30 |e MPROXI|MITY.8.0|
|00001ba0| 0a 58 23 64 65 66 69 6e | 65 20 53 50 52 4f 58 49 |.X#defin|e SPROXI|
|00001bb0| 4d 49 54 59 09 38 2e 30 | 0a 58 0a 58 2f 2a 20 4f |MITY.8.0|.X.X/* O|
|00001bc0| 62 6a 65 63 74 20 67 6c | 6f 62 61 6c 73 20 2a 2f |bject gl|obals */|
|00001bd0| 0a 58 6d 61 73 73 20 2a | 6d 61 73 73 65 73 3b 0a |.Xmass *|masses;.|
|00001be0| 58 73 70 72 69 6e 67 20 | 2a 73 70 72 69 6e 67 73 |Xspring |*springs|
|00001bf0| 3b 0a 58 69 6e 74 20 6e | 75 6d 5f 6d 61 73 73 2c |;.Xint n|um_mass,|
|00001c00| 20 6e 75 6d 5f 73 70 72 | 69 6e 67 3b 0a 58 73 74 | num_spr|ing;.Xst|
|00001c10| 61 74 69 63 20 69 6e 74 | 20 6e 75 6d 5f 6d 61 73 |atic int| num_mas|
|00001c20| 73 5f 61 6c 6c 6f 63 2c | 20 6e 75 6d 5f 73 70 72 |s_alloc,| num_spr|
|00001c30| 69 6e 67 5f 61 6c 6c 6f | 63 3b 0a 58 69 6e 74 20 |ing_allo|c;.Xint |
|00001c40| 66 61 6b 65 5f 6d 61 73 | 73 2c 20 66 61 6b 65 5f |fake_mas|s, fake_|
|00001c50| 73 70 72 69 6e 67 3b 0a | 58 73 74 61 74 69 63 20 |spring;.|Xstatic |
|00001c60| 6d 61 73 73 20 2a 6d 61 | 73 73 65 73 5f 73 61 76 |mass *ma|sses_sav|
|00001c70| 65 20 3d 20 4e 55 4c 4c | 3b 0a 58 73 74 61 74 69 |e = NULL|;.Xstati|
|00001c80| 63 20 73 70 72 69 6e 67 | 20 2a 73 70 72 69 6e 67 |c spring| *spring|
|00001c90| 73 5f 73 61 76 65 20 3d | 20 4e 55 4c 4c 3b 0a 58 |s_save =| NULL;.X|
|00001ca0| 73 74 61 74 69 63 20 69 | 6e 74 20 6e 75 6d 5f 6d |static i|nt num_m|
|00001cb0| 61 73 73 5f 73 61 76 65 | 64 2c 20 6e 75 6d 5f 6d |ass_save|d, num_m|
|00001cc0| 61 73 73 5f 73 61 76 65 | 64 61 6c 6c 6f 63 2c 20 |ass_save|dalloc, |
|00001cd0| 6e 75 6d 5f 73 70 72 69 | 6e 67 5f 73 61 76 65 64 |num_spri|ng_saved|
|00001ce0| 2c 20 6e 75 6d 5f 73 70 | 72 69 6e 67 5f 73 61 76 |, num_sp|ring_sav|
|00001cf0| 65 64 61 6c 6c 6f 63 3b | 0a 58 0a 58 2f 2a 20 69 |edalloc;|.X.X/* i|
|00001d00| 6e 69 74 5f 6f 62 6a 65 | 63 74 73 3a 20 63 72 65 |nit_obje|cts: cre|
|00001d10| 61 74 65 20 61 6e 20 69 | 6e 69 74 69 61 6c 20 73 |ate an i|nitial s|
|00001d20| 65 74 20 6f 66 20 6d 61 | 73 73 65 73 20 61 6e 64 |et of ma|sses and|
|00001d30| 0a 58 20 20 20 73 70 72 | 69 6e 67 73 20 74 6f 20 |.X spr|ings to |
|00001d40| 77 6f 72 6b 20 77 69 74 | 68 0a 58 20 20 20 2a 2f |work wit|h.X */|
|00001d50| 0a 58 76 6f 69 64 20 69 | 6e 69 74 5f 6f 62 6a 65 |.Xvoid i|nit_obje|
|00001d60| 63 74 73 28 29 0a 58 7b | 0a 58 20 20 20 20 2f 2a |cts().X{|.X /*|
|00001d70| 20 43 72 65 61 74 65 20 | 69 6e 69 74 69 61 6c 20 | Create |initial |
|00001d80| 6f 62 6a 65 63 74 73 20 | 2a 2f 0a 58 20 20 20 20 |objects |*/.X |
|00001d90| 6e 75 6d 5f 6d 61 73 73 | 20 3d 20 30 3b 0a 58 20 |num_mass| = 0;.X |
|00001da0| 20 20 20 6e 75 6d 5f 6d | 61 73 73 5f 61 6c 6c 6f | num_m|ass_allo|
|00001db0| 63 20 3d 20 41 4c 4c 4f | 43 5f 53 49 5a 45 20 2a |c = ALLO|C_SIZE *|
|00001dc0| 20 32 3b 0a 58 20 20 20 | 20 6d 61 73 73 65 73 20 | 2;.X | masses |
|00001dd0| 3d 20 28 6d 61 73 73 20 | 2a 29 78 6d 61 6c 6c 6f |= (mass |*)xmallo|
|00001de0| 63 28 73 69 7a 65 6f 66 | 28 6d 61 73 73 29 20 2a |c(sizeof|(mass) *|
|00001df0| 20 6e 75 6d 5f 6d 61 73 | 73 5f 61 6c 6c 6f 63 29 | num_mas|s_alloc)|
|00001e00| 3b 0a 58 0a 58 20 20 20 | 20 6e 75 6d 5f 73 70 72 |;.X.X | num_spr|
|00001e10| 69 6e 67 20 3d 20 30 3b | 0a 58 20 20 20 20 6e 75 |ing = 0;|.X nu|
|00001e20| 6d 5f 73 70 72 69 6e 67 | 5f 61 6c 6c 6f 63 20 3d |m_spring|_alloc =|
|00001e30| 20 41 4c 4c 4f 43 5f 53 | 49 5a 45 3b 0a 58 20 20 | ALLOC_S|IZE;.X |
|00001e40| 20 20 73 70 72 69 6e 67 | 73 20 3d 20 28 73 70 72 | spring|s = (spr|
|00001e50| 69 6e 67 20 2a 29 78 6d | 61 6c 6c 6f 63 28 73 69 |ing *)xm|alloc(si|
|00001e60| 7a 65 6f 66 28 73 70 72 | 69 6e 67 29 20 2a 20 6e |zeof(spr|ing) * n|
|00001e70| 75 6d 5f 73 70 72 69 6e | 67 5f 61 6c 6c 6f 63 29 |um_sprin|g_alloc)|
|00001e80| 3b 0a 58 20 20 20 20 0a | 58 20 20 20 20 66 61 6b |;.X .|X fak|
|00001e90| 65 5f 6d 61 73 73 20 3d | 20 63 72 65 61 74 65 5f |e_mass =| create_|
|00001ea0| 6d 61 73 73 28 29 3b 0a | 58 20 20 20 20 6d 61 73 |mass();.|X mas|
|00001eb0| 73 65 73 5b 66 61 6b 65 | 5f 6d 61 73 73 5d 2e 73 |ses[fake|_mass].s|
|00001ec0| 74 61 74 75 73 20 3d 20 | 53 5f 46 49 58 45 44 3b |tatus = |S_FIXED;|
|00001ed0| 0a 58 20 20 20 20 66 61 | 6b 65 5f 73 70 72 69 6e |.X fa|ke_sprin|
|00001ee0| 67 20 3d 20 63 72 65 61 | 74 65 5f 73 70 72 69 6e |g = crea|te_sprin|
|00001ef0| 67 28 29 3b 0a 58 20 20 | 20 20 73 70 72 69 6e 67 |g();.X | spring|
|00001f00| 73 5b 66 61 6b 65 5f 73 | 70 72 69 6e 67 5d 2e 73 |s[fake_s|pring].s|
|00001f10| 74 61 74 75 73 20 3d 20 | 30 3b 0a 58 0a 58 20 20 |tatus = |0;.X.X |
|00001f20| 20 20 61 64 64 5f 6d 61 | 73 73 70 61 72 65 6e 74 | add_ma|ssparent|
|00001f30| 28 66 61 6b 65 5f 6d 61 | 73 73 2c 20 66 61 6b 65 |(fake_ma|ss, fake|
|00001f40| 5f 73 70 72 69 6e 67 29 | 3b 0a 58 20 20 20 20 73 |_spring)|;.X s|
|00001f50| 70 72 69 6e 67 73 5b 66 | 61 6b 65 5f 73 70 72 69 |prings[f|ake_spri|
|00001f60| 6e 67 5d 2e 6d 31 20 3d | 20 66 61 6b 65 5f 6d 61 |ng].m1 =| fake_ma|
|00001f70| 73 73 3b 0a 58 7d 0a 58 | 0a 58 76 6f 69 64 20 61 |ss;.X}.X|.Xvoid a|
|00001f80| 74 74 61 63 68 5f 66 61 | 6b 65 5f 73 70 72 69 6e |ttach_fa|ke_sprin|
|00001f90| 67 28 74 6f 6d 61 73 73 | 29 0a 58 69 6e 74 20 74 |g(tomass|).Xint t|
|00001fa0| 6f 6d 61 73 73 3b 0a 58 | 7b 0a 58 20 20 20 20 61 |omass;.X|{.X a|
|00001fb0| 64 64 5f 6d 61 73 73 70 | 61 72 65 6e 74 28 66 61 |dd_massp|arent(fa|
|00001fc0| 6b 65 5f 6d 61 73 73 2c | 20 66 61 6b 65 5f 73 70 |ke_mass,| fake_sp|
|00001fd0| 72 69 6e 67 29 3b 0a 58 | 20 20 20 20 73 70 72 69 |ring);.X| spri|
|00001fe0| 6e 67 73 5b 66 61 6b 65 | 5f 73 70 72 69 6e 67 5d |ngs[fake|_spring]|
|00001ff0| 2e 6d 32 20 3d 20 74 6f | 6d 61 73 73 3b 0a 58 20 |.m2 = to|mass;.X |
|00002000| 20 20 20 73 70 72 69 6e | 67 73 5b 66 61 6b 65 5f | sprin|gs[fake_|
|00002010| 73 70 72 69 6e 67 5d 2e | 73 74 61 74 75 73 20 7c |spring].|status ||
|00002020| 3d 20 53 5f 41 4c 49 56 | 45 3b 0a 58 20 20 20 20 |= S_ALIV|E;.X |
|00002030| 73 70 72 69 6e 67 73 5b | 66 61 6b 65 5f 73 70 72 |springs[|fake_spr|
|00002040| 69 6e 67 5d 2e 6b 73 20 | 3d 20 6d 73 74 2e 63 75 |ing].ks |= mst.cu|
|00002050| 72 5f 6b 73 3b 0a 58 20 | 20 20 20 73 70 72 69 6e |r_ks;.X | sprin|
|00002060| 67 73 5b 66 61 6b 65 5f | 73 70 72 69 6e 67 5d 2e |gs[fake_|spring].|
|00002070| 6b 64 20 3d 20 6d 73 74 | 2e 63 75 72 5f 6b 64 3b |kd = mst|.cur_kd;|
|00002080| 0a 58 7d 0a 58 0a 58 76 | 6f 69 64 20 6b 69 6c 6c |.X}.X.Xv|oid kill|
|00002090| 5f 66 61 6b 65 5f 73 70 | 72 69 6e 67 28 29 0a 58 |_fake_sp|ring().X|
|000020a0| 7b 0a 58 20 20 20 20 73 | 70 72 69 6e 67 73 5b 66 |{.X s|prings[f|
|000020b0| 61 6b 65 5f 73 70 72 69 | 6e 67 5d 2e 73 74 61 74 |ake_spri|ng].stat|
|000020c0| 75 73 20 26 3d 20 7e 53 | 5f 41 4c 49 56 45 3b 0a |us &= ~S|_ALIVE;.|
|000020d0| 58 7d 0a 58 0a 58 76 6f | 69 64 20 6d 6f 76 65 5f |X}.X.Xvo|id move_|
|000020e0| 66 61 6b 65 5f 6d 61 73 | 73 28 6d 78 2c 20 6d 79 |fake_mas|s(mx, my|
|000020f0| 29 0a 58 69 6e 74 20 6d | 78 2c 20 6d 79 3b 0a 58 |).Xint m|x, my;.X|
|00002100| 7b 0a 58 20 20 20 20 6d | 61 73 73 65 73 5b 66 61 |{.X m|asses[fa|
|00002110| 6b 65 5f 6d 61 73 73 5d | 2e 78 20 3d 20 6d 78 3b |ke_mass]|.x = mx;|
|00002120| 0a 58 20 20 20 20 6d 61 | 73 73 65 73 5b 66 61 6b |.X ma|sses[fak|
|00002130| 65 5f 6d 61 73 73 5d 2e | 79 20 3d 20 6d 79 3b 0a |e_mass].|y = my;.|
|00002140| 58 7d 0a 58 0a 58 2f 2a | 20 63 72 65 61 74 65 5f |X}.X.X/*| create_|
|00002150| 6d 61 73 73 3a 20 72 65 | 74 75 72 6e 20 74 68 65 |mass: re|turn the|
|00002160| 20 69 6e 64 65 78 20 66 | 6f 72 20 61 20 6e 65 77 | index f|or a new|
|00002170| 20 6d 61 73 73 2c 0a 58 | 20 20 20 70 6f 73 73 69 | mass,.X| possi|
|00002180| 62 6c 79 20 61 6c 6c 6f | 63 61 74 69 6e 67 20 6d |bly allo|cating m|
|00002190| 6f 72 65 20 73 70 61 63 | 65 20 69 66 20 6e 65 63 |ore spac|e if nec|
|000021a0| 65 73 61 72 79 0a 58 20 | 20 20 2a 2f 0a 58 69 6e |esary.X | */.Xin|
|000021b0| 74 20 63 72 65 61 74 65 | 5f 6d 61 73 73 28 29 0a |t create|_mass().|
|000021c0| 58 7b 0a 58 20 20 20 20 | 69 66 20 28 6e 75 6d 5f |X{.X |if (num_|
|000021d0| 6d 61 73 73 20 3e 3d 20 | 6e 75 6d 5f 6d 61 73 73 |mass >= |num_mass|
|000021e0| 5f 61 6c 6c 6f 63 29 20 | 7b 0a 58 09 2f 2a 20 41 |_alloc) |{.X./* A|
|000021f0| 6c 6c 6f 63 61 74 65 20 | 6d 6f 72 65 20 6d 61 73 |llocate |more mas|
|00002200| 73 65 73 20 2a 2f 0a 58 | 09 6e 75 6d 5f 6d 61 73 |ses */.X|.num_mas|
|00002210| 73 5f 61 6c 6c 6f 63 20 | 2b 3d 20 41 4c 4c 4f 43 |s_alloc |+= ALLOC|
|00002220| 5f 53 49 5a 45 3b 0a 58 | 09 6d 61 73 73 65 73 20 |_SIZE;.X|.masses |
|00002230| 3d 20 28 6d 61 73 73 20 | 2a 29 78 72 65 61 6c 6c |= (mass |*)xreall|
|00002240| 6f 63 28 6d 61 73 73 65 | 73 2c 20 73 69 7a 65 6f |oc(masse|s, sizeo|
|00002250| 66 28 6d 61 73 73 29 20 | 2a 20 6e 75 6d 5f 6d 61 |f(mass) |* num_ma|
|00002260| 73 73 5f 61 6c 6c 6f 63 | 29 3b 0a 58 20 20 20 20 |ss_alloc|);.X |
|00002270| 7d 0a 58 20 20 20 20 0a | 58 20 20 20 20 2f 2a 20 |}.X .|X /* |
|00002280| 53 65 74 20 70 61 72 61 | 6d 65 74 65 72 73 20 66 |Set para|meters f|
|00002290| 6f 72 20 6e 65 77 20 6d | 61 73 73 20 2a 2f 0a 58 |or new m|ass */.X|
|000022a0| 20 20 20 20 6d 61 73 73 | 65 73 5b 6e 75 6d 5f 6d | mass|es[num_m|
|000022b0| 61 73 73 5d 2e 78 20 3d | 20 6d 61 73 73 65 73 5b |ass].x =| masses[|
|000022c0| 6e 75 6d 5f 6d 61 73 73 | 5d 2e 79 20 3d 20 30 2e |num_mass|].y = 0.|
|000022d0| 30 3b 0a 58 20 20 20 20 | 6d 61 73 73 65 73 5b 6e |0;.X |masses[n|
|000022e0| 75 6d 5f 6d 61 73 73 5d | 2e 76 78 20 3d 20 6d 61 |um_mass]|.vx = ma|
|000022f0| 73 73 65 73 5b 6e 75 6d | 5f 6d 61 73 73 5d 2e 76 |sses[num|_mass].v|
|00002300| 79 20 3d 20 30 2e 30 3b | 0a 58 20 20 20 20 6d 61 |y = 0.0;|.X ma|
|00002310| 73 73 65 73 5b 6e 75 6d | 5f 6d 61 73 73 5d 2e 61 |sses[num|_mass].a|
|00002320| 78 20 3d 20 6d 61 73 73 | 65 73 5b 6e 75 6d 5f 6d |x = mass|es[num_m|
|00002330| 61 73 73 5d 2e 61 79 20 | 3d 20 30 2e 30 3b 0a 58 |ass].ay |= 0.0;.X|
|00002340| 20 20 20 20 6d 61 73 73 | 65 73 5b 6e 75 6d 5f 6d | mass|es[num_m|
|00002350| 61 73 73 5d 2e 6d 61 73 | 73 20 3d 20 6d 61 73 73 |ass].mas|s = mass|
|00002360| 65 73 5b 6e 75 6d 5f 6d | 61 73 73 5d 2e 65 6c 61 |es[num_m|ass].ela|
|00002370| 73 74 69 63 20 3d 20 30 | 2e 30 3b 0a 58 20 20 20 |stic = 0|.0;.X |
|00002380| 20 6d 61 73 73 65 73 5b | 6e 75 6d 5f 6d 61 73 73 | masses[|num_mass|
|00002390| 5d 2e 72 61 64 69 75 73 | 20 3d 20 6d 61 73 73 65 |].radius| = masse|
|000023a0| 73 5b 6e 75 6d 5f 6d 61 | 73 73 5d 2e 6e 75 6d 5f |s[num_ma|ss].num_|
|000023b0| 70 61 72 73 20 3d 20 30 | 3b 0a 58 20 20 20 20 6d |pars = 0|;.X m|
|000023c0| 61 73 73 65 73 5b 6e 75 | 6d 5f 6d 61 73 73 5d 2e |asses[nu|m_mass].|
|000023d0| 70 61 72 73 20 3d 20 4e | 55 4c 4c 3b 0a 58 20 20 |pars = N|ULL;.X |
|000023e0| 20 20 6d 61 73 73 65 73 | 5b 6e 75 6d 5f 6d 61 73 | masses|[num_mas|
|000023f0| 73 5d 2e 73 74 61 74 75 | 73 20 3d 20 53 5f 41 4c |s].statu|s = S_AL|
|00002400| 49 56 45 3b 0a 58 0a 58 | 20 20 20 20 2f 2a 20 52 |IVE;.X.X| /* R|
|00002410| 65 74 75 72 6e 20 6e 65 | 78 74 20 75 6e 75 73 65 |eturn ne|xt unuse|
|00002420| 64 20 6d 61 73 73 20 2a | 2f 0a 58 20 20 20 20 72 |d mass *|/.X r|
|00002430| 65 74 75 72 6e 20 6e 75 | 6d 5f 6d 61 73 73 2b 2b |eturn nu|m_mass++|
|00002440| 3b 0a 58 7d 0a 58 0a 58 | 2f 2a 20 63 72 65 61 74 |;.X}.X.X|/* creat|
|00002450| 65 5f 73 70 72 69 6e 67 | 3a 20 72 65 74 75 72 6e |e_spring|: return|
|00002460| 20 74 68 65 20 69 6e 64 | 65 78 20 66 6f 72 20 61 | the ind|ex for a|
|00002470| 20 6e 65 77 20 73 70 72 | 69 6e 67 2c 0a 58 20 20 | new spr|ing,.X |
|00002480| 20 70 6f 73 73 69 62 6c | 79 20 61 6c 6c 6f 63 61 | possibl|y alloca|
|00002490| 74 69 6e 67 20 6d 6f 72 | 65 20 73 70 61 63 65 20 |ting mor|e space |
|000024a0| 69 66 20 6e 65 63 65 73 | 61 72 79 0a 58 20 20 20 |if neces|ary.X |
|000024b0| 2a 2f 0a 58 69 6e 74 20 | 63 72 65 61 74 65 5f 73 |*/.Xint |create_s|
|000024c0| 70 72 69 6e 67 28 29 0a | 58 7b 0a 58 20 20 20 20 |pring().|X{.X |
|000024d0| 69 66 20 28 6e 75 6d 5f | 73 70 72 69 6e 67 20 3e |if (num_|spring >|
|000024e0| 3d 20 6e 75 6d 5f 73 70 | 72 69 6e 67 5f 61 6c 6c |= num_sp|ring_all|
|000024f0| 6f 63 29 20 7b 0a 58 09 | 2f 2a 20 41 6c 6c 6f 63 |oc) {.X.|/* Alloc|
|00002500| 61 74 65 20 6d 6f 72 65 | 20 73 70 72 69 6e 67 73 |ate more| springs|
|00002510| 20 2a 2f 0a 58 09 6e 75 | 6d 5f 73 70 72 69 6e 67 | */.X.nu|m_spring|
|00002520| 5f 61 6c 6c 6f 63 20 2b | 3d 20 41 4c 4c 4f 43 5f |_alloc +|= ALLOC_|
|00002530| 53 49 5a 45 3b 0a 58 09 | 73 70 72 69 6e 67 73 20 |SIZE;.X.|springs |
|00002540| 3d 20 28 73 70 72 69 6e | 67 20 2a 29 78 72 65 61 |= (sprin|g *)xrea|
|00002550| 6c 6c 6f 63 28 73 70 72 | 69 6e 67 73 2c 20 73 69 |lloc(spr|ings, si|
|00002560| 7a 65 6f 66 28 73 70 72 | 69 6e 67 29 20 2a 20 6e |zeof(spr|ing) * n|
|00002570| 75 6d 5f 73 70 72 69 6e | 67 5f 61 6c 6c 6f 63 29 |um_sprin|g_alloc)|
|00002580| 3b 0a 58 20 20 20 20 7d | 0a 58 0a 58 20 20 20 20 |;.X }|.X.X |
|00002590| 2f 2a 20 53 65 74 20 70 | 61 72 61 6d 65 74 65 72 |/* Set p|arameter|
|000025a0| 73 20 66 6f 72 20 6e 65 | 77 20 73 70 72 69 6e 67 |s for ne|w spring|
|000025b0| 20 2a 2f 0a 58 20 20 20 | 20 73 70 72 69 6e 67 73 | */.X | springs|
|000025c0| 5b 6e 75 6d 5f 73 70 72 | 69 6e 67 5d 2e 6b 73 20 |[num_spr|ing].ks |
|000025d0| 3d 20 73 70 72 69 6e 67 | 73 5b 6e 75 6d 5f 73 70 |= spring|s[num_sp|
|000025e0| 72 69 6e 67 5d 2e 6b 64 | 20 3d 20 30 2e 30 3b 0a |ring].kd| = 0.0;.|
|000025f0| 58 20 20 20 20 73 70 72 | 69 6e 67 73 5b 6e 75 6d |X spr|ings[num|
|00002600| 5f 73 70 72 69 6e 67 5d | 2e 72 65 73 74 6c 65 6e |_spring]|.restlen|
|00002610| 20 3d 20 30 2e 30 3b 0a | 58 20 20 20 20 73 70 72 | = 0.0;.|X spr|
|00002620| 69 6e 67 73 5b 6e 75 6d | 5f 73 70 72 69 6e 67 5d |ings[num|_spring]|
|00002630| 2e 6d 31 20 3d 20 73 70 | 72 69 6e 67 73 5b 6e 75 |.m1 = sp|rings[nu|
|00002640| 6d 5f 73 70 72 69 6e 67 | 5d 2e 6d 32 20 3d 20 30 |m_spring|].m2 = 0|
|00002650| 3b 0a 58 20 20 20 20 73 | 70 72 69 6e 67 73 5b 6e |;.X s|prings[n|
|00002660| 75 6d 5f 73 70 72 69 6e | 67 5d 2e 73 74 61 74 75 |um_sprin|g].statu|
|00002670| 73 20 3d 20 53 5f 41 4c | 49 56 45 3b 0a 58 0a 58 |s = S_AL|IVE;.X.X|
|00002680| 20 20 20 20 2f 2a 20 52 | 65 74 75 72 6e 20 6e 65 | /* R|eturn ne|
|00002690| 78 74 20 75 6e 75 73 65 | 64 20 73 70 72 69 6e 67 |xt unuse|d spring|
|000026a0| 20 2a 2f 0a 58 20 20 20 | 20 72 65 74 75 72 6e 20 | */.X | return |
|000026b0| 6e 75 6d 5f 73 70 72 69 | 6e 67 2b 2b 3b 0a 58 7d |num_spri|ng++;.X}|
|000026c0| 0a 58 0a 58 76 6f 69 64 | 20 61 64 64 5f 6d 61 73 |.X.Xvoid| add_mas|
|000026d0| 73 70 61 72 65 6e 74 28 | 77 68 69 63 68 2c 20 70 |sparent(|which, p|
|000026e0| 61 72 65 6e 74 29 0a 58 | 69 6e 74 20 77 68 69 63 |arent).X|int whic|
|000026f0| 68 2c 20 70 61 72 65 6e | 74 3b 0a 58 7b 0a 58 20 |h, paren|t;.X{.X |
|00002700| 20 20 20 69 6e 74 20 6c | 65 6e 20 3d 20 6d 61 73 | int l|en = mas|
|00002710| 73 65 73 5b 77 68 69 63 | 68 5d 2e 6e 75 6d 5f 70 |ses[whic|h].num_p|
|00002720| 61 72 73 2b 2b 3b 0a 58 | 0a 58 20 20 20 20 6d 61 |ars++;.X|.X ma|
|00002730| 73 73 65 73 5b 77 68 69 | 63 68 5d 2e 70 61 72 73 |sses[whi|ch].pars|
|00002740| 20 3d 20 28 69 6e 74 20 | 2a 29 78 72 65 61 6c 6c | = (int |*)xreall|
|00002750| 6f 63 28 6d 61 73 73 65 | 73 5b 77 68 69 63 68 5d |oc(masse|s[which]|
|00002760| 2e 70 61 72 73 2c 20 28 | 6c 65 6e 20 2b 20 31 29 |.pars, (|len + 1)|
|00002770| 20 2a 20 73 69 7a 65 6f | 66 28 69 6e 74 29 29 3b | * sizeo|f(int));|
|00002780| 0a 58 0a 58 20 20 20 20 | 6d 61 73 73 65 73 5b 77 |.X.X |masses[w|
|00002790| 68 69 63 68 5d 2e 70 61 | 72 73 5b 6c 65 6e 5d 20 |hich].pa|rs[len] |
|000027a0| 3d 20 70 61 72 65 6e 74 | 3b 0a 58 7d 0a 58 0a 58 |= parent|;.X}.X.X|
|000027b0| 76 6f 69 64 20 64 65 6c | 5f 6d 61 73 73 70 61 72 |void del|_masspar|
|000027c0| 65 6e 74 28 77 68 69 63 | 68 2c 20 70 61 72 65 6e |ent(whic|h, paren|
|000027d0| 74 29 0a 58 69 6e 74 20 | 77 68 69 63 68 2c 20 70 |t).Xint |which, p|
|000027e0| 61 72 65 6e 74 3b 0a 58 | 7b 0a 58 20 20 20 20 69 |arent;.X|{.X i|
|000027f0| 6e 74 20 69 3b 0a 58 0a | 58 20 20 20 20 69 66 20 |nt i;.X.|X if |
|00002800| 28 6d 61 73 73 65 73 5b | 77 68 69 63 68 5d 2e 73 |(masses[|which].s|
|00002810| 74 61 74 75 73 20 26 20 | 53 5f 41 4c 49 56 45 29 |tatus & |S_ALIVE)|
|00002820| 20 7b 0a 58 09 66 6f 72 | 20 28 69 20 3d 20 30 3b | {.X.for| (i = 0;|
|00002830| 20 69 20 3c 20 6d 61 73 | 73 65 73 5b 77 68 69 63 | i < mas|ses[whic|
|00002840| 68 5d 2e 6e 75 6d 5f 70 | 61 72 73 3b 20 69 2b 2b |h].num_p|ars; i++|
|00002850| 29 20 7b 0a 58 09 20 20 | 20 20 69 66 20 28 6d 61 |) {.X. | if (ma|
|00002860| 73 73 65 73 5b 77 68 69 | 63 68 5d 2e 70 61 72 73 |sses[whi|ch].pars|
|00002870| 5b 69 5d 20 3d 3d 20 70 | 61 72 65 6e 74 29 20 7b |[i] == p|arent) {|
|00002880| 0a 58 09 09 69 66 20 28 | 69 20 3d 3d 20 6d 61 73 |.X..if (|i == mas|
|00002890| 73 65 73 5b 77 68 69 63 | 68 5d 2e 6e 75 6d 5f 70 |ses[whic|h].num_p|
|000028a0| 61 72 73 20 2d 20 31 29 | 20 7b 0a 58 09 09 20 20 |ars - 1)| {.X.. |
|000028b0| 20 20 6d 61 73 73 65 73 | 5b 77 68 69 63 68 5d 2e | masses|[which].|
|000028c0| 6e 75 6d 5f 70 61 72 73 | 2d 2d 3b 0a 58 09 09 7d |num_pars|--;.X..}|
|000028d0| 20 65 6c 73 65 20 7b 0a | 58 09 09 20 20 20 20 6d | else {.|X.. m|
|000028e0| 61 73 73 65 73 5b 77 68 | 69 63 68 5d 2e 70 61 72 |asses[wh|ich].par|
|000028f0| 73 5b 69 5d 20 3d 20 6d | 61 73 73 65 73 5b 77 68 |s[i] = m|asses[wh|
|00002900| 69 63 68 5d 2e 70 61 72 | 73 5b 2d 2d 6d 61 73 73 |ich].par|s[--mass|
|00002910| 65 73 5b 77 68 69 63 68 | 5d 2e 6e 75 6d 5f 70 61 |es[which|].num_pa|
|00002920| 72 73 5d 3b 0a 58 09 09 | 7d 0a 58 09 09 72 65 74 |rs];.X..|}.X..ret|
|00002930| 75 72 6e 3b 0a 58 09 20 | 20 20 20 7d 0a 58 09 7d |urn;.X. | }.X.}|
|00002940| 0a 58 20 20 20 20 7d 0a | 58 7d 0a 58 0a 58 2f 2a |.X }.|X}.X.X/*|
|00002950| 20 64 65 6c 65 74 65 5f | 73 70 72 69 6e 67 3a 20 | delete_|spring: |
|00002960| 64 65 6c 65 74 65 20 61 | 20 70 61 72 74 69 63 75 |delete a| particu|
|00002970| 6c 61 72 20 73 70 72 69 | 6e 67 0a 58 20 2a 2f 0a |lar spri|ng.X */.|
|00002980| 58 76 6f 69 64 20 64 65 | 6c 65 74 65 5f 73 70 72 |Xvoid de|lete_spr|
|00002990| 69 6e 67 28 77 68 69 63 | 68 29 0a 58 69 6e 74 20 |ing(whic|h).Xint |
|000029a0| 77 68 69 63 68 3b 0a 58 | 7b 0a 58 20 20 20 20 69 |which;.X|{.X i|
|000029b0| 66 20 28 73 70 72 69 6e | 67 73 5b 77 68 69 63 68 |f (sprin|gs[which|
|000029c0| 5d 2e 73 74 61 74 75 73 | 20 26 20 53 5f 41 4c 49 |].status| & S_ALI|
|000029d0| 56 45 29 20 7b 0a 58 20 | 20 20 20 20 20 20 20 73 |VE) {.X | s|
|000029e0| 70 72 69 6e 67 73 5b 77 | 68 69 63 68 5d 2e 73 74 |prings[w|hich].st|
|000029f0| 61 74 75 73 20 3d 20 30 | 3b 0a 58 09 64 65 6c 5f |atus = 0|;.X.del_|
|00002a00| 6d 61 73 73 70 61 72 65 | 6e 74 28 73 70 72 69 6e |masspare|nt(sprin|
|00002a10| 67 73 5b 77 68 69 63 68 | 5d 2e 6d 31 2c 20 77 68 |gs[which|].m1, wh|
|00002a20| 69 63 68 29 3b 0a 58 09 | 64 65 6c 5f 6d 61 73 73 |ich);.X.|del_mass|
|00002a30| 70 61 72 65 6e 74 28 73 | 70 72 69 6e 67 73 5b 77 |parent(s|prings[w|
|00002a40| 68 69 63 68 5d 2e 6d 32 | 2c 20 77 68 69 63 68 29 |hich].m2|, which)|
|00002a50| 3b 0a 58 20 20 20 20 7d | 0a 58 7d 0a 58 0a 58 2f |;.X }|.X}.X.X/|
|00002a60| 2a 20 64 65 6c 65 74 65 | 5f 6d 61 73 73 3a 20 64 |* delete|_mass: d|
|00002a70| 65 6c 65 74 65 20 61 20 | 70 61 72 74 69 63 75 6c |elete a |particul|
|00002a80| 61 72 20 6d 61 73 73 2c | 20 61 6e 64 20 61 6c 6c |ar mass,| and all|
|00002a90| 20 73 70 72 69 6e 67 73 | 0a 58 20 20 20 64 69 72 | springs|.X dir|
|00002aa0| 65 63 74 6c 79 20 61 74 | 74 61 63 68 65 64 20 74 |ectly at|tached t|
|00002ab0| 6f 20 69 74 0a 58 20 20 | 20 2a 2f 0a 58 76 6f 69 |o it.X | */.Xvoi|
|00002ac0| 64 20 64 65 6c 65 74 65 | 5f 6d 61 73 73 28 77 68 |d delete|_mass(wh|
|00002ad0| 69 63 68 29 0a 58 69 6e | 74 20 77 68 69 63 68 3b |ich).Xin|t which;|
|00002ae0| 0a 58 7b 0a 58 20 20 20 | 20 69 6e 74 20 69 3b 0a |.X{.X | int i;.|
|00002af0| 58 0a 58 20 20 20 20 69 | 66 20 28 6d 61 73 73 65 |X.X i|f (masse|
|00002b00| 73 5b 77 68 69 63 68 5d | 2e 73 74 61 74 75 73 20 |s[which]|.status |
|00002b10| 26 20 53 5f 41 4c 49 56 | 45 29 20 7b 0a 58 09 6d |& S_ALIV|E) {.X.m|
|00002b20| 61 73 73 65 73 5b 77 68 | 69 63 68 5d 2e 73 74 61 |asses[wh|ich].sta|
|00002b30| 74 75 73 20 3d 20 30 3b | 0a 58 0a 58 09 2f 2a 20 |tus = 0;|.X.X./* |
|00002b40| 44 65 6c 65 74 65 20 61 | 6c 6c 20 73 70 72 69 6e |Delete a|ll sprin|
|00002b50| 67 73 20 63 6f 6e 6e 65 | 63 74 65 64 20 74 6f 20 |gs conne|cted to |
|00002b60| 69 74 20 2a 2f 0a 58 09 | 66 6f 72 20 28 69 20 3d |it */.X.|for (i =|
|00002b70| 20 30 3b 20 69 20 3c 20 | 6d 61 73 73 65 73 5b 77 | 0; i < |masses[w|
|00002b80| 68 69 63 68 5d 2e 6e 75 | 6d 5f 70 61 72 73 3b 20 |hich].nu|m_pars; |
|00002b90| 69 2b 2b 29 20 7b 0a 58 | 09 20 20 20 20 64 65 6c |i++) {.X|. del|
|00002ba0| 65 74 65 5f 73 70 72 69 | 6e 67 28 6d 61 73 73 65 |ete_spri|ng(masse|
|00002bb0| 73 5b 77 68 69 63 68 5d | 2e 70 61 72 73 5b 69 5d |s[which]|.pars[i]|
|00002bc0| 29 3b 0a 58 09 7d 0a 58 | 20 20 20 20 7d 0a 58 0a |);.X.}.X| }.X.|
|00002bd0| 58 20 20 20 20 69 66 20 | 28 77 68 69 63 68 20 3d |X if |(which =|
|00002be0| 3d 20 6d 73 74 2e 63 65 | 6e 74 65 72 5f 69 64 29 |= mst.ce|nter_id)|
|00002bf0| 0a 58 20 20 20 20 20 20 | 6d 73 74 2e 63 65 6e 74 |.X |mst.cent|
|00002c00| 65 72 5f 69 64 20 3d 20 | 2d 31 3b 0a 58 7d 0a 58 |er_id = |-1;.X}.X|
|00002c10| 0a 58 2f 2a 20 64 65 6c | 65 74 65 5f 73 65 6c 65 |.X/* del|ete_sele|
|00002c20| 63 74 65 64 3a 20 64 65 | 6c 65 74 65 20 61 6c 6c |cted: de|lete all|
|00002c30| 20 6f 62 6a 65 63 74 73 | 20 77 68 69 63 68 0a 58 | objects| which.X|
|00002c40| 20 20 20 61 72 65 20 63 | 75 72 72 65 6e 74 6c 79 | are c|urrently|
|00002c50| 20 73 65 6c 65 63 74 65 | 64 0a 58 20 20 20 2a 2f | selecte|d.X */|
|00002c60| 0a 58 76 6f 69 64 20 64 | 65 6c 65 74 65 5f 73 65 |.Xvoid d|elete_se|
|00002c70| 6c 65 63 74 65 64 28 29 | 0a 58 7b 0a 58 20 20 20 |lected()|.X{.X |
|00002c80| 20 69 6e 74 20 69 3b 0a | 58 0a 58 20 20 20 20 66 | int i;.|X.X f|
|00002c90| 6f 72 20 28 69 20 3d 20 | 30 3b 20 69 20 3c 20 6e |or (i = |0; i < n|
|00002ca0| 75 6d 5f 6d 61 73 73 3b | 20 69 2b 2b 29 20 7b 0a |um_mass;| i++) {.|
|00002cb0| 58 09 69 66 20 28 6d 61 | 73 73 65 73 5b 69 5d 2e |X.if (ma|sses[i].|
|00002cc0| 73 74 61 74 75 73 20 26 | 20 53 5f 53 45 4c 45 43 |status &| S_SELEC|
|00002cd0| 54 45 44 29 20 7b 0a 58 | 09 20 20 20 20 64 65 6c |TED) {.X|. del|
|00002ce0| 65 74 65 5f 6d 61 73 73 | 28 69 29 3b 0a 58 09 7d |ete_mass|(i);.X.}|
|00002cf0| 0a 58 20 20 20 20 7d 0a | 58 0a 58 20 20 20 20 66 |.X }.|X.X f|
|00002d00| 6f 72 20 28 69 20 3d 20 | 30 3b 20 69 20 3c 20 6e |or (i = |0; i < n|
|00002d10| 75 6d 5f 73 70 72 69 6e | 67 3b 20 69 2b 2b 29 20 |um_sprin|g; i++) |
|00002d20| 7b 0a 58 09 69 66 20 28 | 73 70 72 69 6e 67 73 5b |{.X.if (|springs[|
|00002d30| 69 5d 2e 73 74 61 74 75 | 73 20 26 20 53 5f 53 45 |i].statu|s & S_SE|
|00002d40| 4c 45 43 54 45 44 29 20 | 7b 0a 58 09 20 20 20 20 |LECTED) |{.X. |
|00002d50| 64 65 6c 65 74 65 5f 73 | 70 72 69 6e 67 28 69 29 |delete_s|pring(i)|
|00002d60| 3b 0a 58 09 7d 0a 58 20 | 20 20 20 7d 0a 58 7d 0a |;.X.}.X | }.X}.|
|00002d70| 58 0a 58 76 6f 69 64 20 | 64 65 6c 65 74 65 5f 61 |X.Xvoid |delete_a|
|00002d80| 6c 6c 28 29 0a 58 7b 0a | 58 20 20 20 20 69 6e 74 |ll().X{.|X int|
|00002d90| 20 69 3b 0a 58 0a 58 20 | 20 20 20 66 6f 72 20 28 | i;.X.X | for (|
|00002da0| 69 20 3d 20 30 3b 20 69 | 20 3c 20 6e 75 6d 5f 6d |i = 0; i| < num_m|
|00002db0| 61 73 73 3b 20 69 2b 2b | 29 20 7b 0a 58 09 66 72 |ass; i++|) {.X.fr|
|00002dc0| 65 65 28 6d 61 73 73 65 | 73 5b 69 5d 2e 70 61 72 |ee(masse|s[i].par|
|00002dd0| 73 29 3b 0a 58 20 20 20 | 20 7d 0a 58 20 20 20 20 |s);.X | }.X |
|00002de0| 66 72 65 65 28 6d 61 73 | 73 65 73 29 3b 0a 58 20 |free(mas|ses);.X |
|00002df0| 20 20 20 6e 75 6d 5f 6d | 61 73 73 20 3d 20 6e 75 | num_m|ass = nu|
|00002e00| 6d 5f 6d 61 73 73 5f 61 | 6c 6c 6f 63 20 3d 20 30 |m_mass_a|lloc = 0|
|00002e10| 3b 0a 58 20 20 20 20 66 | 72 65 65 28 73 70 72 69 |;.X f|ree(spri|
|00002e20| 6e 67 73 29 3b 0a 58 20 | 20 20 20 6e 75 6d 5f 73 |ngs);.X | num_s|
|00002e30| 70 72 69 6e 67 20 3d 20 | 6e 75 6d 5f 73 70 72 69 |pring = |num_spri|
|00002e40| 6e 67 5f 61 6c 6c 6f 63 | 20 3d 20 30 3b 0a 58 20 |ng_alloc| = 0;.X |
|00002e50| 20 20 20 6d 73 74 2e 63 | 65 6e 74 65 72 5f 69 64 | mst.c|enter_id|
|00002e60| 20 3d 20 2d 31 3b 0a 58 | 7d 0a 58 0a 58 76 6f 69 | = -1;.X|}.X.Xvoi|
|00002e70| 64 20 72 65 63 6f 6e 6e | 65 63 74 5f 6d 61 73 73 |d reconn|ect_mass|
|00002e80| 65 73 28 29 0a 58 7b 0a | 58 20 20 20 20 69 6e 74 |es().X{.|X int|
|00002e90| 20 69 3b 0a 58 0a 58 20 | 20 20 20 66 6f 72 20 28 | i;.X.X | for (|
|00002ea0| 69 20 3d 20 30 3b 20 69 | 20 3c 20 6e 75 6d 5f 6d |i = 0; i| < num_m|
|00002eb0| 61 73 73 3b 20 69 2b 2b | 29 20 7b 0a 58 09 6d 61 |ass; i++|) {.X.ma|
|00002ec0| 73 73 65 73 5b 69 5d 2e | 6e 75 6d 5f 70 61 72 73 |sses[i].|num_pars|
|00002ed0| 20 3d 20 30 3b 0a 58 09 | 6d 61 73 73 65 73 5b 69 | = 0;.X.|masses[i|
|00002ee0| 5d 2e 70 61 72 73 20 3d | 20 4e 55 4c 4c 3b 0a 58 |].pars =| NULL;.X|
|00002ef0| 20 20 20 20 7d 0a 58 0a | 58 20 20 20 20 66 6f 72 | }.X.|X for|
|00002f00| 20 28 69 20 3d 20 30 3b | 20 69 20 3c 20 6e 75 6d | (i = 0;| i < num|
|00002f10| 5f 73 70 72 69 6e 67 3b | 20 69 2b 2b 29 20 7b 0a |_spring;| i++) {.|
|00002f20| 58 09 61 64 64 5f 6d 61 | 73 73 70 61 72 65 6e 74 |X.add_ma|ssparent|
|00002f30| 28 73 70 72 69 6e 67 73 | 5b 69 5d 2e 6d 31 2c 20 |(springs|[i].m1, |
|00002f40| 69 29 3b 0a 58 09 61 64 | 64 5f 6d 61 73 73 70 61 |i);.X.ad|d_masspa|
|00002f50| 72 65 6e 74 28 73 70 72 | 69 6e 67 73 5b 69 5d 2e |rent(spr|ings[i].|
|00002f60| 6d 32 2c 20 69 29 3b 0a | 58 20 20 20 20 7d 0a 58 |m2, i);.|X }.X|
|00002f70| 7d 0a 58 0a 58 76 6f 69 | 64 20 72 65 73 74 6f 72 |}.X.Xvoi|d restor|
|00002f80| 65 5f 73 74 61 74 65 28 | 29 0a 58 7b 0a 58 20 20 |e_state(|).X{.X |
|00002f90| 20 20 64 65 6c 65 74 65 | 5f 61 6c 6c 28 29 3b 0a | delete|_all();.|
|00002fa0| 58 0a 58 20 20 20 20 69 | 66 20 28 6d 61 73 73 65 |X.X i|f (masse|
|00002fb0| 73 5f 73 61 76 65 20 21 | 3d 20 4e 55 4c 4c 29 20 |s_save !|= NULL) |
|00002fc0| 7b 0a 58 09 6e 75 6d 5f | 6d 61 73 73 20 3d 20 6e |{.X.num_|mass = n|
|00002fd0| 75 6d 5f 6d 61 73 73 5f | 73 61 76 65 64 3b 0a 58 |um_mass_|saved;.X|
|00002fe0| 09 6e 75 6d 5f 6d 61 73 | 73 5f 61 6c 6c 6f 63 20 |.num_mas|s_alloc |
|00002ff0| 3d 20 6e 75 6d 5f 6d 61 | 73 73 5f 73 61 76 65 64 |= num_ma|ss_saved|
|00003000| 61 6c 6c 6f 63 3b 0a 58 | 09 6e 75 6d 5f 73 70 72 |alloc;.X|.num_spr|
|00003010| 69 6e 67 20 3d 20 6e 75 | 6d 5f 73 70 72 69 6e 67 |ing = nu|m_spring|
|00003020| 5f 73 61 76 65 64 3b 0a | 58 09 6e 75 6d 5f 73 70 |_saved;.|X.num_sp|
|00003030| 72 69 6e 67 5f 61 6c 6c | 6f 63 20 3d 20 6e 75 6d |ring_all|oc = num|
|00003040| 5f 73 70 72 69 6e 67 5f | 73 61 76 65 64 61 6c 6c |_spring_|savedall|
|00003050| 6f 63 3b 0a 58 0a 58 09 | 6d 61 73 73 65 73 20 3d |oc;.X.X.|masses =|
|00003060| 20 28 6d 61 73 73 20 2a | 29 78 6d 61 6c 6c 6f 63 | (mass *|)xmalloc|
|00003070| 28 73 69 7a 65 6f 66 28 | 6d 61 73 73 29 20 2a 20 |(sizeof(|mass) * |
|00003080| 6e 75 6d 5f 6d 61 73 73 | 5f 61 6c 6c 6f 63 29 3b |num_mass|_alloc);|
|00003090| 0a 58 09 62 63 6f 70 79 | 28 6d 61 73 73 65 73 5f |.X.bcopy|(masses_|
|000030a0| 73 61 76 65 2c 20 6d 61 | 73 73 65 73 2c 20 73 69 |save, ma|sses, si|
|000030b0| 7a 65 6f 66 28 6d 61 73 | 73 29 20 2a 20 6e 75 6d |zeof(mas|s) * num|
|000030c0| 5f 6d 61 73 73 5f 61 6c | 6c 6f 63 29 3b 0a 58 09 |_mass_al|loc);.X.|
|000030d0| 73 70 72 69 6e 67 73 20 | 3d 20 28 73 70 72 69 6e |springs |= (sprin|
|000030e0| 67 20 2a 29 78 6d 61 6c | 6c 6f 63 28 73 69 7a 65 |g *)xmal|loc(size|
|000030f0| 6f 66 28 73 70 72 69 6e | 67 29 20 2a 20 6e 75 6d |of(sprin|g) * num|
|00003100| 5f 73 70 72 69 6e 67 5f | 61 6c 6c 6f 63 29 3b 0a |_spring_|alloc);.|
|00003110| 58 09 62 63 6f 70 79 28 | 73 70 72 69 6e 67 73 5f |X.bcopy(|springs_|
|00003120| 73 61 76 65 2c 20 73 70 | 72 69 6e 67 73 2c 20 73 |save, sp|rings, s|
|00003130| 69 7a 65 6f 66 28 73 70 | 72 69 6e 67 29 20 2a 20 |izeof(sp|ring) * |
|00003140| 6e 75 6d 5f 73 70 72 69 | 6e 67 5f 61 6c 6c 6f 63 |num_spri|ng_alloc|
|00003150| 29 3b 0a 58 0a 58 09 72 | 65 63 6f 6e 6e 65 63 74 |);.X.X.r|econnect|
|00003160| 5f 6d 61 73 73 65 73 28 | 29 3b 0a 58 20 20 20 20 |_masses(|);.X |
|00003170| 7d 0a 58 7d 0a 58 0a 58 | 76 6f 69 64 20 73 61 76 |}.X}.X.X|void sav|
|00003180| 65 5f 73 74 61 74 65 28 | 29 0a 58 7b 0a 58 20 20 |e_state(|).X{.X |
|00003190| 20 20 6d 61 73 73 65 73 | 5f 73 61 76 65 20 3d 20 | masses|_save = |
|000031a0| 28 6d 61 73 73 20 2a 29 | 78 6d 61 6c 6c 6f 63 28 |(mass *)|xmalloc(|
|000031b0| 73 69 7a 65 6f 66 28 6d | 61 73 73 29 20 2a 20 6e |sizeof(m|ass) * n|
|000031c0| 75 6d 5f 6d 61 73 73 5f | 61 6c 6c 6f 63 29 3b 0a |um_mass_|alloc);.|
|000031d0| 58 20 20 20 20 62 63 6f | 70 79 28 6d 61 73 73 65 |X bco|py(masse|
|000031e0| 73 2c 20 6d 61 73 73 65 | 73 5f 73 61 76 65 2c 20 |s, masse|s_save, |
|000031f0| 73 69 7a 65 6f 66 28 6d | 61 73 73 29 20 2a 20 6e |sizeof(m|ass) * n|
|00003200| 75 6d 5f 6d 61 73 73 5f | 61 6c 6c 6f 63 29 3b 0a |um_mass_|alloc);.|
|00003210| 58 20 20 20 20 6e 75 6d | 5f 6d 61 73 73 5f 73 61 |X num|_mass_sa|
|00003220| 76 65 64 20 3d 20 6e 75 | 6d 5f 6d 61 73 73 3b 0a |ved = nu|m_mass;.|
|00003230| 58 20 20 20 20 6e 75 6d | 5f 6d 61 73 73 5f 73 61 |X num|_mass_sa|
|00003240| 76 65 64 61 6c 6c 6f 63 | 20 3d 20 6e 75 6d 5f 6d |vedalloc| = num_m|
|00003250| 61 73 73 5f 61 6c 6c 6f | 63 3b 0a 58 0a 58 20 20 |ass_allo|c;.X.X |
|00003260| 20 20 73 70 72 69 6e 67 | 73 5f 73 61 76 65 20 3d | spring|s_save =|
|00003270| 20 28 73 70 72 69 6e 67 | 20 2a 29 78 6d 61 6c 6c | (spring| *)xmall|
|00003280| 6f 63 28 73 69 7a 65 6f | 66 28 73 70 72 69 6e 67 |oc(sizeo|f(spring|
|00003290| 29 20 2a 20 6e 75 6d 5f | 73 70 72 69 6e 67 5f 61 |) * num_|spring_a|
|000032a0| 6c 6c 6f 63 29 3b 0a 58 | 20 20 20 20 62 63 6f 70 |lloc);.X| bcop|
|000032b0| 79 28 73 70 72 69 6e 67 | 73 2c 20 73 70 72 69 6e |y(spring|s, sprin|
|000032c0| 67 73 5f 73 61 76 65 2c | 20 73 69 7a 65 6f 66 28 |gs_save,| sizeof(|
|000032d0| 73 70 72 69 6e 67 29 20 | 2a 20 6e 75 6d 5f 73 70 |spring) |* num_sp|
|000032e0| 72 69 6e 67 5f 61 6c 6c | 6f 63 29 3b 0a 58 20 20 |ring_all|oc);.X |
|000032f0| 20 20 6e 75 6d 5f 73 70 | 72 69 6e 67 5f 73 61 76 | num_sp|ring_sav|
|00003300| 65 64 20 3d 20 6e 75 6d | 5f 73 70 72 69 6e 67 3b |ed = num|_spring;|
|00003310| 0a 58 20 20 20 20 6e 75 | 6d 5f 73 70 72 69 6e 67 |.X nu|m_spring|
|00003320| 5f 73 61 76 65 64 61 6c | 6c 6f 63 20 3d 20 6e 75 |_savedal|loc = nu|
|00003330| 6d 5f 73 70 72 69 6e 67 | 5f 61 6c 6c 6f 63 3b 0a |m_spring|_alloc;.|
|00003340| 58 7d 0a 58 0a 58 2f 2a | 20 6e 65 61 72 65 73 74 |X}.X.X/*| nearest|
|00003350| 5f 6f 62 6a 65 63 74 3a | 20 20 46 69 6e 64 20 74 |_object:| Find t|
|00003360| 68 65 20 6e 65 61 72 65 | 73 74 20 73 70 72 69 6e |he neare|st sprin|
|00003370| 67 20 6f 72 20 6d 61 73 | 73 20 74 6f 20 74 68 65 |g or mas|s to the|
|00003380| 20 70 6f 73 69 74 69 6f | 6e 0a 58 20 20 20 28 78 | positio|n.X (x|
|00003390| 2c 79 29 2c 20 6f 72 20 | 72 65 74 75 72 6e 20 2d |,y), or |return -|
|000033a0| 31 20 69 66 20 6e 6f 6e | 65 20 61 72 65 20 63 6c |1 if non|e are cl|
|000033b0| 6f 73 65 2e 20 20 53 65 | 74 20 69 73 5f 6d 61 73 |ose. Se|t is_mas|
|000033c0| 73 20 61 63 63 6f 72 64 | 69 6e 67 6c 79 0a 58 20 |s accord|ingly.X |
|000033d0| 20 20 2a 2f 0a 58 69 6e | 74 20 6e 65 61 72 65 73 | */.Xin|t neares|
|000033e0| 74 5f 6f 62 6a 65 63 74 | 28 78 2c 20 79 2c 20 69 |t_object|(x, y, i|
|000033f0| 73 5f 6d 61 73 73 29 0a | 58 69 6e 74 20 78 2c 20 |s_mass).|Xint x, |
|00003400| 79 3b 0a 58 62 6f 6f 6c | 65 61 6e 20 2a 69 73 5f |y;.Xbool|ean *is_|
|00003410| 6d 61 73 73 3b 0a 58 7b | 0a 58 20 20 20 20 69 6e |mass;.X{|.X in|
|00003420| 74 20 69 2c 20 63 6c 6f | 73 65 73 74 20 3d 20 2d |t i, clo|sest = -|
|00003430| 31 3b 0a 58 20 20 20 20 | 64 6f 75 62 6c 65 20 64 |1;.X |double d|
|00003440| 69 73 74 2c 20 6d 69 6e | 5f 64 69 73 74 20 3d 20 |ist, min|_dist = |
|00003450| 4d 50 52 4f 58 49 4d 49 | 54 59 20 2a 20 4d 50 52 |MPROXIMI|TY * MPR|
|00003460| 4f 58 49 4d 49 54 59 2c | 20 72 61 74 69 6e 67 2c |OXIMITY,| rating,|
|00003470| 20 6d 69 6e 5f 72 61 74 | 69 6e 67 20 3d 20 64 72 | min_rat|ing = dr|
|00003480| 61 77 5f 77 69 64 20 2a | 20 64 72 61 77 5f 68 74 |aw_wid *| draw_ht|
|00003490| 3b 0a 58 20 20 20 20 62 | 6f 6f 6c 65 61 6e 20 6d |;.X b|oolean m|
|000034a0| 61 73 73 65 73 5f 6f 6e | 6c 79 20 3d 20 2a 69 73 |asses_on|ly = *is|
|000034b0| 5f 6d 61 73 73 3b 0a 58 | 0a 58 20 20 20 20 2a 69 |_mass;.X|.X *i|
|000034c0| 73 5f 6d 61 73 73 20 3d | 20 54 52 55 45 3b 0a 58 |s_mass =| TRUE;.X|
|000034d0| 0a 58 20 20 20 20 69 66 | 20 28 6d 61 73 73 65 73 |.X if| (masses|
|000034e0| 5f 6f 6e 6c 79 29 0a 58 | 20 20 20 20 20 20 6d 69 |_only).X| mi|
|000034f0| 6e 5f 64 69 73 74 20 3d | 20 6d 69 6e 5f 64 69 73 |n_dist =| min_dis|
|00003500| 74 20 2a 20 33 36 3b 0a | 58 0a 58 20 20 20 20 2f |t * 36;.|X.X /|
|00003510| 2a 20 46 69 6e 64 20 63 | 6c 6f 73 65 73 74 20 6d |* Find c|losest m|
|00003520| 61 73 73 20 2a 2f 0a 58 | 20 20 20 20 66 6f 72 20 |ass */.X| for |
|00003530| 28 69 20 3d 20 30 3b 20 | 69 20 3c 20 6e 75 6d 5f |(i = 0; |i < num_|
|00003540| 6d 61 73 73 3b 20 69 2b | 2b 29 20 7b 0a 58 09 69 |mass; i+|+) {.X.i|
|00003550| 66 20 28 6d 61 73 73 65 | 73 5b 69 5d 2e 73 74 61 |f (masse|s[i].sta|
|00003560| 74 75 73 20 26 20 53 5f | 41 4c 49 56 45 29 20 7b |tus & S_|ALIVE) {|
|00003570| 0a 58 09 20 20 20 20 69 | 66 20 28 28 64 69 73 74 |.X. i|f ((dist|
|00003580| 20 3d 20 53 51 52 28 6d | 61 73 73 65 73 5b 69 5d | = SQR(m|asses[i]|
|00003590| 2e 78 20 2d 20 28 64 6f | 75 62 6c 65 29 78 29 20 |.x - (do|uble)x) |
|000035a0| 2b 20 53 51 52 28 6d 61 | 73 73 65 73 5b 69 5d 2e |+ SQR(ma|sses[i].|
|000035b0| 79 20 2d 20 28 64 6f 75 | 62 6c 65 29 79 29 20 2d |y - (dou|ble)y) -|
|000035c0| 20 28 64 6f 75 62 6c 65 | 29 53 51 52 28 6d 61 73 | (double|)SQR(mas|
|000035d0| 73 65 73 5b 69 5d 2e 72 | 61 64 69 75 73 29 29 20 |ses[i].r|adius)) |
|000035e0| 3c 20 6d 69 6e 5f 64 69 | 73 74 29 20 7b 0a 58 09 |< min_di|st) {.X.|
|000035f0| 09 72 61 74 69 6e 67 20 | 3d 20 53 51 52 28 6d 61 |.rating |= SQR(ma|
|00003600| 73 73 65 73 5b 69 5d 2e | 78 20 2d 20 28 64 6f 75 |sses[i].|x - (dou|
|00003610| 62 6c 65 29 78 29 20 2b | 20 53 51 52 28 6d 61 73 |ble)x) +| SQR(mas|
|00003620| 73 65 73 5b 69 5d 2e 79 | 20 2d 20 28 64 6f 75 62 |ses[i].y| - (doub|
|00003630| 6c 65 29 79 29 3b 0a 58 | 09 09 69 66 20 28 72 61 |le)y);.X|..if (ra|
|00003640| 74 69 6e 67 20 3c 20 6d | 69 6e 5f 72 61 74 69 6e |ting < m|in_ratin|
|00003650| 67 29 20 7b 0a 58 09 09 | 20 20 20 20 6d 69 6e 5f |g) {.X..| min_|
|00003660| 64 69 73 74 20 3d 20 64 | 69 73 74 3b 0a 58 09 09 |dist = d|ist;.X..|
|00003670| 20 20 20 20 6d 69 6e 5f | 72 61 74 69 6e 67 20 3d | min_|rating =|
|00003680| 20 72 61 74 69 6e 67 3b | 0a 58 09 09 20 20 20 20 | rating;|.X.. |
|00003690| 63 6c 6f 73 65 73 74 20 | 3d 20 69 3b 0a 58 09 09 |closest |= i;.X..|
|000036a0| 7d 0a 58 09 20 20 20 20 | 7d 0a 58 09 7d 0a 58 20 |}.X. |}.X.}.X |
|000036b0| 20 20 20 7d 0a 58 0a 58 | 20 20 20 20 69 66 20 28 | }.X.X| if (|
|000036c0| 63 6c 6f 73 65 73 74 20 | 21 3d 20 2d 31 29 0a 58 |closest |!= -1).X|
|000036d0| 20 20 20 20 20 20 72 65 | 74 75 72 6e 20 63 6c 6f | re|turn clo|
|000036e0| 73 65 73 74 3b 0a 58 0a | 58 20 20 20 20 69 66 20 |sest;.X.|X if |
|000036f0| 28 6d 61 73 73 65 73 5f | 6f 6e 6c 79 29 0a 58 20 |(masses_|only).X |
|00003700| 20 20 20 20 20 72 65 74 | 75 72 6e 20 2d 31 3b 0a | ret|urn -1;.|
|00003710| 58 0a 58 20 20 20 20 2a | 69 73 5f 6d 61 73 73 20 |X.X *|is_mass |
|00003720| 3d 20 54 52 55 45 3b 0a | 58 0a 58 20 20 20 20 6d |= TRUE;.|X.X m|
|00003730| 69 6e 5f 64 69 73 74 20 | 3d 20 53 50 52 4f 58 49 |in_dist |= SPROXI|
|00003740| 4d 49 54 59 3b 0a 58 0a | 58 20 20 20 20 2f 2a 20 |MITY;.X.|X /* |
|00003750| 46 69 6e 64 20 63 6c 6f | 73 65 73 74 20 73 70 72 |Find clo|sest spr|
|00003760| 69 6e 67 20 2a 2f 0a 58 | 20 20 20 20 66 6f 72 20 |ing */.X| for |
|00003770| 28 69 20 3d 20 30 3b 20 | 69 20 3c 20 6e 75 6d 5f |(i = 0; |i < num_|
|00003780| 73 70 72 69 6e 67 3b 20 | 69 2b 2b 29 20 7b 0a 58 |spring; |i++) {.X|
|00003790| 09 64 6f 75 62 6c 65 20 | 78 31 2c 20 78 32 2c 20 |.double |x1, x2, |
|000037a0| 79 31 2c 20 79 32 3b 0a | 58 0a 58 09 69 66 20 28 |y1, y2;.|X.X.if (|
|000037b0| 73 70 72 69 6e 67 73 5b | 69 5d 2e 73 74 61 74 75 |springs[|i].statu|
|000037c0| 73 20 26 20 53 5f 41 4c | 49 56 45 29 20 7b 0a 58 |s & S_AL|IVE) {.X|
|000037d0| 09 20 20 20 20 78 31 20 | 3d 20 6d 61 73 73 65 73 |. x1 |= masses|
|000037e0| 5b 73 70 72 69 6e 67 73 | 5b 69 5d 2e 6d 31 5d 2e |[springs|[i].m1].|
|000037f0| 78 3b 0a 58 09 20 20 20 | 20 79 31 20 3d 20 6d 61 |x;.X. | y1 = ma|
|00003800| 73 73 65 73 5b 73 70 72 | 69 6e 67 73 5b 69 5d 2e |sses[spr|ings[i].|
|00003810| 6d 31 5d 2e 79 3b 0a 58 | 09 20 20 20 20 78 32 20 |m1].y;.X|. x2 |
|00003820| 3d 20 6d 61 73 73 65 73 | 5b 73 70 72 69 6e 67 73 |= masses|[springs|
|00003830| 5b 69 5d 2e 6d 32 5d 2e | 78 3b 0a 58 09 20 20 20 |[i].m2].|x;.X. |
|00003840| 20 79 32 20 3d 20 6d 61 | 73 73 65 73 5b 73 70 72 | y2 = ma|sses[spr|
|00003850| 69 6e 67 73 5b 69 5d 2e | 6d 32 5d 2e 79 3b 0a 58 |ings[i].|m2].y;.X|
|00003860| 09 20 20 20 20 0a 58 09 | 20 20 20 20 69 66 20 28 |. .X.| if (|
|00003870| 78 20 3e 20 4d 49 4e 28 | 78 31 2c 20 78 32 29 20 |x > MIN(|x1, x2) |
|00003880| 2d 20 53 50 52 4f 58 49 | 4d 49 54 59 20 26 26 20 |- SPROXI|MITY && |
|00003890| 78 20 3c 20 4d 41 58 28 | 78 31 2c 20 78 32 29 20 |x < MAX(|x1, x2) |
|000038a0| 2b 20 53 50 52 4f 58 49 | 4d 49 54 59 20 26 26 0a |+ SPROXI|MITY &&.|
|000038b0| 58 09 09 79 20 3e 20 4d | 49 4e 28 79 31 2c 20 79 |X..y > M|IN(y1, y|
|000038c0| 32 29 20 2d 20 53 50 52 | 4f 58 49 4d 49 54 59 20 |2) - SPR|OXIMITY |
|000038d0| 26 26 20 79 20 3c 20 4d | 41 58 28 79 31 2c 20 79 |&& y < M|AX(y1, y|
|000038e0| 32 29 20 2b 20 53 50 52 | 4f 58 49 4d 49 54 59 29 |2) + SPR|OXIMITY)|
|000038f0| 20 7b 0a 58 09 09 64 6f | 75 62 6c 65 20 61 31 2c | {.X..do|uble a1,|
|00003900| 20 62 31 2c 20 63 31 2c | 20 64 41 42 2c 20 64 3b | b1, c1,| dAB, d;|
|00003910| 0a 58 09 09 0a 58 09 09 | 61 31 20 3d 20 79 32 20 |.X...X..|a1 = y2 |
|00003920| 2d 20 79 31 3b 0a 58 09 | 09 62 31 20 3d 20 78 31 |- y1;.X.|.b1 = x1|
|00003930| 20 2d 20 78 32 3b 0a 58 | 09 09 63 31 20 3d 20 79 | - x2;.X|..c1 = y|
|00003940| 31 20 2a 20 78 32 20 2d | 20 79 32 20 2a 20 78 31 |1 * x2 -| y2 * x1|
|00003950| 3b 0a 58 09 09 64 41 42 | 20 3d 20 73 71 72 74 28 |;.X..dAB| = sqrt(|
|00003960| 28 64 6f 75 62 6c 65 29 | 28 61 31 2a 61 31 20 2b |(double)|(a1*a1 +|
|00003970| 20 62 31 2a 62 31 29 29 | 3b 0a 58 09 09 64 20 3d | b1*b1))|;.X..d =|
|00003980| 20 28 78 20 2a 20 61 31 | 20 2b 20 79 20 2a 20 62 | (x * a1| + y * b|
|00003990| 31 20 2b 20 63 31 29 20 | 2f 20 64 41 42 3b 0a 58 |1 + c1) |/ dAB;.X|
|000039a0| 09 09 0a 58 09 09 64 69 | 73 74 20 3d 20 41 42 53 |...X..di|st = ABS|
|000039b0| 28 64 29 3b 0a 58 09 09 | 0a 58 09 09 69 66 20 28 |(d);.X..|.X..if (|
|000039c0| 64 69 73 74 20 3c 20 6d | 69 6e 5f 64 69 73 74 29 |dist < m|in_dist)|
|000039d0| 20 7b 0a 58 09 09 20 20 | 20 20 6d 69 6e 5f 64 69 | {.X.. | min_di|
|000039e0| 73 74 20 3d 20 64 69 73 | 74 3b 0a 58 09 09 20 20 |st = dis|t;.X.. |
|000039f0| 20 20 63 6c 6f 73 65 73 | 74 20 3d 20 69 3b 0a 58 | closes|t = i;.X|
|00003a00| 09 09 20 20 20 20 2a 69 | 73 5f 6d 61 73 73 20 3d |.. *i|s_mass =|
|00003a10| 20 46 41 4c 53 45 3b 0a | 58 09 09 7d 0a 58 09 20 | FALSE;.|X..}.X. |
|00003a20| 20 20 20 7d 0a 58 09 7d | 0a 58 20 20 20 20 7d 0a | }.X.}|.X }.|
|00003a30| 58 0a 58 20 20 20 20 72 | 65 74 75 72 6e 20 63 6c |X.X r|eturn cl|
|00003a40| 6f 73 65 73 74 3b 0a 58 | 7d 0a 58 0a 58 76 6f 69 |osest;.X|}.X.Xvoi|
|00003a50| 64 20 65 76 61 6c 5f 73 | 65 6c 65 63 74 69 6f 6e |d eval_s|election|
|00003a60| 28 29 0a 58 7b 0a 58 20 | 20 20 20 69 6e 74 20 69 |().X{.X | int i|
|00003a70| 3b 0a 58 20 20 20 20 64 | 6f 75 62 6c 65 20 73 65 |;.X d|ouble se|
|00003a80| 6c 5f 6d 61 73 73 2c 20 | 73 65 6c 5f 65 6c 61 73 |l_mass, |sel_elas|
|00003a90| 2c 20 73 65 6c 5f 6b 73 | 2c 20 73 65 6c 5f 6b 64 |, sel_ks|, sel_kd|
|00003aa0| 3b 0a 58 20 20 20 20 62 | 6f 6f 6c 65 61 6e 20 73 |;.X b|oolean s|
|00003ab0| 65 6c 5f 66 69 78 3b 0a | 58 20 20 20 20 62 6f 6f |el_fix;.|X boo|
|00003ac0| 6c 65 61 6e 20 66 6f 75 | 6e 64 20 3d 20 46 41 4c |lean fou|nd = FAL|
|00003ad0| 53 45 2c 20 63 68 61 6e | 67 65 64 20 3d 20 46 41 |SE, chan|ged = FA|
|00003ae0| 4c 53 45 3b 0a 58 20 20 | 20 20 62 6f 6f 6c 65 61 |LSE;.X | boolea|
|00003af0| 6e 20 6d 61 73 73 5f 73 | 61 6d 65 2c 20 65 6c 61 |n mass_s|ame, ela|
|00003b00| 73 5f 73 61 6d 65 2c 20 | 6b 73 5f 73 61 6d 65 2c |s_same, |ks_same,|
|00003b10| 20 6b 64 5f 73 61 6d 65 | 2c 20 66 69 78 5f 73 61 | kd_same|, fix_sa|
|00003b20| 6d 65 3b 0a 58 0a 58 20 | 20 20 20 66 6f 72 20 28 |me;.X.X | for (|
|00003b30| 69 20 3d 20 30 3b 20 69 | 20 3c 20 6e 75 6d 5f 6d |i = 0; i| < num_m|
|00003b40| 61 73 73 3b 20 69 2b 2b | 29 20 7b 0a 58 09 69 66 |ass; i++|) {.X.if|
|00003b50| 20 28 6d 61 73 73 65 73 | 5b 69 5d 2e 73 74 61 74 | (masses|[i].stat|
|00003b60| 75 73 20 26 20 53 5f 53 | 45 4c 45 43 54 45 44 29 |us & S_S|ELECTED)|
|00003b70| 20 7b 0a 58 09 20 20 20 | 20 69 66 20 28 66 6f 75 | {.X. | if (fou|
|00003b80| 6e 64 29 20 7b 0a 58 09 | 09 69 66 20 28 6d 61 73 |nd) {.X.|.if (mas|
|00003b90| 73 5f 73 61 6d 65 20 26 | 26 20 6d 61 73 73 65 73 |s_same &|& masses|
|00003ba0| 5b 69 5d 2e 6d 61 73 73 | 20 21 3d 20 73 65 6c 5f |[i].mass| != sel_|
|00003bb0| 6d 61 73 73 29 20 7b 0a | 58 09 09 20 20 20 20 6d |mass) {.|X.. m|
|00003bc0| 61 73 73 5f 73 61 6d 65 | 20 3d 20 46 41 4c 53 45 |ass_same| = FALSE|
|00003bd0| 3b 0a 58 09 09 7d 0a 58 | 09 09 69 66 20 28 65 6c |;.X..}.X|..if (el|
|00003be0| 61 73 5f 73 61 6d 65 20 | 26 26 20 6d 61 73 73 65 |as_same |&& masse|
|00003bf0| 73 5b 69 5d 2e 65 6c 61 | 73 74 69 63 20 21 3d 20 |s[i].ela|stic != |
|00003c00| 73 65 6c 5f 65 6c 61 73 | 29 20 7b 0a 58 09 09 20 |sel_elas|) {.X.. |
|00003c10| 20 20 20 65 6c 61 73 5f | 73 61 6d 65 20 3d 20 46 | elas_|same = F|
|00003c20| 41 4c 53 45 3b 0a 58 09 | 09 7d 0a 58 09 09 69 66 |ALSE;.X.|.}.X..if|
|00003c30| 20 28 66 69 78 5f 73 61 | 6d 65 20 26 26 20 28 6d | (fix_sa|me && (m|
|00003c40| 61 73 73 65 73 5b 69 5d | 2e 73 74 61 74 75 73 20 |asses[i]|.status |
|00003c50| 26 20 53 5f 46 49 58 45 | 44 29 29 20 7b 0a 58 09 |& S_FIXE|D)) {.X.|
|00003c60| 09 20 20 20 20 66 69 78 | 5f 73 61 6d 65 20 3d 20 |. fix|_same = |
|00003c70| 46 41 4c 53 45 3b 0a 58 | 09 09 7d 0a 58 09 20 20 |FALSE;.X|..}.X. |
|00003c80| 20 20 7d 20 65 6c 73 65 | 20 7b 0a 58 09 09 66 6f | } else| {.X..fo|
|00003c90| 75 6e 64 20 3d 20 54 52 | 55 45 3b 0a 58 09 09 73 |und = TR|UE;.X..s|
|00003ca0| 65 6c 5f 6d 61 73 73 20 | 3d 20 6d 61 73 73 65 73 |el_mass |= masses|
|00003cb0| 5b 69 5d 2e 6d 61 73 73 | 3b 0a 58 09 09 6d 61 73 |[i].mass|;.X..mas|
|00003cc0| 73 5f 73 61 6d 65 20 3d | 20 54 52 55 45 3b 0a 58 |s_same =| TRUE;.X|
|00003cd0| 09 09 73 65 6c 5f 65 6c | 61 73 20 3d 20 6d 61 73 |..sel_el|as = mas|
|00003ce0| 73 65 73 5b 69 5d 2e 65 | 6c 61 73 74 69 63 3b 0a |ses[i].e|lastic;.|
|00003cf0| 58 09 09 65 6c 61 73 5f | 73 61 6d 65 20 3d 20 54 |X..elas_|same = T|
|00003d00| 52 55 45 3b 0a 58 09 20 | 20 20 20 20 20 20 20 73 |RUE;.X. | s|
|00003d10| 65 6c 5f 66 69 78 20 3d | 20 28 6d 61 73 73 65 73 |el_fix =| (masses|
|00003d20| 5b 69 5d 2e 73 74 61 74 | 75 73 20 26 20 53 5f 46 |[i].stat|us & S_F|
|00003d30| 49 58 45 44 29 3b 0a 58 | 09 09 66 69 78 5f 73 61 |IXED);.X|..fix_sa|
|00003d40| 6d 65 20 3d 20 54 52 55 | 45 3b 0a 58 09 20 20 20 |me = TRU|E;.X. |
|00003d50| 20 7d 0a 58 09 7d 0a 58 | 20 20 20 20 7d 0a 58 0a | }.X.}.X| }.X.|
|00003d60| 58 20 20 20 20 69 66 20 | 28 66 6f 75 6e 64 29 20 |X if |(found) |
|00003d70| 7b 0a 58 09 69 66 20 28 | 6d 61 73 73 5f 73 61 6d |{.X.if (|mass_sam|
|00003d80| 65 20 26 26 20 73 65 6c | 5f 6d 61 73 73 20 21 3d |e && sel|_mass !=|
|00003d90| 20 6d 73 74 2e 63 75 72 | 5f 6d 61 73 73 29 20 7b | mst.cur|_mass) {|
|00003da0| 0a 58 09 20 20 20 20 6d | 73 74 2e 63 75 72 5f 6d |.X. m|st.cur_m|
|00003db0| 61 73 73 20 3d 20 73 65 | 6c 5f 6d 61 73 73 3b 0a |ass = se|l_mass;.|
|00003dc0| 58 09 20 20 20 20 63 68 | 61 6e 67 65 64 20 3d 20 |X. ch|anged = |
|00003dd0| 54 52 55 45 3b 0a 58 09 | 7d 0a 58 09 69 66 20 28 |TRUE;.X.|}.X.if (|
|00003de0| 65 6c 61 73 5f 73 61 6d | 65 20 26 26 20 73 65 6c |elas_sam|e && sel|
|00003df0| 5f 65 6c 61 73 20 21 3d | 20 6d 73 74 2e 63 75 72 |_elas !=| mst.cur|
|00003e00| 5f 72 65 73 74 29 20 7b | 0a 58 09 20 20 20 20 6d |_rest) {|.X. m|
|00003e10| 73 74 2e 63 75 72 5f 72 | 65 73 74 20 3d 20 73 65 |st.cur_r|est = se|
|00003e20| 6c 5f 65 6c 61 73 3b 0a | 58 09 20 20 20 20 63 68 |l_elas;.|X. ch|
|00003e30| 61 6e 67 65 64 20 3d 20 | 54 52 55 45 3b 0a 58 09 |anged = |TRUE;.X.|
|00003e40| 7d 0a 58 09 69 66 20 28 | 66 69 78 5f 73 61 6d 65 |}.X.if (|fix_same|
|00003e50| 20 26 26 20 73 65 6c 5f | 66 69 78 20 21 3d 20 6d | && sel_|fix != m|
|00003e60| 73 74 2e 66 69 78 5f 6d | 61 73 73 29 20 7b 0a 58 |st.fix_m|ass) {.X|
|00003e70| 09 20 20 20 20 6d 73 74 | 2e 66 69 78 5f 6d 61 73 |. mst|.fix_mas|
|00003e80| 73 20 3d 20 73 65 6c 5f | 66 69 78 3b 0a 58 09 20 |s = sel_|fix;.X. |
|00003e90| 20 20 20 63 68 61 6e 67 | 65 64 20 3d 20 54 52 55 | chang|ed = TRU|
|00003ea0| 45 3b 0a 58 09 7d 0a 58 | 20 20 20 20 7d 0a 58 09 |E;.X.}.X| }.X.|
|00003eb0| 0a 58 20 20 20 20 66 6f | 75 6e 64 20 3d 20 46 41 |.X fo|und = FA|
|00003ec0| 4c 53 45 3b 0a 58 20 20 | 20 20 66 6f 72 20 28 69 |LSE;.X | for (i|
|00003ed0| 20 3d 20 30 3b 20 69 20 | 3c 20 6e 75 6d 5f 73 70 | = 0; i |< num_sp|
|00003ee0| 72 69 6e 67 3b 20 69 2b | 2b 29 20 7b 0a 58 09 69 |ring; i+|+) {.X.i|
|00003ef0| 66 20 28 73 70 72 69 6e | 67 73 5b 69 5d 2e 73 74 |f (sprin|gs[i].st|
|00003f00| 61 74 75 73 20 26 20 53 | 5f 53 45 4c 45 43 54 45 |atus & S|_SELECTE|
|00003f10| 44 29 20 7b 0a 58 09 20 | 20 20 20 69 66 20 28 66 |D) {.X. | if (f|
|00003f20| 6f 75 6e 64 29 20 7b 0a | 58 09 09 69 66 20 28 6b |ound) {.|X..if (k|
|00003f30| 73 5f 73 61 6d 65 20 26 | 26 20 73 70 72 69 6e 67 |s_same &|& spring|
|00003f40| 73 5b 69 5d 2e 6b 73 20 | 21 3d 20 73 65 6c 5f 6b |s[i].ks |!= sel_k|
|00003f50| 73 29 20 7b 0a 58 09 09 | 20 20 20 20 6b 73 5f 73 |s) {.X..| ks_s|
|00003f60| 61 6d 65 20 3d 20 46 41 | 4c 53 45 3b 0a 58 09 09 |ame = FA|LSE;.X..|
|00003f70| 7d 0a 58 09 09 69 66 20 | 28 6b 73 5f 73 61 6d 65 |}.X..if |(ks_same|
|00003f80| 20 26 26 20 73 70 72 69 | 6e 67 73 5b 69 5d 2e 6b | && spri|ngs[i].k|
|00003f90| 73 20 21 3d 20 73 65 6c | 5f 6b 73 29 20 7b 0a 58 |s != sel|_ks) {.X|
|00003fa0| 09 09 20 20 20 20 6b 73 | 5f 73 61 6d 65 20 3d 20 |.. ks|_same = |
|00003fb0| 46 41 4c 53 45 3b 0a 58 | 09 09 7d 0a 58 09 20 20 |FALSE;.X|..}.X. |
|00003fc0| 20 20 7d 20 65 6c 73 65 | 20 7b 0a 58 09 09 66 6f | } else| {.X..fo|
|00003fd0| 75 6e 64 20 3d 20 54 52 | 55 45 3b 0a 58 09 09 73 |und = TR|UE;.X..s|
|00003fe0| 65 6c 5f 6b 73 20 3d 20 | 73 70 72 69 6e 67 73 5b |el_ks = |springs[|
|00003ff0| 69 5d 2e 6b 73 3b 0a 58 | 09 09 6b 73 5f 73 61 6d |i].ks;.X|..ks_sam|
|00004000| 65 20 3d 20 54 52 55 45 | 3b 0a 58 09 20 20 20 20 |e = TRUE|;.X. |
|00004010| 20 20 20 20 73 65 6c 5f | 6b 64 20 3d 20 73 70 72 | sel_|kd = spr|
|00004020| 69 6e 67 73 5b 69 5d 2e | 6b 64 3b 0a 58 09 09 6b |ings[i].|kd;.X..k|
|00004030| 64 5f 73 61 6d 65 20 3d | 20 54 52 55 45 3b 0a 58 |d_same =| TRUE;.X|
|00004040| 09 20 20 20 20 7d 0a 58 | 09 7d 0a 58 20 20 20 20 |. }.X|.}.X |
|00004050| 7d 0a 58 0a 58 20 20 20 | 20 69 66 20 28 66 6f 75 |}.X.X | if (fou|
|00004060| 6e 64 29 20 7b 0a 58 09 | 69 66 20 28 6b 73 5f 73 |nd) {.X.|if (ks_s|
|00004070| 61 6d 65 20 26 26 20 73 | 65 6c 5f 6b 73 20 21 3d |ame && s|el_ks !=|
|00004080| 20 6d 73 74 2e 63 75 72 | 5f 6b 73 29 20 7b 0a 58 | mst.cur|_ks) {.X|
|00004090| 09 20 20 20 20 6d 73 74 | 2e 63 75 72 5f 6b 73 20 |. mst|.cur_ks |
|000040a0| 3d 20 73 65 6c 5f 6b 73 | 3b 0a 58 09 20 20 20 20 |= sel_ks|;.X. |
|000040b0| 63 68 61 6e 67 65 64 20 | 3d 20 54 52 55 45 3b 0a |changed |= TRUE;.|
|000040c0| 58 09 7d 0a 58 09 69 66 | 20 28 6b 64 5f 73 61 6d |X.}.X.if| (kd_sam|
|000040d0| 65 20 26 26 20 73 65 6c | 5f 6b 64 20 21 3d 20 6d |e && sel|_kd != m|
|000040e0| 73 74 2e 63 75 72 5f 6b | 64 29 20 7b 0a 58 09 20 |st.cur_k|d) {.X. |
|000040f0| 20 20 20 6d 73 74 2e 63 | 75 72 5f 6b 64 20 3d 20 | mst.c|ur_kd = |
|00004100| 73 65 6c 5f 6b 64 3b 0a | 58 09 20 20 20 20 63 68 |sel_kd;.|X. ch|
|00004110| 61 6e 67 65 64 20 3d 20 | 54 52 55 45 3b 0a 58 09 |anged = |TRUE;.X.|
|00004120| 7d 0a 58 20 20 20 20 7d | 0a 58 0a 58 20 20 20 20 |}.X }|.X.X |
|00004130| 69 66 20 28 63 68 61 6e | 67 65 64 29 20 7b 0a 58 |if (chan|ged) {.X|
|00004140| 09 72 65 64 72 61 77 5f | 77 69 64 67 65 74 73 28 |.redraw_|widgets(|
|00004150| 46 41 4c 53 45 29 3b 0a | 58 20 20 20 20 7d 0a 58 |FALSE);.|X }.X|
|00004160| 7d 0a 58 0a 58 62 6f 6f | 6c 65 61 6e 20 61 6e 79 |}.X.Xboo|lean any|
|00004170| 74 68 69 6e 67 5f 73 65 | 6c 65 63 74 65 64 28 29 |thing_se|lected()|
|00004180| 0a 58 7b 0a 58 20 20 20 | 20 69 6e 74 20 69 3b 0a |.X{.X | int i;.|
|00004190| 58 0a 58 20 20 20 20 66 | 6f 72 20 28 69 20 3d 20 |X.X f|or (i = |
|000041a0| 30 3b 20 69 20 3c 20 6e | 75 6d 5f 6d 61 73 73 3b |0; i < n|um_mass;|
|000041b0| 20 69 2b 2b 29 20 7b 0a | 58 09 69 66 20 28 6d 61 | i++) {.|X.if (ma|
|000041c0| 73 73 65 73 5b 69 5d 2e | 73 74 61 74 75 73 20 26 |sses[i].|status &|
|000041d0| 20 53 5f 53 45 4c 45 43 | 54 45 44 29 0a 58 09 20 | S_SELEC|TED).X. |
|000041e0| 20 72 65 74 75 72 6e 20 | 54 52 55 45 3b 0a 58 20 | return |TRUE;.X |
|000041f0| 20 20 20 7d 0a 58 20 20 | 20 20 66 6f 72 20 28 69 | }.X | for (i|
|00004200| 20 3d 20 30 3b 20 69 20 | 3c 20 6e 75 6d 5f 73 70 | = 0; i |< num_sp|
|00004210| 72 69 6e 67 3b 20 69 2b | 2b 29 20 7b 0a 58 09 69 |ring; i+|+) {.X.i|
|00004220| 66 20 28 73 70 72 69 6e | 67 73 5b 69 5d 2e 73 74 |f (sprin|gs[i].st|
|00004230| 61 74 75 73 20 26 20 53 | 5f 53 45 4c 45 43 54 45 |atus & S|_SELECTE|
|00004240| 44 29 0a 58 09 20 20 72 | 65 74 75 72 6e 20 54 52 |D).X. r|eturn TR|
|00004250| 55 45 3b 0a 58 20 20 20 | 20 7d 0a 58 20 20 20 20 |UE;.X | }.X |
|00004260| 72 65 74 75 72 6e 20 46 | 41 4c 53 45 3b 0a 58 7d |return F|ALSE;.X}|
|00004270| 0a 58 0a 58 76 6f 69 64 | 20 73 65 6c 65 63 74 5f |.X.Xvoid| select_|
|00004280| 6f 62 6a 65 63 74 28 73 | 65 6c 65 63 74 69 6f 6e |object(s|election|
|00004290| 2c 20 69 73 5f 6d 61 73 | 73 2c 20 73 68 69 66 74 |, is_mas|s, shift|
|000042a0| 65 64 29 0a 58 69 6e 74 | 20 73 65 6c 65 63 74 69 |ed).Xint| selecti|
|000042b0| 6f 6e 3b 0a 58 62 6f 6f | 6c 65 61 6e 20 69 73 5f |on;.Xboo|lean is_|
|000042c0| 6d 61 73 73 2c 20 73 68 | 69 66 74 65 64 3b 0a 58 |mass, sh|ifted;.X|
|000042d0| 7b 0a 58 20 20 20 20 69 | 66 20 28 69 73 5f 6d 61 |{.X i|f (is_ma|
|000042e0| 73 73 29 20 7b 0a 58 09 | 69 66 20 28 73 68 69 66 |ss) {.X.|if (shif|
|000042f0| 74 65 64 29 20 7b 0a 58 | 09 20 20 20 20 6d 61 73 |ted) {.X|. mas|
|00004300| 73 65 73 5b 73 65 6c 65 | 63 74 69 6f 6e 5d 2e 73 |ses[sele|ction].s|
|00004310| 74 61 74 75 73 20 5e 3d | 20 53 5f 53 45 4c 45 43 |tatus ^=| S_SELEC|
|00004320| 54 45 44 3b 0a 58 09 7d | 20 65 6c 73 65 20 7b 0a |TED;.X.}| else {.|
|00004330| 58 09 20 20 20 20 6d 61 | 73 73 65 73 5b 73 65 6c |X. ma|sses[sel|
|00004340| 65 63 74 69 6f 6e 5d 2e | 73 74 61 74 75 73 20 7c |ection].|status ||
|00004350| 3d 20 53 5f 53 45 4c 45 | 43 54 45 44 3b 0a 58 09 |= S_SELE|CTED;.X.|
|00004360| 7d 0a 58 20 20 20 20 7d | 20 65 6c 73 65 20 7b 0a |}.X }| else {.|
|00004370| 58 09 69 66 20 28 73 68 | 69 66 74 65 64 29 20 7b |X.if (sh|ifted) {|
|00004380| 0a 58 09 20 20 20 20 73 | 70 72 69 6e 67 73 5b 73 |.X. s|prings[s|
|00004390| 65 6c 65 63 74 69 6f 6e | 5d 2e 73 74 61 74 75 73 |election|].status|
|000043a0| 20 5e 3d 20 53 5f 53 45 | 4c 45 43 54 45 44 3b 0a | ^= S_SE|LECTED;.|
|000043b0| 58 09 7d 20 65 6c 73 65 | 20 7b 0a 58 09 20 20 20 |X.} else| {.X. |
|000043c0| 20 73 70 72 69 6e 67 73 | 5b 73 65 6c 65 63 74 69 | springs|[selecti|
|000043d0| 6f 6e 5d 2e 73 74 61 74 | 75 73 20 7c 3d 20 53 5f |on].stat|us |= S_|
|000043e0| 53 45 4c 45 43 54 45 44 | 3b 0a 58 09 7d 0a 58 20 |SELECTED|;.X.}.X |
|000043f0| 20 20 20 7d 0a 58 7d 0a | 58 0a 58 76 6f 69 64 20 | }.X}.|X.Xvoid |
|00004400| 73 65 6c 65 63 74 5f 6f | 62 6a 65 63 74 73 28 75 |select_o|bjects(u|
|00004410| 6c 78 2c 20 75 6c 79 2c | 20 6c 72 78 2c 20 6c 72 |lx, uly,| lrx, lr|
|00004420| 79 2c 20 73 68 69 66 74 | 65 64 29 0a 58 69 6e 74 |y, shift|ed).Xint|
|00004430| 20 75 6c 78 2c 20 75 6c | 79 2c 20 6c 72 78 2c 20 | ulx, ul|y, lrx, |
|00004440| 6c 72 79 3b 0a 58 62 6f | 6f 6c 65 61 6e 20 73 68 |lry;.Xbo|olean sh|
|00004450| 69 66 74 65 64 3b 0a 58 | 7b 0a 58 20 20 20 20 69 |ifted;.X|{.X i|
|00004460| 6e 74 20 69 3b 0a 58 0a | 58 20 20 20 20 66 6f 72 |nt i;.X.|X for|
|00004470| 20 28 69 20 3d 20 30 3b | 20 69 20 3c 20 6e 75 6d | (i = 0;| i < num|
|00004480| 5f 6d 61 73 73 3b 20 69 | 2b 2b 29 20 7b 0a 58 09 |_mass; i|++) {.X.|
|00004490| 69 66 20 28 6d 61 73 73 | 65 73 5b 69 5d 2e 73 74 |if (mass|es[i].st|
|000044a0| 61 74 75 73 20 26 20 53 | 5f 41 4c 49 56 45 29 20 |atus & S|_ALIVE) |
|000044b0| 7b 0a 58 09 20 20 20 20 | 69 66 20 28 75 6c 78 20 |{.X. |if (ulx |
|000044c0| 3c 3d 20 6d 61 73 73 65 | 73 5b 69 5d 2e 78 20 26 |<= masse|s[i].x &|
|000044d0| 26 20 6d 61 73 73 65 73 | 5b 69 5d 2e 78 20 3c 3d |& masses|[i].x <=|
|000044e0| 20 6c 72 78 20 26 26 20 | 75 6c 79 20 3c 3d 20 6d | lrx && |uly <= m|
|000044f0| 61 73 73 65 73 5b 69 5d | 2e 79 20 26 26 20 6d 61 |asses[i]|.y && ma|
|00004500| 73 73 65 73 5b 69 5d 2e | 79 20 3c 3d 20 6c 72 79 |sses[i].|y <= lry|
|00004510| 29 20 7b 0a 58 09 09 73 | 65 6c 65 63 74 5f 6f 62 |) {.X..s|elect_ob|
|00004520| 6a 65 63 74 28 69 2c 20 | 54 52 55 45 2c 20 46 41 |ject(i, |TRUE, FA|
|00004530| 4c 53 45 29 3b 0a 58 09 | 20 20 20 20 7d 0a 58 09 |LSE);.X.| }.X.|
|00004540| 7d 0a 58 20 20 20 20 7d | 0a 58 0a 58 20 20 20 20 |}.X }|.X.X |
|00004550| 66 6f 72 20 28 69 20 3d | 20 30 3b 20 69 20 3c 20 |for (i =| 0; i < |
|00004560| 6e 75 6d 5f 73 70 72 69 | 6e 67 3b 20 69 2b 2b 29 |num_spri|ng; i++)|
|00004570| 20 7b 0a 58 09 69 66 20 | 28 73 70 72 69 6e 67 73 | {.X.if |(springs|
|00004580| 5b 69 5d 2e 73 74 61 74 | 75 73 20 26 20 53 5f 41 |[i].stat|us & S_A|
|00004590| 4c 49 56 45 29 20 7b 0a | 58 09 20 20 20 20 69 6e |LIVE) {.|X. in|
|000045a0| 74 20 6d 31 2c 20 6d 32 | 3b 0a 58 0a 58 09 20 20 |t m1, m2|;.X.X. |
|000045b0| 20 20 6d 31 20 3d 20 73 | 70 72 69 6e 67 73 5b 69 | m1 = s|prings[i|
|000045c0| 5d 2e 6d 31 3b 0a 58 09 | 20 20 20 20 6d 32 20 3d |].m1;.X.| m2 =|
|000045d0| 20 73 70 72 69 6e 67 73 | 5b 69 5d 2e 6d 32 3b 0a | springs|[i].m2;.|
|000045e0| 58 0a 58 09 20 20 20 20 | 69 66 20 28 75 6c 78 20 |X.X. |if (ulx |
|000045f0| 3c 3d 20 6d 61 73 73 65 | 73 5b 6d 31 5d 2e 78 20 |<= masse|s[m1].x |
|00004600| 26 26 20 6d 61 73 73 65 | 73 5b 6d 31 5d 2e 78 20 |&& masse|s[m1].x |
|00004610| 3c 3d 20 6c 72 78 20 26 | 26 20 75 6c 79 20 3c 3d |<= lrx &|& uly <=|
|00004620| 20 6d 61 73 73 65 73 5b | 6d 31 5d 2e 79 20 26 26 | masses[|m1].y &&|
|00004630| 20 6d 61 73 73 65 73 5b | 6d 31 5d 2e 79 20 3c 3d | masses[|m1].y <=|
|00004640| 20 6c 72 79 20 26 26 0a | 58 09 09 75 6c 78 20 3c | lry &&.|X..ulx <|
|00004650| 3d 20 6d 61 73 73 65 73 | 5b 6d 32 5d 2e 78 20 26 |= masses|[m2].x &|
|00004660| 26 20 6d 61 73 73 65 73 | 5b 6d 32 5d 2e 78 20 3c |& masses|[m2].x <|
|00004670| 3d 20 6c 72 78 20 26 26 | 20 75 6c 79 20 3c 3d 20 |= lrx &&| uly <= |
|00004680| 6d 61 73 73 65 73 5b 6d | 32 5d 2e 79 20 26 26 20 |masses[m|2].y && |
|00004690| 6d 61 73 73 65 73 5b 6d | 32 5d 2e 79 20 3c 3d 20 |masses[m|2].y <= |
|000046a0| 6c 72 79 29 20 7b 0a 58 | 09 09 73 65 6c 65 63 74 |lry) {.X|..select|
|000046b0| 5f 6f 62 6a 65 63 74 28 | 69 2c 20 46 41 4c 53 45 |_object(|i, FALSE|
|000046c0| 2c 20 46 41 4c 53 45 29 | 3b 0a 58 09 20 20 20 20 |, FALSE)|;.X. |
|000046d0| 7d 0a 58 09 7d 0a 58 20 | 20 20 20 7d 20 20 20 20 |}.X.}.X | } |
|000046e0| 20 20 20 20 0a 58 7d 0a | 58 0a 58 76 6f 69 64 20 | .X}.|X.Xvoid |
|000046f0| 75 6e 73 65 6c 65 63 74 | 5f 61 6c 6c 28 29 0a 58 |unselect|_all().X|
|00004700| 7b 0a 58 20 20 20 20 69 | 6e 74 20 69 3b 0a 58 0a |{.X i|nt i;.X.|
|00004710| 58 20 20 20 20 66 6f 72 | 20 28 69 20 3d 20 30 3b |X for| (i = 0;|
|00004720| 20 69 20 3c 20 6e 75 6d | 5f 6d 61 73 73 3b 20 69 | i < num|_mass; i|
|00004730| 2b 2b 29 20 7b 0a 58 09 | 69 66 20 28 6d 61 73 73 |++) {.X.|if (mass|
|00004740| 65 73 5b 69 5d 2e 73 74 | 61 74 75 73 20 26 20 53 |es[i].st|atus & S|
|00004750| 5f 53 45 4c 45 43 54 45 | 44 29 20 7b 0a 58 09 20 |_SELECTE|D) {.X. |
|00004760| 20 20 20 6d 61 73 73 65 | 73 5b 69 5d 2e 73 74 61 | masse|s[i].sta|
|00004770| 74 75 73 20 26 3d 20 7e | 53 5f 53 45 4c 45 43 54 |tus &= ~|S_SELECT|
|00004780| 45 44 3b 0a 58 09 7d 0a | 58 20 20 20 20 7d 0a 58 |ED;.X.}.|X }.X|
|00004790| 0a 58 20 20 20 20 66 6f | 72 20 28 69 20 3d 20 30 |.X fo|r (i = 0|
|000047a0| 3b 20 69 20 3c 20 6e 75 | 6d 5f 73 70 72 69 6e 67 |; i < nu|m_spring|
|000047b0| 3b 20 69 2b 2b 29 20 7b | 0a 58 09 69 66 20 28 73 |; i++) {|.X.if (s|
|000047c0| 70 72 69 6e 67 73 5b 69 | 5d 2e 73 74 61 74 75 73 |prings[i|].status|
|000047d0| 20 26 20 53 5f 53 45 4c | 45 43 54 45 44 29 20 7b | & S_SEL|ECTED) {|
|000047e0| 0a 58 09 20 20 20 20 73 | 70 72 69 6e 67 73 5b 69 |.X. s|prings[i|
|000047f0| 5d 2e 73 74 61 74 75 73 | 20 26 3d 20 7e 53 5f 53 |].status| &= ~S_S|
|00004800| 45 4c 45 43 54 45 44 3b | 0a 58 09 7d 0a 58 20 20 |ELECTED;|.X.}.X |
|00004810| 20 20 7d 20 20 20 20 0a | 58 7d 0a 58 0a 58 76 6f | } .|X}.X.Xvo|
|00004820| 69 64 20 73 65 6c 65 63 | 74 5f 61 6c 6c 28 29 0a |id selec|t_all().|
|00004830| 58 7b 0a 58 20 20 20 20 | 69 6e 74 20 69 3b 0a 58 |X{.X |int i;.X|
|00004840| 0a 58 20 20 20 20 66 6f | 72 20 28 69 20 3d 20 30 |.X fo|r (i = 0|
|00004850| 3b 20 69 20 3c 20 6e 75 | 6d 5f 6d 61 73 73 3b 20 |; i < nu|m_mass; |
|00004860| 69 2b 2b 29 20 7b 0a 58 | 09 69 66 20 28 6d 61 73 |i++) {.X|.if (mas|
|00004870| 73 65 73 5b 69 5d 2e 73 | 74 61 74 75 73 20 26 20 |ses[i].s|tatus & |
|00004880| 53 5f 41 4c 49 56 45 29 | 20 7b 0a 58 09 20 20 20 |S_ALIVE)| {.X. |
|00004890| 20 6d 61 73 73 65 73 5b | 69 5d 2e 73 74 61 74 75 | masses[|i].statu|
|000048a0| 73 20 7c 3d 20 53 5f 53 | 45 4c 45 43 54 45 44 3b |s |= S_S|ELECTED;|
|000048b0| 0a 58 09 7d 0a 58 20 20 | 20 20 7d 0a 58 0a 58 20 |.X.}.X | }.X.X |
|000048c0| 20 20 20 66 6f 72 20 28 | 69 20 3d 20 30 3b 20 69 | for (|i = 0; i|
|000048d0| 20 3c 20 6e 75 6d 5f 73 | 70 72 69 6e 67 3b 20 69 | < num_s|pring; i|
|000048e0| 2b 2b 29 20 7b 0a 58 09 | 69 66 20 28 73 70 72 69 |++) {.X.|if (spri|
|000048f0| 6e 67 73 5b 69 5d 2e 73 | 74 61 74 75 73 20 26 20 |ngs[i].s|tatus & |
|00004900| 53 5f 41 4c 49 56 45 29 | 20 7b 0a 58 09 20 20 20 |S_ALIVE)| {.X. |
|00004910| 20 73 70 72 69 6e 67 73 | 5b 69 5d 2e 73 74 61 74 | springs|[i].stat|
|00004920| 75 73 20 7c 3d 20 53 5f | 53 45 4c 45 43 54 45 44 |us |= S_|SELECTED|
|00004930| 3b 0a 58 09 7d 0a 58 20 | 20 20 20 7d 20 20 20 20 |;.X.}.X | } |
|00004940| 0a 58 7d 0a 58 0a 58 76 | 6f 69 64 20 64 75 70 6c |.X}.X.Xv|oid dupl|
|00004950| 69 63 61 74 65 5f 73 65 | 6c 65 63 74 65 64 28 29 |icate_se|lected()|
|00004960| 0a 58 7b 0a 58 20 20 20 | 20 69 6e 74 20 69 2c 20 |.X{.X | int i, |
|00004970| 6a 2c 20 2a 6d 61 70 66 | 72 6f 6d 2c 20 2a 6d 61 |j, *mapf|rom, *ma|
|00004980| 70 74 6f 2c 20 6e 75 6d | 5f 6d 61 70 2c 20 6e 75 |pto, num|_map, nu|
|00004990| 6d 5f 6d 61 70 5f 61 6c | 6c 6f 63 2c 20 73 70 72 |m_map_al|loc, spr|
|000049a0| 69 6e 67 5f 73 74 61 72 | 74 3b 0a 58 20 20 20 20 |ing_star|t;.X |
|000049b0| 69 6e 74 20 77 68 69 63 | 68 3b 0a 58 0a 58 20 20 |int whic|h;.X.X |
|000049c0| 20 20 73 70 72 69 6e 67 | 5f 73 74 61 72 74 20 3d | spring|_start =|
|000049d0| 20 6e 75 6d 5f 73 70 72 | 69 6e 67 3b 0a 58 0a 58 | num_spr|ing;.X.X|
|000049e0| 20 20 20 20 6e 75 6d 5f | 6d 61 70 20 3d 20 30 3b | num_|map = 0;|
|000049f0| 0a 58 20 20 20 20 6e 75 | 6d 5f 6d 61 70 5f 61 6c |.X nu|m_map_al|
|00004a00| 6c 6f 63 20 3d 20 41 4c | 4c 4f 43 5f 53 49 5a 45 |loc = AL|LOC_SIZE|
|00004a10| 3b 0a 58 20 20 20 20 6d | 61 70 66 72 6f 6d 20 3d |;.X m|apfrom =|
|00004a20| 20 28 69 6e 74 20 2a 29 | 78 6d 61 6c 6c 6f 63 28 | (int *)|xmalloc(|
|00004a30| 73 69 7a 65 6f 66 28 69 | 6e 74 29 20 2a 20 6e 75 |sizeof(i|nt) * nu|
|00004a40| 6d 5f 6d 61 70 5f 61 6c | 6c 6f 63 29 3b 0a 58 20 |m_map_al|loc);.X |
|00004a50| 20 20 20 6d 61 70 74 6f | 20 3d 20 28 69 6e 74 20 | mapto| = (int |
|00004a60| 2a 29 78 6d 61 6c 6c 6f | 63 28 73 69 7a 65 6f 66 |*)xmallo|c(sizeof|
|00004a70| 28 69 6e 74 29 20 2a 20 | 6e 75 6d 5f 6d 61 70 5f |(int) * |num_map_|
|00004a80| 61 6c 6c 6f 63 29 3b 0a | 58 0a 58 20 20 20 20 66 |alloc);.|X.X f|
|00004a90| 6f 72 20 28 69 20 3d 20 | 30 3b 20 69 20 3c 20 6e |or (i = |0; i < n|
|00004aa0| 75 6d 5f 6d 61 73 73 3b | 20 69 2b 2b 29 20 7b 0a |um_mass;| i++) {.|
|00004ab0| 58 09 69 66 20 28 6d 61 | 73 73 65 73 5b 69 5d 2e |X.if (ma|sses[i].|
|00004ac0| 73 74 61 74 75 73 20 26 | 20 53 5f 53 45 4c 45 43 |status &| S_SELEC|
|00004ad0| 54 45 44 29 20 7b 0a 58 | 09 20 20 20 20 69 66 20 |TED) {.X|. if |
|00004ae0| 28 6e 75 6d 5f 6d 61 70 | 20 3e 3d 20 6e 75 6d 5f |(num_map| >= num_|
|00004af0| 6d 61 70 5f 61 6c 6c 6f | 63 29 20 7b 0a 58 09 09 |map_allo|c) {.X..|
|00004b00| 6e 75 6d 5f 6d 61 70 5f | 61 6c 6c 6f 63 20 2b 3d |num_map_|alloc +=|
|00004b10| 20 41 4c 4c 4f 43 5f 53 | 49 5a 45 3b 0a 58 09 09 | ALLOC_S|IZE;.X..|
|00004b20| 6d 61 70 66 72 6f 6d 20 | 3d 20 28 69 6e 74 20 2a |mapfrom |= (int *|
|00004b30| 29 78 72 65 61 6c 6c 6f | 63 28 6d 61 70 66 72 6f |)xreallo|c(mapfro|
|00004b40| 6d 2c 20 73 69 7a 65 6f | 66 28 69 6e 74 29 20 2a |m, sizeo|f(int) *|
|00004b50| 20 6e 75 6d 5f 6d 61 70 | 5f 61 6c 6c 6f 63 29 3b | num_map|_alloc);|
|00004b60| 0a 58 09 09 6d 61 70 74 | 6f 20 3d 20 28 69 6e 74 |.X..mapt|o = (int|
|00004b70| 20 2a 29 78 72 65 61 6c | 6c 6f 63 28 6d 61 70 74 | *)xreal|loc(mapt|
|00004b80| 6f 2c 20 73 69 7a 65 6f | 66 28 69 6e 74 29 20 2a |o, sizeo|f(int) *|
|00004b90| 20 6e 75 6d 5f 6d 61 70 | 5f 61 6c 6c 6f 63 29 3b | num_map|_alloc);|
|00004ba0| 0a 58 09 20 20 20 20 7d | 0a 58 0a 58 09 20 20 20 |.X. }|.X.X. |
|00004bb0| 20 77 68 69 63 68 20 3d | 20 63 72 65 61 74 65 5f | which =| create_|
|00004bc0| 6d 61 73 73 28 29 3b 0a | 58 09 20 20 20 20 6d 61 |mass();.|X. ma|
|00004bd0| 70 74 6f 5b 6e 75 6d 5f | 6d 61 70 5d 20 3d 20 77 |pto[num_|map] = w|
|00004be0| 68 69 63 68 3b 0a 58 09 | 20 20 20 20 6d 61 70 66 |hich;.X.| mapf|
|00004bf0| 72 6f 6d 5b 6e 75 6d 5f | 6d 61 70 5d 20 3d 20 69 |rom[num_|map] = i|
|00004c00| 3b 0a 58 09 20 20 20 20 | 6e 75 6d 5f 6d 61 70 2b |;.X. |num_map+|
|00004c10| 2b 3b 0a 58 09 20 20 20 | 20 6d 61 73 73 65 73 5b |+;.X. | masses[|
|00004c20| 77 68 69 63 68 5d 20 3d | 20 6d 61 73 73 65 73 5b |which] =| masses[|
|00004c30| 69 5d 3b 0a 58 09 20 20 | 20 20 6d 61 73 73 65 73 |i];.X. | masses|
|00004c40| 5b 77 68 69 63 68 5d 2e | 73 74 61 74 75 73 20 26 |[which].|status &|
|00004c50| 3d 20 7e 53 5f 53 45 4c | 45 43 54 45 44 3b 0a 58 |= ~S_SEL|ECTED;.X|
|00004c60| 09 20 20 20 20 6d 61 73 | 73 65 73 5b 77 68 69 63 |. mas|ses[whic|
|00004c70| 68 5d 2e 6e 75 6d 5f 70 | 61 72 73 20 3d 20 30 3b |h].num_p|ars = 0;|
|00004c80| 0a 58 09 20 20 20 20 6d | 61 73 73 65 73 5b 77 68 |.X. m|asses[wh|
|00004c90| 69 63 68 5d 2e 70 61 72 | 73 20 3d 20 4e 55 4c 4c |ich].par|s = NULL|
|00004ca0| 3b 0a 58 09 7d 0a 58 20 | 20 20 20 7d 0a 58 0a 58 |;.X.}.X | }.X.X|
|00004cb0| 20 20 20 20 66 6f 72 20 | 28 69 20 3d 20 30 3b 20 | for |(i = 0; |
|00004cc0| 69 20 3c 20 73 70 72 69 | 6e 67 5f 73 74 61 72 74 |i < spri|ng_start|
|00004cd0| 3b 20 69 2b 2b 29 20 7b | 0a 58 09 69 66 20 28 73 |; i++) {|.X.if (s|
|00004ce0| 70 72 69 6e 67 73 5b 69 | 5d 2e 73 74 61 74 75 73 |prings[i|].status|
|00004cf0| 20 26 20 53 5f 53 45 4c | 45 43 54 45 44 29 20 7b | & S_SEL|ECTED) {|
|00004d00| 0a 58 09 20 20 20 20 62 | 6f 6f 6c 65 61 6e 20 6d |.X. b|oolean m|
|00004d10| 31 64 6f 6e 65 2c 20 6d | 32 64 6f 6e 65 3b 0a 58 |1done, m|2done;.X|
|00004d20| 0a 58 09 20 20 20 20 6d | 31 64 6f 6e 65 20 3d 20 |.X. m|1done = |
|00004d30| 6d 32 64 6f 6e 65 20 3d | 20 46 41 4c 53 45 3b 0a |m2done =| FALSE;.|
|00004d40| 58 0a 58 09 20 20 20 20 | 77 68 69 63 68 20 3d 20 |X.X. |which = |
|00004d50| 63 72 65 61 74 65 5f 73 | 70 72 69 6e 67 28 29 3b |create_s|pring();|
|00004d60| 0a 58 09 20 20 20 20 73 | 70 72 69 6e 67 73 5b 77 |.X. s|prings[w|
|00004d70| 68 69 63 68 5d 20 3d 20 | 73 70 72 69 6e 67 73 5b |hich] = |springs[|
|00004d80| 69 5d 3b 0a 58 09 20 20 | 20 20 73 70 72 69 6e 67 |i];.X. | spring|
|00004d90| 73 5b 77 68 69 63 68 5d | 2e 73 74 61 74 75 73 20 |s[which]|.status |
|00004da0| 26 3d 20 7e 53 5f 53 45 | 4c 45 43 54 45 44 3b 0a |&= ~S_SE|LECTED;.|
|00004db0| 58 0a 58 09 20 20 20 20 | 66 6f 72 20 28 6a 20 3d |X.X. |for (j =|
|00004dc0| 20 30 3b 20 28 21 6d 31 | 64 6f 6e 65 20 7c 7c 20 | 0; (!m1|done || |
|00004dd0| 21 6d 32 64 6f 6e 65 29 | 20 26 26 20 6a 20 3c 20 |!m2done)| && j < |
|00004de0| 6e 75 6d 5f 6d 61 70 3b | 20 6a 2b 2b 29 20 7b 0a |num_map;| j++) {.|
|00004df0| 58 09 09 69 66 20 28 21 | 6d 31 64 6f 6e 65 20 26 |X..if (!|m1done &|
|00004e00| 26 20 73 70 72 69 6e 67 | 73 5b 77 68 69 63 68 5d |& spring|s[which]|
|00004e10| 2e 6d 31 20 3d 3d 20 6d | 61 70 66 72 6f 6d 5b 6a |.m1 == m|apfrom[j|
|00004e20| 5d 29 20 7b 0a 58 09 09 | 20 20 20 20 73 70 72 69 |]) {.X..| spri|
|00004e30| 6e 67 73 5b 77 68 69 63 | 68 5d 2e 6d 31 20 3d 20 |ngs[whic|h].m1 = |
|00004e40| 6d 61 70 74 6f 5b 6a 5d | 3b 0a 58 09 09 20 20 20 |mapto[j]|;.X.. |
|00004e50| 20 61 64 64 5f 6d 61 73 | 73 70 61 72 65 6e 74 28 | add_mas|sparent(|
|00004e60| 6d 61 70 74 6f 5b 6a 5d | 2c 20 77 68 69 63 68 29 |mapto[j]|, which)|
|00004e70| 3b 0a 58 09 09 20 20 20 | 20 6d 31 64 6f 6e 65 20 |;.X.. | m1done |
|00004e80| 3d 20 54 52 55 45 3b 0a | 58 09 09 7d 0a 58 09 09 |= TRUE;.|X..}.X..|
|00004e90| 69 66 20 28 21 6d 32 64 | 6f 6e 65 20 26 26 20 73 |if (!m2d|one && s|
|00004ea0| 70 72 69 6e 67 73 5b 77 | 68 69 63 68 5d 2e 6d 32 |prings[w|hich].m2|
|00004eb0| 20 3d 3d 20 6d 61 70 66 | 72 6f 6d 5b 6a 5d 29 20 | == mapf|rom[j]) |
|00004ec0| 7b 0a 58 09 09 20 20 20 | 20 73 70 72 69 6e 67 73 |{.X.. | springs|
|00004ed0| 5b 77 68 69 63 68 5d 2e | 6d 32 20 3d 20 6d 61 70 |[which].|m2 = map|
|00004ee0| 74 6f 5b 6a 5d 3b 0a 58 | 09 09 20 20 20 20 61 64 |to[j];.X|.. ad|
|00004ef0| 64 5f 6d 61 73 73 70 61 | 72 65 6e 74 28 6d 61 70 |d_masspa|rent(map|
|00004f00| 74 6f 5b 6a 5d 2c 20 77 | 68 69 63 68 29 3b 0a 58 |to[j], w|hich);.X|
|00004f10| 09 09 20 20 20 20 6d 32 | 64 6f 6e 65 20 3d 20 54 |.. m2|done = T|
|00004f20| 52 55 45 3b 0a 58 09 09 | 7d 0a 58 09 20 20 20 20 |RUE;.X..|}.X. |
|00004f30| 7d 0a 58 09 20 20 20 20 | 69 66 20 28 21 6d 31 64 |}.X. |if (!m1d|
|00004f40| 6f 6e 65 20 26 26 20 21 | 6d 32 64 6f 6e 65 29 20 |one && !|m2done) |
|00004f50| 7b 0a 58 09 09 2f 2a 20 | 64 65 6c 65 74 65 20 73 |{.X../* |delete s|
|00004f60| 70 72 69 6e 67 20 74 68 | 61 74 20 69 73 6e 27 74 |pring th|at isn't|
|00004f70| 20 63 6f 6e 6e 65 63 74 | 65 64 20 74 6f 20 61 6e | connect|ed to an|
|00004f80| 79 6f 6e 65 20 2a 2f 0a | 58 09 09 64 65 6c 65 74 |yone */.|X..delet|
|00004f90| 65 5f 73 70 72 69 6e 67 | 28 77 68 69 63 68 29 3b |e_spring|(which);|
|00004fa0| 0a 58 09 20 20 20 20 7d | 0a 58 09 7d 0a 58 20 20 |.X. }|.X.}.X |
|00004fb0| 20 20 7d 0a 58 0a 58 20 | 20 20 20 66 72 65 65 28 | }.X.X | free(|
|00004fc0| 6d 61 70 66 72 6f 6d 29 | 3b 0a 58 20 20 20 20 66 |mapfrom)|;.X f|
|00004fd0| 72 65 65 28 6d 61 70 74 | 6f 29 3b 0a 58 7d 0a 58 |ree(mapt|o);.X}.X|
|00004fe0| 0a 58 76 6f 69 64 20 74 | 72 61 6e 73 6c 61 74 65 |.Xvoid t|ranslate|
|00004ff0| 5f 73 65 6c 6f 62 6a 28 | 64 78 2c 20 64 79 29 0a |_selobj(|dx, dy).|
|00005000| 58 69 6e 74 20 64 78 2c | 20 64 79 3b 0a 58 7b 0a |Xint dx,| dy;.X{.|
|00005010| 58 20 20 20 20 69 6e 74 | 20 69 3b 0a 58 0a 58 20 |X int| i;.X.X |
|00005020| 20 20 20 66 6f 72 20 28 | 69 20 3d 20 30 3b 20 69 | for (|i = 0; i|
|00005030| 20 3c 20 6e 75 6d 5f 6d | 61 73 73 3b 20 69 2b 2b | < num_m|ass; i++|
|00005040| 29 20 7b 0a 58 09 69 66 | 20 28 6d 61 73 73 65 73 |) {.X.if| (masses|
|00005050| 5b 69 5d 2e 73 74 61 74 | 75 73 20 26 20 53 5f 53 |[i].stat|us & S_S|
|00005060| 45 4c 45 43 54 45 44 29 | 20 7b 0a 58 09 20 20 20 |ELECTED)| {.X. |
|00005070| 20 6d 61 73 73 65 73 5b | 69 5d 2e 78 20 2b 3d 20 | masses[|i].x += |
|00005080| 64 78 3b 0a 58 09 20 20 | 20 20 6d 61 73 73 65 73 |dx;.X. | masses|
|00005090| 5b 69 5d 2e 79 20 2b 3d | 20 64 79 3b 0a 58 09 7d |[i].y +=| dy;.X.}|
|000050a0| 0a 58 20 20 20 20 7d 0a | 58 7d 0a 58 0a 58 76 6f |.X }.|X}.X.Xvo|
|000050b0| 69 64 20 63 68 61 6e 67 | 65 76 65 6c 5f 73 65 6c |id chang|evel_sel|
|000050c0| 6f 62 6a 28 76 78 2c 20 | 76 79 2c 20 72 65 6c 61 |obj(vx, |vy, rela|
|000050d0| 74 69 76 65 29 0a 58 69 | 6e 74 20 76 78 2c 20 76 |tive).Xi|nt vx, v|
|000050e0| 79 3b 0a 58 62 6f 6f 6c | 65 61 6e 20 72 65 6c 61 |y;.Xbool|ean rela|
|000050f0| 74 69 76 65 3b 0a 58 7b | 0a 58 20 20 20 20 69 6e |tive;.X{|.X in|
|00005100| 74 20 69 3b 0a 58 0a 58 | 20 20 20 20 66 6f 72 20 |t i;.X.X| for |
|00005110| 28 69 20 3d 20 30 3b 20 | 69 20 3c 20 6e 75 6d 5f |(i = 0; |i < num_|
|00005120| 6d 61 73 73 3b 20 69 2b | 2b 29 20 7b 0a 58 09 69 |mass; i+|+) {.X.i|
|00005130| 66 20 28 6d 61 73 73 65 | 73 5b 69 5d 2e 73 74 61 |f (masse|s[i].sta|
|00005140| 74 75 73 20 26 20 53 5f | 53 45 4c 45 43 54 45 44 |tus & S_|SELECTED|
|00005150| 29 20 7b 0a 58 09 20 20 | 20 20 69 66 20 28 72 65 |) {.X. | if (re|
|00005160| 6c 61 74 69 76 65 29 20 | 7b 0a 58 09 09 6d 61 73 |lative) |{.X..mas|
|00005170| 73 65 73 5b 69 5d 2e 76 | 78 20 2b 3d 20 76 78 3b |ses[i].v|x += vx;|
|00005180| 0a 58 09 09 6d 61 73 73 | 65 73 5b 69 5d 2e 76 79 |.X..mass|es[i].vy|
|00005190| 20 2b 3d 20 76 79 3b 0a | 58 09 20 20 20 20 7d 20 | += vy;.|X. } |
|000051a0| 65 6c 73 65 20 7b 0a 58 | 09 09 6d 61 73 73 65 73 |else {.X|..masses|
|000051b0| 5b 69 5d 2e 76 78 20 3d | 20 76 78 3b 0a 58 09 09 |[i].vx =| vx;.X..|
|000051c0| 6d 61 73 73 65 73 5b 69 | 5d 2e 76 79 20 3d 20 76 |masses[i|].vy = v|
|000051d0| 79 3b 0a 58 09 20 20 20 | 20 7d 0a 58 09 7d 0a 58 |y;.X. | }.X.}.X|
|000051e0| 20 20 20 20 7d 0a 58 7d | 0a 58 0a 58 76 6f 69 64 | }.X}|.X.Xvoid|
|000051f0| 20 74 65 6d 70 66 69 78 | 65 64 5f 6f 62 6a 28 73 | tempfix|ed_obj(s|
|00005200| 74 6f 72 65 29 0a 58 62 | 6f 6f 6c 65 61 6e 20 73 |tore).Xb|oolean s|
|00005210| 74 6f 72 65 3b 0a 58 7b | 0a 58 20 20 20 20 69 6e |tore;.X{|.X in|
|00005220| 74 20 69 3b 0a 58 0a 58 | 20 20 20 20 66 6f 72 20 |t i;.X.X| for |
|00005230| 28 69 20 3d 20 30 3b 20 | 69 20 3c 20 6e 75 6d 5f |(i = 0; |i < num_|
|00005240| 6d 61 73 73 3b 20 69 2b | 2b 29 20 7b 0a 58 09 69 |mass; i+|+) {.X.i|
|00005250| 66 20 28 6d 61 73 73 65 | 73 5b 69 5d 2e 73 74 61 |f (masse|s[i].sta|
|00005260| 74 75 73 20 26 20 53 5f | 53 45 4c 45 43 54 45 44 |tus & S_|SELECTED|
|00005270| 29 20 7b 0a 58 09 20 20 | 20 20 69 66 20 28 73 74 |) {.X. | if (st|
|00005280| 6f 72 65 29 20 7b 0a 58 | 09 09 6d 61 73 73 65 73 |ore) {.X|..masses|
|00005290| 5b 69 5d 2e 73 74 61 74 | 75 73 20 26 3d 20 7e 53 |[i].stat|us &= ~S|
|000052a0| 5f 54 45 4d 50 46 49 58 | 45 44 3b 0a 58 09 09 69 |_TEMPFIX|ED;.X..i|
|000052b0| 66 20 28 21 28 6d 61 73 | 73 65 73 5b 69 5d 2e 73 |f (!(mas|ses[i].s|
|000052c0| 74 61 74 75 73 20 26 20 | 53 5f 46 49 58 45 44 29 |tatus & |S_FIXED)|
|000052d0| 29 20 7b 0a 58 09 09 20 | 20 20 20 6d 61 73 73 65 |) {.X.. | masse|
|000052e0| 73 5b 69 5d 2e 73 74 61 | 74 75 73 20 7c 3d 20 28 |s[i].sta|tus |= (|
|000052f0| 53 5f 54 45 4d 50 46 49 | 58 45 44 20 7c 20 53 5f |S_TEMPFI|XED | S_|
|00005300| 46 49 58 45 44 29 3b 0a | 58 09 09 7d 0a 58 09 20 |FIXED);.|X..}.X. |
|00005310| 20 20 20 7d 20 65 6c 73 | 65 20 7b 0a 58 09 09 69 | } els|e {.X..i|
|00005320| 66 20 28 6d 61 73 73 65 | 73 5b 69 5d 2e 73 74 61 |f (masse|s[i].sta|
|00005330| 74 75 73 20 26 20 53 5f | 54 45 4d 50 46 49 58 45 |tus & S_|TEMPFIXE|
|00005340| 44 29 20 7b 0a 58 09 09 | 20 20 20 20 6d 61 73 73 |D) {.X..| mass|
|00005350| 65 73 5b 69 5d 2e 73 74 | 61 74 75 73 20 26 3d 20 |es[i].st|atus &= |
|00005360| 7e 53 5f 46 49 58 45 44 | 3b 0a 58 09 09 7d 0a 58 |~S_FIXED|;.X..}.X|
|00005370| 09 20 20 20 20 7d 0a 58 | 09 7d 0a 58 20 20 20 20 |. }.X|.}.X |
|00005380| 7d 0a 58 7d 0a 58 0a 58 | 76 6f 69 64 20 73 65 74 |}.X}.X.X|void set|
|00005390| 5f 73 65 6c 5f 72 65 73 | 74 6c 65 6e 28 29 0a 58 |_sel_res|tlen().X|
|000053a0| 7b 0a 58 20 20 20 20 69 | 6e 74 20 69 3b 0a 58 20 |{.X i|nt i;.X |
|000053b0| 20 20 20 64 6f 75 62 6c | 65 20 64 78 2c 20 64 79 | doubl|e dx, dy|
|000053c0| 3b 0a 58 0a 58 20 20 20 | 20 66 6f 72 20 28 69 20 |;.X.X | for (i |
|000053d0| 3d 20 30 3b 20 69 20 3c | 20 6e 75 6d 5f 73 70 72 |= 0; i <| num_spr|
|000053e0| 69 6e 67 3b 20 69 2b 2b | 29 20 7b 0a 58 09 69 66 |ing; i++|) {.X.if|
|000053f0| 20 28 73 70 72 69 6e 67 | 73 5b 69 5d 2e 73 74 61 | (spring|s[i].sta|
|00005400| 74 75 73 20 26 20 53 5f | 53 45 4c 45 43 54 45 44 |tus & S_|SELECTED|
|00005410| 29 20 7b 0a 58 09 20 20 | 20 20 64 78 20 3d 20 6d |) {.X. | dx = m|
|00005420| 61 73 73 65 73 5b 73 70 | 72 69 6e 67 73 5b 69 5d |asses[sp|rings[i]|
|00005430| 2e 6d 31 5d 2e 78 20 2d | 20 6d 61 73 73 65 73 5b |.m1].x -| masses[|
|00005440| 73 70 72 69 6e 67 73 5b | 69 5d 2e 6d 32 5d 2e 78 |springs[|i].m2].x|
|00005450| 3b 0a 58 09 20 20 20 20 | 64 79 20 3d 20 6d 61 73 |;.X. |dy = mas|
|00005460| 73 65 73 5b 73 70 72 69 | 6e 67 73 5b 69 5d 2e 6d |ses[spri|ngs[i].m|
|00005470| 31 5d 2e 79 20 2d 20 6d | 61 73 73 65 73 5b 73 70 |1].y - m|asses[sp|
|00005480| 72 69 6e 67 73 5b 69 5d | 2e 6d 32 5d 2e 79 3b 0a |rings[i]|.m2].y;.|
|00005490| 58 09 20 20 20 20 73 70 | 72 69 6e 67 73 5b 69 5d |X. sp|rings[i]|
|000054a0| 2e 72 65 73 74 6c 65 6e | 20 3d 20 73 71 72 74 28 |.restlen| = sqrt(|
|000054b0| 64 78 20 2a 20 64 78 20 | 2b 20 64 79 20 2a 20 64 |dx * dx |+ dy * d|
|000054c0| 79 29 3b 0a 58 09 7d 0a | 58 20 20 20 20 7d 0a 58 |y);.X.}.|X }.X|
|000054d0| 7d 0a 58 0a 58 76 6f 69 | 64 20 73 65 74 5f 63 65 |}.X.Xvoi|d set_ce|
|000054e0| 6e 74 65 72 28 29 0a 58 | 7b 0a 58 20 20 20 20 69 |nter().X|{.X i|
|000054f0| 6e 74 20 69 2c 20 63 65 | 6e 74 20 3d 20 2d 31 3b |nt i, ce|nt = -1;|
|00005500| 0a 58 0a 58 20 20 20 20 | 66 6f 72 20 28 69 20 3d |.X.X |for (i =|
|00005510| 20 30 3b 20 69 20 3c 20 | 6e 75 6d 5f 6d 61 73 73 | 0; i < |num_mass|
|00005520| 3b 20 69 2b 2b 29 20 7b | 0a 58 09 69 66 20 28 6d |; i++) {|.X.if (m|
|00005530| 61 73 73 65 73 5b 69 5d | 2e 73 74 61 74 75 73 20 |asses[i]|.status |
|00005540| 26 20 53 5f 53 45 4c 45 | 43 54 45 44 29 20 7b 0a |& S_SELE|CTED) {.|
|00005550| 58 09 20 20 20 20 69 66 | 20 28 63 65 6e 74 20 21 |X. if| (cent !|
|00005560| 3d 20 2d 31 29 0a 58 09 | 20 20 20 20 20 20 72 65 |= -1).X.| re|
|00005570| 74 75 72 6e 3b 0a 58 0a | 58 09 20 20 20 20 63 65 |turn;.X.|X. ce|
|00005580| 6e 74 20 3d 20 69 3b 0a | 58 09 7d 0a 58 20 20 20 |nt = i;.|X.}.X |
|00005590| 20 7d 0a 58 0a 58 20 20 | 20 20 6d 73 74 2e 63 65 | }.X.X | mst.ce|
|000055a0| 6e 74 65 72 5f 69 64 20 | 3d 20 63 65 6e 74 3b 0a |nter_id |= cent;.|
|000055b0| 58 7d 0a 45 4e 44 5f 4f | 46 5f 2e 2f 6f 62 6a 2e |X}.END_O|F_./obj.|
|000055c0| 63 0a 69 66 20 74 65 73 | 74 20 31 35 31 36 35 20 |c.if tes|t 15165 |
|000055d0| 2d 6e 65 20 60 77 63 20 | 2d 63 20 3c 2e 2f 6f 62 |-ne `wc |-c <./ob|
|000055e0| 6a 2e 63 60 3b 20 74 68 | 65 6e 0a 20 20 20 20 65 |j.c`; th|en. e|
|000055f0| 63 68 6f 20 73 68 61 72 | 3a 20 5c 22 2e 2f 6f 62 |cho shar|: \"./ob|
|00005600| 6a 2e 63 5c 22 20 75 6e | 70 61 63 6b 65 64 20 77 |j.c\" un|packed w|
|00005610| 69 74 68 20 77 72 6f 6e | 67 20 73 69 7a 65 21 0a |ith wron|g size!.|
|00005620| 66 69 0a 23 20 65 6e 64 | 20 6f 66 20 6f 76 65 72 |fi.# end| of over|
|00005630| 77 72 69 74 69 6e 67 20 | 63 68 65 63 6b 0a 66 69 |writing |check.fi|
|00005640| 0a 69 66 20 74 65 73 74 | 20 2d 66 20 2e 2f 70 68 |.if test| -f ./ph|
|00005650| 79 73 2e 63 20 2d 61 20 | 22 24 7b 31 7d 22 20 21 |ys.c -a |"${1}" !|
|00005660| 3d 20 22 2d 63 22 20 3b | 20 74 68 65 6e 20 0a 20 |= "-c" ;| then . |
|00005670| 20 65 63 68 6f 20 73 68 | 61 72 3a 20 57 69 6c 6c | echo sh|ar: Will|
|00005680| 20 6e 6f 74 20 6f 76 65 | 72 2d 77 72 69 74 65 20 | not ove|r-write |
|00005690| 65 78 69 73 74 69 6e 67 | 20 66 69 6c 65 20 5c 22 |existing| file \"|
|000056a0| 2e 2f 70 68 79 73 2e 63 | 5c 22 0a 65 6c 73 65 0a |./phys.c|\".else.|
|000056b0| 65 63 68 6f 20 73 68 61 | 72 3a 20 45 78 74 72 61 |echo sha|r: Extra|
|000056c0| 63 74 69 6e 67 20 5c 22 | 2e 2f 70 68 79 73 2e 63 |cting \"|./phys.c|
|000056d0| 5c 22 20 5c 28 31 33 33 | 36 31 20 63 68 61 72 61 |\" \(133|61 chara|
|000056e0| 63 74 65 72 73 5c 29 0a | 73 65 64 20 22 73 2f 5e |cters\).|sed "s/^|
|000056f0| 58 2f 2f 22 20 3e 2e 2f | 70 68 79 73 2e 63 20 3c |X//" >./|phys.c <|
|00005700| 3c 27 45 4e 44 5f 4f 46 | 5f 2e 2f 70 68 79 73 2e |<'END_OF|_./phys.|
|00005710| 63 27 0a 58 2f 2a 20 70 | 68 79 73 2e 63 20 2d 2d |c'.X/* p|hys.c --|
|00005720| 20 78 73 70 72 69 6e 67 | 69 65 73 20 70 68 79 73 | xspring|ies phys|
|00005730| 69 63 61 6c 20 6d 6f 64 | 65 6c 69 6e 67 20 61 6e |ical mod|eling an|
|00005740| 64 20 6e 75 6d 65 72 69 | 63 61 6c 20 73 6f 6c 76 |d numeri|cal solv|
|00005750| 69 6e 67 20 72 6f 75 74 | 69 6e 65 73 0a 58 20 2a |ing rout|ines.X *|
|00005760| 20 43 6f 70 79 72 69 67 | 68 74 20 28 43 29 20 31 | Copyrig|ht (C) 1|
|00005770| 39 39 31 20 20 44 6f 75 | 67 6c 61 73 20 4d 2e 20 |991 Dou|glas M. |
|00005780| 44 65 43 61 72 6c 6f 0a | 58 20 2a 0a 58 20 2a 20 |DeCarlo.|X *.X * |
|00005790| 54 68 69 73 20 66 69 6c | 65 20 69 73 20 70 61 72 |This fil|e is par|
|000057a0| 74 20 6f 66 20 58 53 70 | 72 69 6e 67 69 65 73 2c |t of XSp|ringies,|
|000057b0| 20 61 20 6d 61 73 73 20 | 61 6e 64 20 73 70 72 69 | a mass |and spri|
|000057c0| 6e 67 20 73 69 6d 75 6c | 61 74 69 6f 6e 20 73 79 |ng simul|ation sy|
|000057d0| 73 74 65 6d 20 66 6f 72 | 20 58 0a 58 20 2a 0a 58 |stem for| X.X *.X|
|000057e0| 20 2a 20 58 53 70 72 69 | 6e 67 69 65 73 20 69 73 | * XSpri|ngies is|
|000057f0| 20 66 72 65 65 20 73 6f | 66 74 77 61 72 65 3b 20 | free so|ftware; |
|00005800| 79 6f 75 20 63 61 6e 20 | 72 65 64 69 73 74 72 69 |you can |redistri|
|00005810| 62 75 74 65 20 69 74 20 | 61 6e 64 2f 6f 72 20 6d |bute it |and/or m|
|00005820| 6f 64 69 66 79 0a 58 20 | 2a 20 69 74 20 75 6e 64 |odify.X |* it und|
|00005830| 65 72 20 74 68 65 20 74 | 65 72 6d 73 20 6f 66 20 |er the t|erms of |
|00005840| 74 68 65 20 47 4e 55 20 | 47 65 6e 65 72 61 6c 20 |the GNU |General |
|00005850| 50 75 62 6c 69 63 20 4c | 69 63 65 6e 73 65 20 61 |Public L|icense a|
|00005860| 73 20 70 75 62 6c 69 73 | 68 65 64 20 62 79 0a 58 |s publis|hed by.X|
|00005870| 20 2a 20 74 68 65 20 46 | 72 65 65 20 53 6f 66 74 | * the F|ree Soft|
|00005880| 77 61 72 65 20 46 6f 75 | 6e 64 61 74 69 6f 6e 3b |ware Fou|ndation;|
|00005890| 20 65 69 74 68 65 72 20 | 76 65 72 73 69 6f 6e 20 | either |version |
|000058a0| 31 2c 20 6f 72 20 28 61 | 74 20 79 6f 75 72 20 6f |1, or (a|t your o|
|000058b0| 70 74 69 6f 6e 29 0a 58 | 20 2a 20 61 6e 79 20 6c |ption).X| * any l|
|000058c0| 61 74 65 72 20 76 65 72 | 73 69 6f 6e 2e 0a 58 20 |ater ver|sion..X |
|000058d0| 2a 0a 58 20 2a 20 58 53 | 70 72 69 6e 67 69 65 73 |*.X * XS|pringies|
|000058e0| 20 69 73 20 64 69 73 74 | 72 69 62 75 74 65 64 20 | is dist|ributed |
|000058f0| 69 6e 20 74 68 65 20 68 | 6f 70 65 20 74 68 61 74 |in the h|ope that|
|00005900| 20 69 74 20 77 69 6c 6c | 20 62 65 20 75 73 65 66 | it will| be usef|
|00005910| 75 6c 2c 0a 58 20 2a 20 | 62 75 74 20 57 49 54 48 |ul,.X * |but WITH|
|00005920| 4f 55 54 20 41 4e 59 20 | 57 41 52 52 41 4e 54 59 |OUT ANY |WARRANTY|
|00005930| 3b 20 77 69 74 68 6f 75 | 74 20 65 76 65 6e 20 74 |; withou|t even t|
|00005940| 68 65 20 69 6d 70 6c 69 | 65 64 20 77 61 72 72 61 |he impli|ed warra|
|00005950| 6e 74 79 20 6f 66 0a 58 | 20 2a 20 4d 45 52 43 48 |nty of.X| * MERCH|
|00005960| 41 4e 54 41 42 49 4c 49 | 54 59 20 6f 72 20 46 49 |ANTABILI|TY or FI|
|00005970| 54 4e 45 53 53 20 46 4f | 52 20 41 20 50 41 52 54 |TNESS FO|R A PART|
|00005980| 49 43 55 4c 41 52 20 50 | 55 52 50 4f 53 45 2e 20 |ICULAR P|URPOSE. |
|00005990| 20 53 65 65 20 74 68 65 | 0a 58 20 2a 20 47 4e 55 | See the|.X * GNU|
|000059a0| 20 47 65 6e 65 72 61 6c | 20 50 75 62 6c 69 63 20 | General| Public |
|000059b0| 4c 69 63 65 6e 73 65 20 | 66 6f 72 20 6d 6f 72 65 |License |for more|
|000059c0| 20 64 65 74 61 69 6c 73 | 2e 0a 58 20 2a 20 0a 58 | details|..X * .X|
|000059d0| 20 2a 20 59 6f 75 20 73 | 68 6f 75 6c 64 20 68 61 | * You s|hould ha|
|000059e0| 76 65 20 72 65 63 65 69 | 76 65 64 20 61 20 63 6f |ve recei|ved a co|
|000059f0| 70 79 20 6f 66 20 74 68 | 65 20 47 4e 55 20 47 65 |py of th|e GNU Ge|
|00005a00| 6e 65 72 61 6c 20 50 75 | 62 6c 69 63 20 4c 69 63 |neral Pu|blic Lic|
|00005a10| 65 6e 73 65 0a 58 20 2a | 20 61 6c 6f 6e 67 20 77 |ense.X *| along w|
|00005a20| 69 74 68 20 58 53 70 72 | 69 6e 67 69 65 73 3b 20 |ith XSpr|ingies; |
|00005a30| 73 65 65 20 74 68 65 20 | 66 69 6c 65 20 43 4f 50 |see the |file COP|
|00005a40| 59 49 4e 47 2e 20 20 49 | 66 20 6e 6f 74 2c 20 77 |YING. I|f not, w|
|00005a50| 72 69 74 65 20 74 6f 0a | 58 20 2a 20 74 68 65 20 |rite to.|X * the |
|00005a60| 46 72 65 65 20 53 6f 66 | 74 77 61 72 65 20 46 6f |Free Sof|tware Fo|
|00005a70| 75 6e 64 61 74 69 6f 6e | 2c 20 36 37 35 20 4d 61 |undation|, 675 Ma|
|00005a80| 73 73 20 41 76 65 2c 20 | 43 61 6d 62 72 69 64 67 |ss Ave, |Cambridg|
|00005a90| 65 2c 20 4d 41 20 30 32 | 31 33 39 2c 20 55 53 41 |e, MA 02|139, USA|
|00005aa0| 2e 0a 58 20 2a 0a 58 20 | 2a 2f 0a 58 0a 58 23 69 |..X *.X |*/.X.X#i|
|00005ab0| 6e 63 6c 75 64 65 20 22 | 64 65 66 73 2e 68 22 0a |nclude "|defs.h".|
|00005ac0| 58 23 69 6e 63 6c 75 64 | 65 20 22 6f 62 6a 2e 68 |X#includ|e "obj.h|
|00005ad0| 22 0a 58 0a 58 23 69 66 | 6e 64 65 66 20 4d 5f 50 |".X.X#if|ndef M_P|
|00005ae0| 49 0a 58 23 64 65 66 69 | 6e 65 20 4d 5f 50 49 09 |I.X#defi|ne M_PI.|
|00005af0| 33 2e 31 34 31 35 39 32 | 36 35 33 35 38 39 37 39 |3.141592|65358979|
|00005b00| 33 32 33 38 34 36 0a 58 | 23 65 6e 64 69 66 0a 58 |323846.X|#endif.X|
|00005b10| 0a 58 23 64 65 66 69 6e | 65 20 44 54 5f 4d 49 4e |.X#defin|e DT_MIN|
|00005b20| 09 09 30 2e 30 30 30 31 | 0a 58 23 64 65 66 69 6e |..0.0001|.X#defin|
|00005b30| 65 20 44 54 5f 4d 41 58 | 09 09 30 2e 35 0a 58 0a |e DT_MAX|..0.5.X.|
|00005b40| 58 23 64 65 66 69 6e 65 | 20 4d 41 58 43 4f 4e 09 |X#define| MAXCON.|
|00005b50| 09 31 30 32 34 0a 58 0a | 58 23 64 65 66 69 6e 65 |.1024.X.|X#define|
|00005b60| 20 43 4f 4e 53 54 52 5f | 4b 53 09 31 2e 30 0a 58 | CONSTR_|KS.1.0.X|
|00005b70| 23 64 65 66 69 6e 65 20 | 43 4f 4e 53 54 52 5f 4b |#define |CONSTR_K|
|00005b80| 44 09 31 2e 30 0a 58 0a | 58 2f 2a 20 44 6f 20 66 |D.1.0.X.|X/* Do f|
|00005b90| 75 64 67 79 20 62 6f 75 | 6e 63 65 73 20 2a 2f 0a |udgy bou|nces */.|
|00005ba0| 58 23 64 65 66 69 6e 65 | 20 42 4f 55 4e 43 45 5f |X#define| BOUNCE_|
|00005bb0| 46 55 44 47 45 09 31 0a | 58 0a 58 2f 2a 20 53 74 |FUDGE.1.|X.X/* St|
|00005bc0| 69 63 6b 69 6e 65 73 73 | 20 63 61 6c 69 62 72 61 |ickiness| calibra|
|00005bd0| 74 69 6f 6e 3a 20 20 53 | 54 49 43 4b 5f 4d 41 47 |tion: S|TICK_MAG|
|00005be0| 20 3d 20 31 2e 30 2c 20 | 6d 65 61 6e 73 20 74 68 | = 1.0, |means th|
|00005bf0| 61 74 20 61 20 6d 61 73 | 73 20 3d 20 31 2e 30 20 |at a mas|s = 1.0 |
|00005c00| 77 69 74 68 20 67 72 61 | 76 69 74 79 20 3d 20 31 |with gra|vity = 1|
|00005c10| 2e 30 20 77 69 6c 6c 20 | 72 65 6d 61 69 6e 0a 58 |.0 will |remain.X|
|00005c20| 20 20 20 73 74 75 63 6b | 20 6f 6e 20 61 20 77 61 | stuck| on a wa|
|00005c30| 6c 6c 20 66 6f 72 20 61 | 6c 6c 20 73 74 69 63 6b |ll for a|ll stick|
|00005c40| 69 6e 65 73 73 20 76 61 | 6c 75 65 73 20 3e 20 31 |iness va|lues > 1|
|00005c50| 2e 30 20 2a 2f 0a 58 23 | 64 65 66 69 6e 65 20 53 |.0 */.X#|define S|
|00005c60| 54 49 43 4b 5f 4d 41 47 | 09 31 2e 30 0a 58 0a 58 |TICK_MAG|.1.0.X.X|
|00005c70| 76 6f 69 64 20 61 63 63 | 75 6d 75 6c 61 74 65 5f |void acc|umulate_|
|00005c80| 61 63 63 65 6c 28 29 0a | 58 7b 0a 58 20 20 20 20 |accel().|X{.X |
|00005c90| 64 6f 75 62 6c 65 20 67 | 76 61 6c 2c 20 67 6d 69 |double g|val, gmi|
|00005ca0| 73 63 3b 0a 58 20 20 20 | 20 64 6f 75 62 6c 65 20 |sc;.X | double |
|00005cb0| 67 78 20 3d 20 30 2c 20 | 67 79 20 3d 20 30 2c 20 |gx = 0, |gy = 0, |
|00005cc0| 6f 67 78 20 3d 20 30 2c | 20 6f 67 79 20 3d 20 30 |ogx = 0,| ogy = 0|
|00005cd0| 3b 0a 58 20 20 20 20 64 | 6f 75 62 6c 65 20 63 65 |;.X d|ouble ce|
|00005ce0| 6e 74 65 72 5f 78 20 3d | 20 64 72 61 77 5f 77 69 |nter_x =| draw_wi|
|00005cf0| 64 2f 32 2e 30 2c 20 63 | 65 6e 74 65 72 5f 79 20 |d/2.0, c|enter_y |
|00005d00| 3d 20 64 72 61 77 5f 68 | 74 2f 32 2e 30 2c 20 63 |= draw_h|t/2.0, c|
|00005d10| 65 6e 74 65 72 5f 72 61 | 64 20 3d 20 31 2e 30 3b |enter_ra|d = 1.0;|
|00005d20| 0a 58 20 20 20 20 6d 61 | 73 73 20 2a 6d 2c 20 2a |.X ma|ss *m, *|
|00005d30| 6d 31 2c 20 2a 6d 32 3b | 0a 58 20 20 20 20 73 70 |m1, *m2;|.X sp|
|00005d40| 72 69 6e 67 20 2a 73 3b | 0a 58 20 20 20 20 72 65 |ring *s;|.X re|
|00005d50| 67 69 73 74 65 72 20 69 | 6e 74 20 69 3b 0a 58 20 |gister i|nt i;.X |
|00005d60| 20 20 20 0a 58 20 20 20 | 20 2f 2a 20 2d 2d 2d 2d | .X | /* ----|
|00005d70| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 20 61 |--------|------ a|
|00005d80| 70 70 6c 69 65 64 20 66 | 6f 72 63 65 20 65 66 66 |pplied f|orce eff|
|00005d90| 65 63 74 73 20 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |ects ---|--------|
|00005da0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 20 2a 2f 0a |--------|---- */.|
|00005db0| 58 0a 58 20 20 20 20 69 | 66 20 28 6d 73 74 2e 63 |X.X i|f (mst.c|
|00005dc0| 65 6e 74 65 72 5f 69 64 | 20 3e 3d 20 30 29 20 7b |enter_id| >= 0) {|
|00005dd0| 0a 58 09 69 66 20 28 6d | 61 73 73 65 73 5b 6d 73 |.X.if (m|asses[ms|
|00005de0| 74 2e 63 65 6e 74 65 72 | 5f 69 64 5d 2e 73 74 61 |t.center|_id].sta|
|00005df0| 74 75 73 20 26 20 53 5f | 41 4c 49 56 45 29 20 7b |tus & S_|ALIVE) {|
|00005e00| 0a 58 09 20 20 20 20 63 | 65 6e 74 65 72 5f 78 20 |.X. c|enter_x |
|00005e10| 3d 20 6d 61 73 73 65 73 | 5b 6d 73 74 2e 63 65 6e |= masses|[mst.cen|
|00005e20| 74 65 72 5f 69 64 5d 2e | 78 3b 0a 58 09 20 20 20 |ter_id].|x;.X. |
|00005e30| 20 63 65 6e 74 65 72 5f | 79 20 3d 20 6d 61 73 73 | center_|y = mass|
|00005e40| 65 73 5b 6d 73 74 2e 63 | 65 6e 74 65 72 5f 69 64 |es[mst.c|enter_id|
|00005e50| 5d 2e 79 3b 0a 58 09 7d | 20 65 6c 73 65 20 7b 0a |].y;.X.}| else {.|
|00005e60| 58 09 20 20 20 20 6d 73 | 74 2e 63 65 6e 74 65 72 |X. ms|t.center|
|00005e70| 5f 69 64 20 3d 20 2d 31 | 3b 0a 58 09 7d 0a 58 20 |_id = -1|;.X.}.X |
|00005e80| 20 20 20 7d 0a 58 0a 58 | 20 20 20 20 2f 2a 20 44 | }.X.X| /* D|
|00005e90| 6f 20 67 72 61 76 69 74 | 79 20 2a 2f 0a 58 20 20 |o gravit|y */.X |
|00005ea0| 20 20 69 66 20 28 6d 73 | 74 2e 62 66 5f 6d 6f 64 | if (ms|t.bf_mod|
|00005eb0| 65 5b 46 52 5f 47 52 41 | 56 5d 20 3e 20 30 29 20 |e[FR_GRA|V] > 0) |
|00005ec0| 7b 0a 58 09 67 76 61 6c | 20 3d 20 6d 73 74 2e 63 |{.X.gval| = mst.c|
|00005ed0| 75 72 5f 67 72 61 76 5f | 76 61 6c 5b 46 52 5f 47 |ur_grav_|val[FR_G|
|00005ee0| 52 41 56 5d 3b 0a 58 09 | 67 6d 69 73 63 20 3d 20 |RAV];.X.|gmisc = |
|00005ef0| 6d 73 74 2e 63 75 72 5f | 6d 69 73 63 5f 76 61 6c |mst.cur_|misc_val|
|00005f00| 5b 46 52 5f 47 52 41 56 | 5d 3b 0a 58 09 0a 58 09 |[FR_GRAV|];.X..X.|
|00005f10| 67 78 20 3d 20 43 4f 4f | 52 44 5f 44 58 28 67 76 |gx = COO|RD_DX(gv|
|00005f20| 61 6c 20 2a 20 73 69 6e | 28 67 6d 69 73 63 20 2a |al * sin|(gmisc *|
|00005f30| 20 4d 5f 50 49 20 2f 20 | 31 38 30 2e 30 29 29 3b | M_PI / |180.0));|
|00005f40| 0a 58 09 67 79 20 3d 20 | 43 4f 4f 52 44 5f 44 59 |.X.gy = |COORD_DY|
|00005f50| 28 67 76 61 6c 20 2a 20 | 63 6f 73 28 67 6d 69 73 |(gval * |cos(gmis|
|00005f60| 63 20 2a 20 4d 5f 50 49 | 20 2f 20 31 38 30 2e 30 |c * M_PI| / 180.0|
|00005f70| 29 29 3b 0a 58 20 20 20 | 20 7d 0a 58 20 20 20 20 |));.X | }.X |
|00005f80| 0a 58 20 20 20 20 2f 2a | 20 4b 65 65 70 20 63 65 |.X /*| Keep ce|
|00005f90| 6e 74 65 72 20 6f 66 20 | 6d 61 73 73 20 69 6e 20 |nter of |mass in |
|00005fa0| 74 68 65 20 6d 69 64 64 | 6c 65 20 66 6f 72 63 65 |the midd|le force|
|00005fb0| 20 2a 2f 0a 58 20 20 20 | 20 69 66 20 28 6d 73 74 | */.X | if (mst|
|00005fc0| 2e 62 66 5f 6d 6f 64 65 | 5b 46 52 5f 43 4d 41 53 |.bf_mode|[FR_CMAS|
|00005fd0| 53 5d 20 3e 20 30 29 20 | 7b 0a 58 09 64 6f 75 62 |S] > 0) |{.X.doub|
|00005fe0| 6c 65 20 6d 69 78 69 78 | 20 3d 20 30 2e 30 2c 20 |le mixix| = 0.0, |
|00005ff0| 6d 69 78 69 79 20 3d 20 | 30 2e 30 2c 20 6d 69 76 |mixiy = |0.0, miv|
|00006000| 69 78 20 3d 20 30 2e 30 | 2c 20 6d 69 76 69 79 20 |ix = 0.0|, miviy |
|00006010| 3d 20 30 2e 30 2c 20 6d | 73 75 6d 20 3d 20 30 2e |= 0.0, m|sum = 0.|
|00006020| 30 3b 0a 58 09 67 76 61 | 6c 20 3d 20 6d 73 74 2e |0;.X.gva|l = mst.|
|00006030| 63 75 72 5f 67 72 61 76 | 5f 76 61 6c 5b 46 52 5f |cur_grav|_val[FR_|
|00006040| 43 4d 41 53 53 5d 3b 0a | 58 09 67 6d 69 73 63 20 |CMASS];.|X.gmisc |
|00006050| 3d 20 6d 73 74 2e 63 75 | 72 5f 6d 69 73 63 5f 76 |= mst.cu|r_misc_v|
|00006060| 61 6c 5b 46 52 5f 43 4d | 41 53 53 5d 3b 0a 58 09 |al[FR_CM|ASS];.X.|
|00006070| 0a 58 09 66 6f 72 20 28 | 69 20 3d 20 30 3b 20 69 |.X.for (|i = 0; i|
|00006080| 20 3c 20 6e 75 6d 5f 6d | 61 73 73 3b 20 69 2b 2b | < num_m|ass; i++|
|00006090| 29 20 7b 0a 58 09 20 20 | 20 20 6d 20 3d 20 6d 61 |) {.X. | m = ma|
|000060a0| 73 73 65 73 20 2b 20 69 | 3b 0a 58 09 20 20 20 20 |sses + i|;.X. |
|000060b0| 69 66 20 28 69 20 21 3d | 20 6d 73 74 2e 63 65 6e |if (i !=| mst.cen|
|000060c0| 74 65 72 5f 69 64 20 26 | 26 20 28 6d 2d 3e 73 74 |ter_id &|& (m->st|
|000060d0| 61 74 75 73 20 26 20 53 | 5f 41 4c 49 56 45 29 20 |atus & S|_ALIVE) |
|000060e0| 26 26 20 21 28 6d 2d 3e | 73 74 61 74 75 73 20 26 |&& !(m->|status &|
|000060f0| 20 53 5f 46 49 58 45 44 | 29 29 20 7b 0a 58 09 09 | S_FIXED|)) {.X..|
|00006100| 6d 73 75 6d 20 2b 3d 20 | 6d 2d 3e 6d 61 73 73 3b |msum += |m->mass;|
|00006110| 0a 58 09 09 6d 69 78 69 | 78 20 2b 3d 20 6d 2d 3e |.X..mixi|x += m->|
|00006120| 6d 61 73 73 20 2a 20 6d | 2d 3e 78 3b 0a 58 09 09 |mass * m|->x;.X..|
|00006130| 6d 69 78 69 79 20 2b 3d | 20 6d 2d 3e 6d 61 73 73 |mixiy +=| m->mass|
|00006140| 20 2a 20 6d 2d 3e 79 3b | 0a 58 09 09 6d 69 76 69 | * m->y;|.X..mivi|
|00006150| 78 20 2b 3d 20 6d 2d 3e | 6d 61 73 73 20 2a 20 6d |x += m->|mass * m|
|00006160| 2d 3e 76 78 3b 0a 58 09 | 09 6d 69 76 69 79 20 2b |->vx;.X.|.miviy +|
|00006170| 3d 20 6d 2d 3e 6d 61 73 | 73 20 2a 20 6d 2d 3e 76 |= m->mas|s * m->v|
|00006180| 79 3b 0a 58 09 20 20 20 | 20 7d 0a 58 09 7d 0a 58 |y;.X. | }.X.}.X|
|00006190| 09 0a 58 09 69 66 20 28 | 6d 73 75 6d 29 20 7b 0a |..X.if (|msum) {.|
|000061a0| 58 09 20 20 20 20 6d 69 | 78 69 78 20 2f 3d 20 6d |X. mi|xix /= m|
|000061b0| 73 75 6d 3b 0a 58 09 20 | 20 20 20 6d 69 78 69 79 |sum;.X. | mixiy|
|000061c0| 20 2f 3d 20 6d 73 75 6d | 3b 0a 58 09 20 20 20 20 | /= msum|;.X. |
|000061d0| 6d 69 76 69 78 20 2f 3d | 20 6d 73 75 6d 3b 0a 58 |mivix /=| msum;.X|
|000061e0| 09 20 20 20 20 6d 69 76 | 69 79 20 2f 3d 20 6d 73 |. miv|iy /= ms|
|000061f0| 75 6d 3b 0a 58 09 20 20 | 20 20 0a 58 09 20 20 20 |um;.X. | .X. |
|00006200| 20 6d 69 78 69 78 20 2d | 3d 20 63 65 6e 74 65 72 | mixix -|= center|
|00006210| 5f 78 3b 0a 58 09 20 20 | 20 20 6d 69 78 69 79 20 |_x;.X. | mixiy |
|00006220| 2d 3d 20 63 65 6e 74 65 | 72 5f 79 3b 0a 58 0a 58 |-= cente|r_y;.X.X|
|00006230| 09 20 20 20 20 6f 67 78 | 20 2d 3d 20 28 67 76 61 |. ogx| -= (gva|
|00006240| 6c 20 2a 20 6d 69 78 69 | 78 20 2b 20 67 6d 69 73 |l * mixi|x + gmis|
|00006250| 63 20 2a 20 6d 69 76 69 | 78 29 20 2f 20 6d 73 75 |c * mivi|x) / msu|
|00006260| 6d 3b 0a 58 09 20 20 20 | 20 6f 67 79 20 2d 3d 20 |m;.X. | ogy -= |
|00006270| 28 67 76 61 6c 20 2a 20 | 6d 69 78 69 79 20 2b 20 |(gval * |mixiy + |
|00006280| 67 6d 69 73 63 20 2a 20 | 6d 69 76 69 79 29 20 2f |gmisc * |miviy) /|
|00006290| 20 6d 73 75 6d 3b 0a 58 | 09 7d 0a 58 20 20 20 20 | msum;.X|.}.X |
|000062a0| 7d 0a 58 20 20 20 20 0a | 58 20 20 20 20 2f 2a 20 |}.X .|X /* |
|000062b0| 41 70 70 6c 79 20 47 72 | 61 76 69 74 79 2c 20 43 |Apply Gr|avity, C|
|000062c0| 4d 20 61 6e 64 20 61 69 | 72 20 64 72 61 67 20 74 |M and ai|r drag t|
|000062d0| 6f 20 61 6c 6c 20 6d 61 | 73 73 65 73 20 2a 2f 0a |o all ma|sses */.|
|000062e0| 58 20 20 20 20 66 6f 72 | 20 28 69 20 3d 20 30 3b |X for| (i = 0;|
|000062f0| 20 69 20 3c 20 6e 75 6d | 5f 6d 61 73 73 3b 20 69 | i < num|_mass; i|
|00006300| 2b 2b 29 20 7b 0a 58 09 | 6d 20 3d 20 6d 61 73 73 |++) {.X.|m = mass|
|00006310| 65 73 20 2b 20 69 3b 0a | 58 09 69 66 20 28 28 6d |es + i;.|X.if ((m|
|00006320| 2d 3e 73 74 61 74 75 73 | 20 26 20 53 5f 41 4c 49 |->status| & S_ALI|
|00006330| 56 45 29 20 26 26 20 21 | 28 6d 2d 3e 73 74 61 74 |VE) && !|(m->stat|
|00006340| 75 73 20 26 20 53 5f 46 | 49 58 45 44 29 29 20 7b |us & S_F|IXED)) {|
|00006350| 0a 58 09 20 20 20 20 2f | 2a 20 44 6f 20 76 69 73 |.X. /|* Do vis|
|00006360| 63 6f 75 73 20 64 72 61 | 67 20 2a 2f 0a 58 09 20 |cous dra|g */.X. |
|00006370| 20 20 20 69 66 20 28 69 | 20 21 3d 20 6d 73 74 2e | if (i| != mst.|
|00006380| 63 65 6e 74 65 72 5f 69 | 64 29 20 7b 0a 58 09 09 |center_i|d) {.X..|
|00006390| 6d 2d 3e 61 78 20 3d 20 | 67 78 20 2b 20 6f 67 78 |m->ax = |gx + ogx|
|000063a0| 20 2d 20 6d 73 74 2e 63 | 75 72 5f 76 69 73 63 20 | - mst.c|ur_visc |
|000063b0| 2a 20 6d 2d 3e 76 78 3b | 0a 58 09 09 6d 2d 3e 61 |* m->vx;|.X..m->a|
|000063c0| 79 20 3d 20 67 79 20 2b | 20 6f 67 79 20 2d 20 6d |y = gy +| ogy - m|
|000063d0| 73 74 2e 63 75 72 5f 76 | 69 73 63 20 2a 20 6d 2d |st.cur_v|isc * m-|
|000063e0| 3e 76 79 3b 0a 58 09 20 | 20 20 20 7d 20 65 6c 73 |>vy;.X. | } els|
|000063f0| 65 20 7b 0a 58 09 09 6d | 2d 3e 61 78 20 3d 20 67 |e {.X..m|->ax = g|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.