diff --git a/matrix/Matrix.hpp b/matrix/Matrix.hpp index d260256e7b..45e22b6307 100644 --- a/matrix/Matrix.hpp +++ b/matrix/Matrix.hpp @@ -194,6 +194,11 @@ public: return res; } + inline Matrix operator-(Type scalar) const + { + return (*this) + (-1*scalar); + } + void operator*=(Type scalar) { Matrix &self = *this; @@ -211,6 +216,17 @@ public: self = self * (1.0f / scalar); } + inline void operator+=(Type scalar) + { + *this = (*this) + scalar; + } + + inline void operator-=(Type scalar) + { + *this = (*this) - scalar; + } + + /** * Misc. Functions */ diff --git a/test/matrixAssignment.cpp b/test/matrixAssignment.cpp index e9f5d3152c..635d0291e8 100644 --- a/test/matrixAssignment.cpp +++ b/test/matrixAssignment.cpp @@ -26,7 +26,30 @@ int main() Matrix3f m2(data); m2.print(); + for(int i=0; i<9; i++) { + assert(fabs(data[i] - m2.data()[i]) < 1e-6f); + } + + float data_times_2[9] = {2, 4, 6, 8, 10, 12, 14, 16, 18}; + Matrix3f m3(data_times_2); + assert(m == m2); + assert(!(m == m3)); + + m2 *= 2; + assert(m2 == m3); + + m2 /= 2; + m2 -= 1; + float data_minus_1[9] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; + assert(Matrix3f(data_minus_1) == m2); + + m2 += 1; + assert(Matrix3f(data) == m2); + + m3 -= m2; + + assert(m3 == m2); return 0; }