aboutsummaryrefslogtreecommitdiff
path: root/include/fml/vec2.h
diff options
context:
space:
mode:
authorFranklin Wei <me@fwei.tk>2019-03-07 19:14:35 -0500
committerFranklin Wei <me@fwei.tk>2019-03-07 19:14:35 -0500
commit31539f3af0c7beea865b29fdda0840c79f14710e (patch)
tree7bea014a44a938f71ea21b3a8ba457b3576348d9 /include/fml/vec2.h
downloadlibfml-31539f3af0c7beea865b29fdda0840c79f14710e.zip
libfml-31539f3af0c7beea865b29fdda0840c79f14710e.tar.gz
libfml-31539f3af0c7beea865b29fdda0840c79f14710e.tar.bz2
libfml-31539f3af0c7beea865b29fdda0840c79f14710e.tar.xz
Import from fieldviz
Diffstat (limited to 'include/fml/vec2.h')
-rw-r--r--include/fml/vec2.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/include/fml/vec2.h b/include/fml/vec2.h
new file mode 100644
index 0000000..166b99c
--- /dev/null
+++ b/include/fml/vec2.h
@@ -0,0 +1,38 @@
+#ifndef VEC2_H
+#define VEC2_H
+#include <iostream>
+
+#include "fml.h"
+
+namespace fml {
+ class vec2 {
+ public:
+ scalar v[2];
+ public:
+ vec2();
+ vec2(scalar x);
+ vec2(scalar x, scalar y);
+ scalar &operator[](int index);
+ scalar operator[](int index) const;
+ vec2 operator*(scalar scale) const;
+ vec2 operator/(scalar scale) const;
+ vec2 operator+(const vec2 &other) const;
+ vec2 operator-(const vec2 &other) const;
+ vec2 operator-() const;
+ const vec2 &operator*=(scalar scale);
+ const vec2 &operator/=(scalar scale);
+ const vec2 &operator+=(const vec2 &other);
+ const vec2 &operator-=(const vec2 &other);
+ scalar magnitude() const;
+ scalar magnitudeSquared() const;
+ vec2 normalize() const;
+ scalar dot(const vec2 &other) const;
+ };
+
+ vec2 operator*(scalar scale, const vec2 &v);
+
+ std::ostream &operator<<(std::ostream &output, const vec2 &v);
+ std::istream &operator>>(std::istream &input, vec3 &v);
+}
+
+#endif