better mutate vector instead of cloning and normalizing

This commit is contained in:
Thilo Behnke
2022-04-21 20:16:44 +02:00
parent 885ebdbd20
commit 54e19d4d5f
2 changed files with 12 additions and 14 deletions

View File

@@ -28,16 +28,14 @@ pub mod geom {
self.y /= length;
}
pub fn perpendicular_clockwise(&self) -> Vector {
let mut vector = Vector::new(self.y, -self.x);
vector.normalize();
vector
pub fn perpendicular_clockwise(&mut self) {
self.x = self.y;
self.y = -self.x;
}
pub fn perpendicular_counter_clockwise(&self) -> Vector {
let mut vector = Vector::new(-self.y, self.x);
vector.normalize();
vector
pub fn perpendicular_counter_clockwise(&mut self) {
self.x = -self.y;
self.y = self.x;
}
pub fn add(&mut self, other: &Vector) {

View File

@@ -47,11 +47,11 @@ pub fn should_calculate_angle_correctly(
#[case(Vector::new(0., 1.), Vector::new(1., 0.))]
#[case(Vector::new(7., 7.), Vector::new(0.7071067811865476, -0.7071067811865476))]
pub fn should_get_perpendicular_clockwise(
#[case] vector: Vector,
#[case] mut vector: Vector,
#[case] expected: Vector
) {
let res = vector.perpendicular_clockwise();
assert_eq!(res, expected);
vector.perpendicular_clockwise();
assert_eq!(vector, expected);
}
#[rstest]
@@ -59,9 +59,9 @@ pub fn should_get_perpendicular_clockwise(
#[case(Vector::new(1., 0.), Vector::new(0., 1.))]
#[case(Vector::new(7., 7.), Vector::new(-0.7071067811865476, 0.7071067811865476))]
pub fn should_get_perpendicular_counter_clockwise(
#[case] vector: Vector,
#[case] mut vector: Vector,
#[case] expected: Vector
) {
let res = vector.perpendicular_counter_clockwise();
assert_eq!(res, expected);
vector.perpendicular_counter_clockwise();
assert_eq!(vector, expected);
}