diff --git a/src/point.rs b/src/point.rs index 583e43d..59c9a56 100644 --- a/src/point.rs +++ b/src/point.rs @@ -222,9 +222,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),+) } diff --git a/src/structure.rs b/src/structure.rs index 540cd82..07d8099 100644 --- a/src/structure.rs +++ b/src/structure.rs @@ -319,6 +319,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>,