diff --git a/src/cgmath/matrix.rs b/src/cgmath/matrix.rs index 02ba5e1..e5620ed 100644 --- a/src/cgmath/matrix.rs +++ b/src/cgmath/matrix.rs @@ -417,13 +417,13 @@ pub trait Matrix fn is_symmetric(&self) -> bool; } -impl Add, Matrix2> for Matrix2 { #[inline] fn add(&self, other: &Matrix2) -> Matrix2 { build(|i| self.i(i).add_v(other.i(i))) } } -impl Add, Matrix3> for Matrix3 { #[inline] fn add(&self, other: &Matrix3) -> Matrix3 { build(|i| self.i(i).add_v(other.i(i))) } } -impl Add, Matrix4> for Matrix4 { #[inline] fn add(&self, other: &Matrix4) -> Matrix4 { build(|i| self.i(i).add_v(other.i(i))) } } +impl Add, Matrix2> for Matrix2 { #[inline] fn add(&self, other: &Matrix2) -> Matrix2 { self.add_m(other) } } +impl Add, Matrix3> for Matrix3 { #[inline] fn add(&self, other: &Matrix3) -> Matrix3 { self.add_m(other) } } +impl Add, Matrix4> for Matrix4 { #[inline] fn add(&self, other: &Matrix4) -> Matrix4 { self.add_m(other) } } -impl Sub, Matrix2> for Matrix2 { #[inline] fn sub(&self, other: &Matrix2) -> Matrix2 { build(|i| self.i(i).sub_v(other.i(i))) } } -impl Sub, Matrix3> for Matrix3 { #[inline] fn sub(&self, other: &Matrix3) -> Matrix3 { build(|i| self.i(i).sub_v(other.i(i))) } } -impl Sub, Matrix4> for Matrix4 { #[inline] fn sub(&self, other: &Matrix4) -> Matrix4 { build(|i| self.i(i).sub_v(other.i(i))) } } +impl Sub, Matrix2> for Matrix2 { #[inline] fn sub(&self, other: &Matrix2) -> Matrix2 { self.sub_m(other) } } +impl Sub, Matrix3> for Matrix3 { #[inline] fn sub(&self, other: &Matrix3) -> Matrix3 { self.sub_m(other) } } +impl Sub, Matrix4> for Matrix4 { #[inline] fn sub(&self, other: &Matrix4) -> Matrix4 { self.sub_m(other) } } impl Neg> for Matrix2 { #[inline] fn neg(&self) -> Matrix2 { build(|i| self.i(i).neg()) } } impl Neg> for Matrix3 { #[inline] fn neg(&self) -> Matrix3 { build(|i| self.i(i).neg()) } } @@ -433,9 +433,9 @@ impl Zero for Matrix2 { #[inline] fn zero() -> Matrix2 { Mat impl Zero for Matrix3 { #[inline] fn zero() -> Matrix3 { Matrix3::zero() } #[inline] fn is_zero(&self) -> bool { *self == zero() } } impl Zero for Matrix4 { #[inline] fn zero() -> Matrix4 { Matrix4::zero() } #[inline] fn is_zero(&self) -> bool { *self == zero() } } -impl Mul, Matrix2> for Matrix2 { #[inline] fn mul(&self, other: &Matrix2) -> Matrix2 { build(|i| self.i(i).mul_v(other.i(i))) } } -impl Mul, Matrix3> for Matrix3 { #[inline] fn mul(&self, other: &Matrix3) -> Matrix3 { build(|i| self.i(i).mul_v(other.i(i))) } } -impl Mul, Matrix4> for Matrix4 { #[inline] fn mul(&self, other: &Matrix4) -> Matrix4 { build(|i| self.i(i).mul_v(other.i(i))) } } +impl Mul, Matrix2> for Matrix2 { #[inline] fn mul(&self, other: &Matrix2) -> Matrix2 { self.mul_m(other) } } +impl Mul, Matrix3> for Matrix3 { #[inline] fn mul(&self, other: &Matrix3) -> Matrix3 { self.mul_m(other) } } +impl Mul, Matrix4> for Matrix4 { #[inline] fn mul(&self, other: &Matrix4) -> Matrix4 { self.mul_m(other) } } impl One for Matrix2 { #[inline] fn one() -> Matrix2 { Matrix2::identity() } } impl One for Matrix3 { #[inline] fn one() -> Matrix3 { Matrix3::identity() } } diff --git a/src/test/matrix.rs b/src/test/matrix.rs index 8b036a4..d95a787 100644 --- a/src/test/matrix.rs +++ b/src/test/matrix.rs @@ -136,6 +136,7 @@ fn test_add_m() { let mut mut_a = matrix2::A; mut_a.add_self_m(&matrix2::B); assert_eq!(mut_a, matrix2::A.add_m(&matrix2::B)); + assert_eq!(mut_a, matrix2::A + matrix2::B); // Matrix3 assert_eq!(matrix3::A.add_m(&matrix3::B), @@ -145,6 +146,7 @@ fn test_add_m() { let mut mut_a = matrix3::A; mut_a.add_self_m(&matrix3::B); assert_eq!(mut_a, matrix3::A.add_m(&matrix3::B)); + assert_eq!(mut_a, matrix3::A + matrix3::B); // Matrix4 assert_eq!(matrix4::A.add_m(&matrix4::B), @@ -155,6 +157,7 @@ fn test_add_m() { let mut mut_a = matrix4::A; mut_a.add_self_m(&matrix4::B); assert_eq!(mut_a, matrix4::A.add_m(&matrix4::B)); + assert_eq!(mut_a, matrix4::A + matrix4::B); } #[test] @@ -166,6 +169,7 @@ fn test_sub_m() { let mut mut_a = matrix2::A; mut_a.sub_self_m(&matrix2::B); assert_eq!(mut_a, matrix2::A.sub_m(&matrix2::B)); + assert_eq!(matrix2::A.sub_m(&matrix2::B), matrix2::A - matrix2::B); // Matrix3 assert_eq!(matrix3::A.sub_m(&matrix3::B), @@ -175,6 +179,7 @@ fn test_sub_m() { let mut mut_a = matrix3::A; mut_a.sub_self_m(&matrix3::B); assert_eq!(mut_a, matrix3::A.sub_m(&matrix3::B)); + assert_eq!(matrix3::A.sub_m(&matrix3::B), matrix3::A - matrix3::B); // Matrix4 assert_eq!(matrix4::A.sub_m(&matrix4::B), @@ -185,6 +190,7 @@ fn test_sub_m() { let mut mut_a = matrix4::A; mut_a.sub_self_m(&matrix4::B); assert_eq!(mut_a, matrix4::A.sub_m(&matrix4::B)); + assert_eq!(matrix4::A.sub_m(&matrix4::B), matrix4::A - matrix4::B); } #[test] @@ -208,6 +214,10 @@ fn test_mul_m() { 110.0, 254.0, 398.0, 542.0, 120.0, 280.0, 440.0, 600.0, 130.0, 306.0, 482.0, 658.0)); + + assert_eq!(matrix2::A.mul_m(&matrix2::B), matrix2::A * matrix2::B); + assert_eq!(matrix3::A.mul_m(&matrix3::B), matrix3::A * matrix3::B); + assert_eq!(matrix4::A.mul_m(&matrix4::B), matrix4::A * matrix4::B); } #[test]