From 3527f10f8767b3b62b876f8a3f3bc5bd3ba56b2d Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Fri, 31 May 2019 07:35:55 +0200 Subject: Add Vec2 --- game_server/src/maths.rs | 54 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 game_server/src/maths.rs diff --git a/game_server/src/maths.rs b/game_server/src/maths.rs new file mode 100644 index 0000000..635eed6 --- /dev/null +++ b/game_server/src/maths.rs @@ -0,0 +1,54 @@ +pub struct Vec2 { + pub x: f32, + pub y: f32, +} + +impl std::ops::Add for Vec2 { + type Output = Self; + fn add(self, other: Self) -> Self { + Self { + x: x + other.x, + y: y + other.y + } + } +} + +impl std::ops::Sub for Vec2 { + type Output = Self; + fn sub(self, other: Self) -> Self { + Self { + x: x - other.x, + y: y - other.y + } + } +} + +impl std::ops::Neg for Vec2 { + type Output = Self; + fn sub(self) -> Self { + Self { + x: -x, + y: -y + } + } +} + +impl std::cmp::PartialEq for Vec2 { + type Output = bool; + fn eq(&self, other: &Self) -> bool { + f32::abs(self.x - other.x) < 1e-8 + && f32::abs(self.y - other.y) < 1e-8 + } +} + +impl std::cmp::Eq for Vec2 {} + +impl Vec2 { + pub fn distance(&self) -> f32 { + f32::sqrt(self.distance2) + } + + pub fn distance2(&self) -> f32 { + self.x * self.x + self.y * self.y + } +} -- cgit v1.2.3-54-g00ecf