]> git.localhorst.tv Git - space.git/blobdiff - src/math/Vector.h
simple zoom
[space.git] / src / math / Vector.h
index 57159bff2e0e01193e4a8ea16952eace97e9e4b7..b5c6d7d11dd9f9452c0a65b781a511b8fa9603ad 100644 (file)
@@ -2,6 +2,7 @@
 #define SPACE_VECTOR_H_
 
 #include <algorithm>
+#include <ostream>
 
 
 namespace space {
@@ -66,6 +67,37 @@ constexpr Vector<Scalar> operator *(Vector<Scalar> lhs, Vector<Scalar> rhs) {
        return Vector<Scalar>(lhs.x * rhs.x, lhs.y * rhs.y);
 }
 
+
+template<class Scalar>
+constexpr Vector<Scalar> operator /(Vector<Scalar> lhs, Scalar rhs) {
+       return Vector<Scalar>(lhs.x / rhs, lhs.y / rhs);
+}
+
+template<class Scalar>
+constexpr Vector<Scalar> operator /(Scalar lhs, Vector<Scalar> rhs) {
+       return rhs / lhs;
+}
+template<class Scalar>
+constexpr Vector<Scalar> operator /(Vector<Scalar> lhs, Vector<Scalar> rhs) {
+       return Vector<Scalar>(lhs.x / rhs.x, lhs.y / rhs.y);
+}
+
+
+template<class Scalar>
+constexpr bool operator ==(Vector<Scalar> lhs, Vector<Scalar> rhs) {
+       return lhs.x == rhs.x && lhs.y == rhs.y;
+}
+template<class Scalar>
+constexpr bool operator !=(Vector<Scalar> lhs, Vector<Scalar> rhs) {
+       return lhs.x != rhs.x && lhs.y != rhs.y;
+}
+
+
+template<class Scalar>
+inline std::ostream &operator <<(std::ostream &out, Vector<Scalar> v) {
+       return out << '<' << v.x << ',' << v.y << '>';
+}
+
 }