@@ -22,29 +22,25 @@ fn main(args: ~[str]) {
22
22
args
23
23
} ;
24
24
let n = int:: from_str ( args[ 1 ] ) . get ( ) ;
25
- let bodies: ~[ Body :: props ] = NBodySystem :: MakeNBodySystem ( ) ;
25
+ let bodies: ~[ Body :: props ] = NBodySystem :: make ( ) ;
26
26
io:: println ( #fmt ( "%f" , NBodySystem :: energy ( bodies) ) ) ;
27
- let mut i: int = 0 ;
27
+ let mut i = 0 ;
28
28
while i < n { NBodySystem :: advance ( bodies, 0.01 ) ; i += 1 ; }
29
29
io:: println ( #fmt ( "%f" , NBodySystem :: energy ( bodies) ) ) ;
30
30
}
31
31
32
- // Body::props is a record of floats, so
33
- // vec<Body::props> is a vector of records of floats
34
-
35
32
mod NBodySystem {
36
33
37
- fn MakeNBodySystem ( ) -> ~[ Body :: props ] {
38
- // these each return a Body::props
34
+ fn make ( ) -> ~[ Body :: props ] {
39
35
let bodies: ~[ Body :: props ] =
40
36
~[ Body :: sun ( ) , Body :: jupiter ( ) , Body :: saturn ( ) , Body :: uranus ( ) ,
41
- Body :: neptune ( ) ] ;
37
+ Body :: neptune ( ) ] ;
42
38
43
- let mut px: float = 0.0 ;
44
- let mut py: float = 0.0 ;
45
- let mut pz: float = 0.0 ;
39
+ let mut px = 0.0 ;
40
+ let mut py = 0.0 ;
41
+ let mut pz = 0.0 ;
46
42
47
- let mut i: int = 0 ;
43
+ let mut i = 0 ;
48
44
while i < 5 {
49
45
px += bodies[ i] . vx * bodies[ i] . mass ;
50
46
py += bodies[ i] . vy * bodies[ i] . mass ;
@@ -54,16 +50,16 @@ mod NBodySystem {
54
50
}
55
51
56
52
// side-effecting
57
- Body :: offsetMomentum ( bodies[ 0 ] , px, py, pz) ;
53
+ Body :: offset_momentum ( bodies[ 0 ] , px, py, pz) ;
58
54
59
55
ret bodies;
60
56
}
61
57
62
58
fn advance ( bodies : ~[ Body :: props ] , dt : float ) {
63
59
64
- let mut i: int = 0 ;
60
+ let mut i = 0 ;
65
61
while i < 5 {
66
- let mut j: int = i + 1 ;
62
+ let mut j = i + 1 ;
67
63
while j < 5 { advance_one ( bodies[ i] , bodies[ j] , dt) ; j += 1 ; }
68
64
69
65
i += 1 ;
@@ -74,14 +70,14 @@ mod NBodySystem {
74
70
}
75
71
76
72
fn advance_one ( bi : Body :: props , bj : Body :: props , dt : float ) unsafe {
77
- let dx: float = bi. x - bj. x ;
78
- let dy: float = bi. y - bj. y ;
79
- let dz: float = bi. z - bj. z ;
73
+ let dx = bi. x - bj. x ;
74
+ let dy = bi. y - bj. y ;
75
+ let dz = bi. z - bj. z ;
80
76
81
- let dSquared: float = dx * dx + dy * dy + dz * dz;
77
+ let dSquared = dx * dx + dy * dy + dz * dz;
82
78
83
- let distance: float = libc:: sqrt ( dSquared) ;
84
- let mag: float = dt / ( dSquared * distance) ;
79
+ let distance = libc:: sqrt ( dSquared) ;
80
+ let mag = dt / ( dSquared * distance) ;
85
81
86
82
bi. vx -= dx * bj. mass * mag;
87
83
bi. vy -= dy * bj. mass * mag;
@@ -99,20 +95,20 @@ mod NBodySystem {
99
95
}
100
96
101
97
fn energy ( bodies : ~[ Body :: props ] ) -> float unsafe {
102
- let mut dx: float ;
103
- let mut dy: float ;
104
- let mut dz: float ;
105
- let mut distance: float ;
106
- let mut e: float = 0.0 ;
98
+ let mut dx;
99
+ let mut dy;
100
+ let mut dz;
101
+ let mut distance;
102
+ let mut e = 0.0 ;
107
103
108
- let mut i: int = 0 ;
104
+ let mut i = 0 ;
109
105
while i < 5 {
110
106
e +=
111
107
0.5 * bodies[ i] . mass *
112
- ( bodies[ i] . vx * bodies[ i] . vx + bodies[ i] . vy * bodies[ i] . vy
113
- + bodies[ i] . vz * bodies[ i] . vz ) ;
108
+ ( bodies[ i] . vx * bodies[ i] . vx + bodies[ i] . vy * bodies[ i] . vy
109
+ + bodies[ i] . vz * bodies[ i] . vz ) ;
114
110
115
- let mut j: int = i + 1 ;
111
+ let mut j = i + 1 ;
116
112
while j < 5 {
117
113
dx = bodies[ i] . x - bodies[ j] . x ;
118
114
dy = bodies[ i] . y - bodies[ j] . y ;
@@ -197,7 +193,7 @@ mod Body {
197
193
mass : SOLAR_MASS } ;
198
194
}
199
195
200
- fn offsetMomentum ( props : Body :: props , px : float , py : float , pz : float ) {
196
+ fn offset_momentum ( props : Body :: props , px : float , py : float , pz : float ) {
201
197
props. vx = -px / SOLAR_MASS ;
202
198
props. vy = -py / SOLAR_MASS ;
203
199
props. vz = -pz / SOLAR_MASS ;
0 commit comments