Adding operators for matrix and vector classes.
diff --git a/Source/Mat2D.hpp b/Source/Mat2D.hpp
index ed8f191..6277944 100644
--- a/Source/Mat2D.hpp
+++ b/Source/Mat2D.hpp
@@ -26,5 +26,12 @@
 			static bool invert(Mat2D& result, const Mat2D& a);
 			static void copy(Mat2D& result, const Mat2D& a);
 	};
+
+	inline Mat2D operator*(const Mat2D& a, const Mat2D& b)
+	{
+		Mat2D result;
+		Mat2D::multiply(result, a, b);
+		return result;
+	}
 }
 #endif
\ No newline at end of file
diff --git a/Source/Vec2D.cpp b/Source/Vec2D.cpp
index 449ba60..5481ffd 100644
--- a/Source/Vec2D.cpp
+++ b/Source/Vec2D.cpp
@@ -27,6 +27,12 @@
 	result[1] = m[1] * x + m[3] * y + m[5];
 }
 
+void Vec2D::add(Vec2D& result, const Vec2D& a, const Vec2D& b)
+{
+	result[0] = a[0] + b[0];
+	result[1] = a[1] + b[1];
+}
+
 void Vec2D::subtract(Vec2D& result, const Vec2D& a, const Vec2D& b)
 {
 	result[0] = a[0] - b[0];
diff --git a/Source/Vec2D.hpp b/Source/Vec2D.hpp
index 93a3b7c..63c9118 100644
--- a/Source/Vec2D.hpp
+++ b/Source/Vec2D.hpp
@@ -22,10 +22,32 @@
 
 			static void transform(Vec2D& result, const Vec2D& a, const Mat2D& m);
 			static void subtract(Vec2D& result, const Vec2D& a, const Vec2D& b);
+			static void add(Vec2D& result, const Vec2D& a, const Vec2D& b);
 			static float length(const Vec2D& a);
 			static void copy(Vec2D& result, const Vec2D& a);
 			static void normalize(Vec2D& result, const Vec2D& a);
 			static float dot(const Vec2D& a, const Vec2D& b);
 	};
+
+	inline Vec2D operator*(const Mat2D& a, const Vec2D& b)
+	{
+		Vec2D result;
+		Vec2D::transform(result, b, a);
+		return result;
+	}
+
+	inline Vec2D operator-(const Vec2D& a, const Vec2D& b)
+	{
+		Vec2D result;
+		Vec2D::subtract(result, a, b);
+		return result;
+	}
+
+	inline Vec2D operator+(const Vec2D& a, const Vec2D& b)
+	{
+		Vec2D result;
+		Vec2D::add(result, a, b);
+		return result;
+	}
 }
 #endif
\ No newline at end of file