From 178d716232468e5ae3292f39ccc5abd9c147094e Mon Sep 17 00:00:00 2001 From: Arne Dußin Date: Tue, 10 Nov 2020 18:52:08 +0100 Subject: Add dimension indicator without direct value editing --- src/math/vec2.rs | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'src/math') diff --git a/src/math/vec2.rs b/src/math/vec2.rs index ea549d7..7834ffc 100644 --- a/src/math/vec2.rs +++ b/src/math/vec2.rs @@ -1,11 +1,12 @@ use crate::math::Rect; use alga::general::{ClosedAdd, ClosedSub}; use nalgebra::{RealField, Scalar}; +use num_traits::One; use serde::{Deserialize, Serialize}; use std::cmp::Ordering; use std::convert::{From, Into}; -use std::fmt; -use std::ops::{Add, AddAssign, Div, Mul, Sub, SubAssign}; +use std::ops::{Add, AddAssign, Div, Mul, MulAssign, Neg, Sub, SubAssign}; +use std::{fmt, mem}; #[derive(Clone, Copy, Debug, Default, PartialEq, PartialOrd, Serialize, Deserialize, Eq)] pub struct Vec2 { @@ -24,6 +25,24 @@ impl Vec2 { { (self.x * self.x + self.y * self.y).sqrt() } + + pub fn rotated_90_clockwise(mut self) -> Vec2 + where + T: One + Neg + MulAssign, + { + mem::swap(&mut self.x, &mut self.y); + self.y *= -T::one(); + self + } + + pub fn rotated_90_counterclockwise(mut self) -> Vec2 + where + T: One + Neg + MulAssign, + { + mem::swap(&mut self.x, &mut self.y); + self.x *= -T::one(); + self + } } // This is sad, but also sadly necessary :/ -- cgit v1.2.3-70-g09d2