@@ -70,33 +70,30 @@ struct Planet {
70
70
71
71
fn advance ( bodies : & mut [ Planet , ..N_BODIES ] , dt : f64 , steps : int ) {
72
72
for _ in range ( 0 , steps) {
73
- {
74
- let mut b_slice = bodies. as_mut_slice ( ) ;
75
- loop {
76
- let bi = match b_slice. mut_shift_ref ( ) {
77
- Some ( bi) => bi,
78
- None => break
79
- } ;
80
- for bj in b_slice. mut_iter ( ) {
81
- let dx = bi. x - bj. x ;
82
- let dy = bi. y - bj. y ;
83
- let dz = bi. z - bj. z ;
73
+ let mut b_slice = bodies. as_mut_slice ( ) ;
74
+ loop {
75
+ let bi = match b_slice. mut_shift_ref ( ) {
76
+ Some ( bi) => bi,
77
+ None => break
78
+ } ;
79
+ for bj in b_slice. mut_iter ( ) {
80
+ let dx = bi. x - bj. x ;
81
+ let dy = bi. y - bj. y ;
82
+ let dz = bi. z - bj. z ;
84
83
85
- let d2 = dx * dx + dy * dy + dz * dz;
86
- let mag = dt / ( d2 * d2. sqrt ( ) ) ;
84
+ let d2 = dx * dx + dy * dy + dz * dz;
85
+ let mag = dt / ( d2 * d2. sqrt ( ) ) ;
87
86
88
- bi. vx -= dx * bj. mass * mag;
89
- bi. vy -= dy * bj. mass * mag;
90
- bi. vz -= dz * bj. mass * mag;
87
+ let massj_mag = bj. mass * mag;
88
+ bi. vx -= dx * massj_mag;
89
+ bi. vy -= dy * massj_mag;
90
+ bi. vz -= dz * massj_mag;
91
91
92
- bj . vx += dx * bi. mass * mag;
93
- bj. vy += dy * bi . mass * mag ;
94
- bj. vz += dz * bi . mass * mag ;
95
- }
92
+ let massi_mag = bi. mass * mag;
93
+ bj. vx += dx * massi_mag ;
94
+ bj. vy += dy * massi_mag ;
95
+ bj . vz += dz * massi_mag ;
96
96
}
97
- }
98
-
99
- for bi in bodies. mut_iter ( ) {
100
97
bi. x += dt * bi. vx ;
101
98
bi. y += dt * bi. vy ;
102
99
bi. z += dt * bi. vz ;
0 commit comments