Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-10-05 20:29:47 +0000
committerStijn Buys <ingar@osirion.org>2008-10-05 20:29:47 +0000
commitcd5832676aa34e693ebc0391cd0994f8e60c7120 (patch)
tree412686fbdf7507e5127f1c5253bede055165bab0 /src/math/vector2f.h
parent9c3baab33a0fa48e7379f0485116452779a1cd37 (diff)
vector2f files
Diffstat (limited to 'src/math/vector2f.h')
-rw-r--r--src/math/vector2f.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/math/vector2f.h b/src/math/vector2f.h
new file mode 100644
index 0000000..87f61a8
--- /dev/null
+++ b/src/math/vector2f.h
@@ -0,0 +1,74 @@
+/*
+ math/vector2f.h
+ This file is part of the Osirion project and is distributed under
+ the terms of the GNU General Public License version 2
+*/
+
+#ifndef __INCLUDED_MATH_VECTOR2F_H__
+#define __INCLUDED_MATH_VECTOR2F_H__
+
+#include <iostream>
+
+namespace math {
+
+/// a point or vector in 2D space
+class Vector2f {
+
+public:
+ /// default constructor
+ Vector2f();
+ /// assignment constructor
+ Vector2f(float const x, float const y);
+ /// copy constructor
+ Vector2f(Vector2f const &other);
+
+ /// assign (0,0)
+ void clear();
+
+ /// assignment operator
+ void assign(float const x, float const y);
+ /// assignment operator
+ void assign(Vector2f const &other);
+
+ /// assignment operator
+ Vector2f & operator=(Vector2f const &other);
+
+ /// vector subtraction
+ Vector2f & operator-=(Vector2f const &other);
+
+ /// vector sum
+ Vector2f & operator+=(Vector2f const &other);
+
+ /// vector subtraction
+ Vector2f operator-(Vector2f const &other) const;
+
+ /// vector sum
+ Vector2f operator+(Vector2f const &other) const;
+
+
+ /// array operator
+ inline float& operator[](const size_t index) {
+ return coord[index];
+ }
+
+ /// array operator
+ inline float operator[](const size_t index) const {
+ return coord[index];
+ }
+
+ /// a pointer to the internal data
+ inline float *ptr() const { return (float *) coord; }
+
+ /// x coordinate
+ float &x;
+
+ /// y coordinate
+ float &y;
+
+private:
+ float coord[2];
+};
+
+}
+#endif // __INCLUDED_MATH_VECTOR2F_H__
+