]> git.localhorst.tv Git - l2e.git/blobdiff - src/geometry/operators.h
added basic vector class + a small set of operators
[l2e.git] / src / geometry / operators.h
diff --git a/src/geometry/operators.h b/src/geometry/operators.h
new file mode 100644 (file)
index 0000000..7a8e7ea
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * operators.h
+ *
+ *  Created on: Aug 6, 2012
+ *      Author: holy
+ */
+
+#ifndef GEOMETRY_OPERATORS_H_
+#define GEOMETRY_OPERATORS_H_
+
+#include "Point.h"
+#include "Vector.h"
+
+namespace geometry {
+
+template<class T>
+inline Vector<T> operator +(const Vector<T> &lhs, const Vector<T> &rhs) {
+       return Vector<T>(lhs.X() + rhs.X(), lhs.Y() + rhs.Y());
+}
+template<class T>
+inline Point<T> operator +(const Point<T> &lhs, const Vector<T> &rhs) {
+       return Point<T>(lhs.X() + rhs.X(), lhs.Y() + rhs.Y());
+}
+
+template<class T>
+inline Vector<T> operator -(const Vector<T> &lhs, const Vector<T> &rhs) {
+       return Vector<T>(lhs.X() - rhs.X(), lhs.Y() - rhs.Y());
+}
+template<class T>
+inline Point<T> operator -(const Point<T> &lhs, const Vector<T> &rhs) {
+       return Point<T>(lhs.X() - rhs.X(), lhs.Y() - rhs.Y());
+}
+
+template<class T>
+inline Vector<T> operator -(const Vector<T> &v) {
+       return Vector<T>(-v.X(), -v.Y());
+}
+
+}
+
+#endif /* GEOMETRY_OPERATORS_H_ */