(&mut self)
| 52 | } |
| 53 | |
| 54 | pub fn update(&mut self) { |
| 55 | for i in 0..self.bodies.len() { |
| 56 | let p1 = self.bodies[i].pos; |
| 57 | let m1 = self.bodies[i].mass; |
| 58 | for j in (i+1)..self.bodies.len() { |
| 59 | let p2 = self.bodies[j].pos; |
| 60 | let m2 = self.bodies[j].mass; |
| 61 | |
| 62 | let r = p2 - p1; |
| 63 | let mag_sq = r.x * r.x + r.y * r.y; |
| 64 | let mag = mag_sq.sqrt(); |
| 65 | let tmp = r / (mag_sq.max(MIN) * mag); |
| 66 | |
| 67 | self.bodies[i].acc += m2 * tmp; |
| 68 | self.bodies[j].acc -= m1 * tmp; |
| 69 | } |
| 70 | } |
| 71 | |
| 72 | for i in 0..self.bodies.len() { |
| 73 | self.bodies[i].update(DT); |
| 74 | } |
| 75 | } |
| 76 | } |
nothing calls this directly
no outgoing calls
no test coverage detected