From b5896e2d7597e42818a47710da22098d178bf8f6 Mon Sep 17 00:00:00 2001 From: tom barrett Date: Tue, 27 Feb 2018 06:59:58 -0600 Subject: -now use velocity and position vector, astroids are now randomly populated --- src/astroid.rs | 47 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 12 deletions(-) (limited to 'src/astroid.rs') diff --git a/src/astroid.rs b/src/astroid.rs index 6aa1807..fb14751 100644 --- a/src/astroid.rs +++ b/src/astroid.rs @@ -1,35 +1,58 @@ use mass::{Mass, Type}; +extern crate rand; +use self::rand::distributions::Range; +use astroid::rand::distributions::Sample; extern crate serde_json; +use astroid::rand::Rng; #[derive(Serialize, Deserialize, Debug)] pub struct Astroid { name : String, t : Type, - location : (f64, f64, f64), + position : (f64, f64, f64), + velocity : (f64, f64, f64), } -impl Mass for Astroid { - fn new(name : &str, location : (f64, f64, f64)) -> Astroid { +impl Astroid { + pub fn new() -> Astroid { + let name : String = rand::thread_rng() + .gen_ascii_chars() + .take(8) + .collect(); + let mut r = Range::new(-50.0, 50.0); + let mut rng = rand::thread_rng(); + let position = (r.sample(&mut rng), r.sample(&mut rng), r.sample(&mut rng)); Astroid { - name : String::from(name), - t : Type::Astroid, - location : location, + name : name, + t : Type::Astroid, + position : position, + velocity : (0.0, 0.0, 0.0), } } +} +impl Mass for Astroid { fn name(&self) -> &String { &self.name } - fn location(&self) -> (f64, f64, f64) { - self.location - } - - fn set_location(&mut self, location : (f64, f64, f64)) { - self.location = location; + fn position(&self) -> (f64, f64, f64) { + self.position } fn serialize(&self) ->String { serde_json::to_string(self).unwrap() } + + fn process(&mut self) { + self.position.0 += self.velocity.0; + self.position.1 += self.velocity.1; + self.position.2 += self.velocity.2; + } + + fn give_acceleration(&mut self, acceleration : (f64, f64, f64)) { + self.velocity.0 += acceleration.0; + self.velocity.1 += acceleration.1; + self.velocity.2 += acceleration.2; + } } -- cgit v1.2.3