Bugs walking to the middle of the screen slowly
[bug-basher.git] / src / geometry.rs
1 use std::ops::*;
2
3 #[derive(Debug, Clone, Copy, PartialEq)]
4 pub struct Vec2d {
5     pub x: f64,
6     pub y: f64
7 }
8
9 impl Vec2d {
10     pub fn distance(&self, other: Vec2d) -> f64 {
11         ((other.x-self.x).powi(2) + (other.y-self.y).powi(2)).sqrt()
12     }
13     pub fn angle(&self) -> f64 {
14         self.y.atan2(self.x)
15     }
16 }
17
18 impl Add for Vec2d {
19     type Output = Vec2d;
20
21     fn add(self, other: Self) -> Self {
22         Vec2d {
23             x: self.x + other.x,
24             y: self.y + other.y
25         }
26     }
27 }
28
29 impl Sub for Vec2d {
30     type Output = Vec2d;
31
32     fn sub(self, other: Self) -> Self {
33         Vec2d {
34             x: self.x - other.x,
35             y: self.y - other.y
36         }
37     }
38 }
39
40 impl Neg for Vec2d {
41     type Output = Vec2d;
42
43     fn neg(self) -> Self {
44         Vec2d {
45             x: -self.x,
46             y: -self.y
47         }
48     }
49 }