From 4580cb3aca1e88dfb45bc7e8c8d3623746861025 Mon Sep 17 00:00:00 2001 From: Osspial Date: Wed, 9 Aug 2017 14:12:51 -0400 Subject: [PATCH 1/3] Add Sub and SubAssign for all Points --- src/point.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/point.rs b/src/point.rs index c659293..44470f7 100644 --- a/src/point.rs +++ b/src/point.rs @@ -198,9 +198,15 @@ macro_rules! impl_point { impl_operator!( Add<$VectorN > for $PointN { fn add(lhs, rhs) -> $PointN { $PointN::new($(lhs.$field + rhs.$field),+) } }); + impl_operator!( Sub<$VectorN> for $PointN { + fn sub(lhs, rhs) -> $PointN { $PointN::new($(lhs.$field - rhs.$field),+) } + }); impl_assignment_operator!( AddAssign<$VectorN > for $PointN { fn add_assign(&mut self, vector) { $(self.$field += vector.$field);+ } }); + impl_assignment_operator!( SubAssign<$VectorN> for $PointN { + fn sub_assign(&mut self, vector) { $(self.$field += vector.$field);+ } + }); impl_operator!( Sub<$PointN > for $PointN { fn sub(lhs, rhs) -> $VectorN { $VectorN::new($(lhs.$field - rhs.$field),+) } From b2b715c020de1046034c8882b3846b12a5ed03c7 Mon Sep 17 00:00:00 2001 From: Osspial Date: Thu, 10 Aug 2017 18:50:11 -0400 Subject: [PATCH 2/3] Add vector subtraction bound to EuclideanSpace --- src/structure.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/structure.rs b/src/structure.rs index 6c36cc0..1c77c3a 100644 --- a/src/structure.rs +++ b/src/structure.rs @@ -310,6 +310,7 @@ pub trait EuclideanSpace: Copy + Clone where Self: Array::Scalar>, Self: Add<::Diff, Output = Self>, + Self: Sub<::Diff, Output = Self>, Self: Sub::Diff>, Self: Mul<::Scalar, Output = Self>, From 0a9c51da820710753ffd31216d61a59729113e74 Mon Sep 17 00:00:00 2001 From: Osspial Date: Fri, 6 Oct 2017 00:20:38 -0400 Subject: [PATCH 3/3] Fix incorrect operator in sub_assign impl --- src/point.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/point.rs b/src/point.rs index 44470f7..7ace4cb 100644 --- a/src/point.rs +++ b/src/point.rs @@ -205,7 +205,7 @@ macro_rules! impl_point { fn add_assign(&mut self, vector) { $(self.$field += vector.$field);+ } }); impl_assignment_operator!( SubAssign<$VectorN> for $PointN { - fn sub_assign(&mut self, vector) { $(self.$field += vector.$field);+ } + fn sub_assign(&mut self, vector) { $(self.$field -= vector.$field);+ } }); impl_operator!( Sub<$PointN > for $PointN {