OSDN Git Service

math
authoryasutomo <o_ggy@users.sourceforge.jp>
Thu, 12 Nov 2009 11:30:29 +0000 (20:30 +0900)
committeryasutomo <o_ggy@users.sourceforge.jp>
Thu, 12 Nov 2009 11:30:29 +0000 (20:30 +0900)
src/mof/math/Vector2D.cpp [new file with mode: 0644]
src/mof/math/Vector2D.hpp [new file with mode: 0644]

diff --git a/src/mof/math/Vector2D.cpp b/src/mof/math/Vector2D.cpp
new file mode 100644 (file)
index 0000000..0467c32
--- /dev/null
@@ -0,0 +1,75 @@
+\r
+#include "mof/Vector2D.hpp"\r
+\r
+mof::Vector2D::Vector2D(real x_ , real y_)\r
+: x(x_) , y(y_)\r
+{}\r
+\r
+mof::Vector2D::Vector2D(int x_ , int y_)\r
+: x(mof::int2real(x_)) , y(mof::int2real(y_))\r
+{}\r
+\r
+\r
+mof::Vector2D::Vector2D(){\r
+       x = y = 0;\r
+}\r
+\r
+mof::Vector2D::~Vector2D(void)\r
+{\r
+}\r
+\r
+\r
+bool mof::Vector2D::operator == (const mof::Vector2D& obj) const{\r
+       if(x == obj.x && y == obj.y)return true;\r
+       else return false;\r
+}\r
+\r
+bool mof::Vector2D::operator != (const mof::Vector2D& obj) const{\r
+       return !(*this == obj);\r
+}\r
+       \r
+mof::Vector2D mof::Vector2D::operator - () const{\r
+       return mof::Vector2D( -x , -y);\r
+}\r
+       \r
+\r
+\r
+mof::Vector2D mof::Vector2D::operator +( const mof::Vector2D& rhs) const{\r
+       return mof::Vector2D(this->x + rhs.x , this->y + rhs.y);\r
+}\r
+\r
+\r
+mof::Vector2D mof::Vector2D::operator -( const mof::Vector2D& rhs) const{\r
+       return mof::Vector2D(this->x - rhs.x , this->y - rhs.y);\r
+}\r
+               \r
+mof::Vector2D mof::Vector2D::operator *(float rhs) const{\r
+       return mof::Vector2D(this->x * rhs , this->y * rhs);\r
+}\r
+\r
+\r
+mof::Vector2D mof::Vector2D::operator /(float rhs) const{\r
+       return mof::Vector2D(this->x / rhs , this->y / rhs);\r
+}\r
+\r
+\r
+mof::Vector2D mof::operator *(const mof::Vector2D& vec , float f){\r
+       mof::Vector2D obj;\r
+       obj.x = vec.x * f;\r
+       obj.y = vec.y * f;\r
+       return obj;\r
+}\r
+       \r
+mof::Vector2D mof::operator *(float f , const mof::Vector2D& vec ){\r
+       mof::Vector2D obj;\r
+       obj.x = vec.x * f;\r
+       obj.y = vec.y * f;\r
+       return obj;\r
+}\r
+\r
+std::ostream& mof::operator <<(std::ostream& os , const mof::Vector2D& obj)\r
+{\r
+       os << '(' << obj.x << ',' << obj.y << ')';\r
+       return os;      \r
+}\r
+\r
diff --git a/src/mof/math/Vector2D.hpp b/src/mof/math/Vector2D.hpp
new file mode 100644 (file)
index 0000000..f83dd8b
--- /dev/null
@@ -0,0 +1,34 @@
+#ifndef VECTOR2D_HPP\r
+#define VECTOR2D_HPP\r
+#include <mof/real.hpp>\r
+#include <iostream>\r
+\r
+namespace mof{\r
+\r
+       struct Vector2D\r
+       {\r
+               real x , y;\r
+       \r
+               Vector2D(real x_ , real y_);\r
+               Vector2D(int x_ , int y_);\r
+               Vector2D();\r
+               ~Vector2D(void);\r
+       \r
+               mof::Vector2D operator +(const mof::Vector2D& rhs) const;\r
+               mof::Vector2D operator -(const mof::Vector2D& rhs) const;\r
+               mof::Vector2D operator *(float rhs) const;\r
+               mof::Vector2D operator /(float rhs) const;\r
+\r
+               bool operator ==(const mof::Vector2D& obj) const;\r
+               bool operator !=(const mof::Vector2D& obj) const;\r
+        mof::Vector2D operator -( ) const;\r
+\r
+               friend mof::Vector2D operator *(const mof::Vector2D& vec , real f);\r
+               friend mof::Vector2D operator *(real f ,  const mof::Vector2D & vec);\r
+           friend std::ostream& operator <<(std::ostream& os , const Vector2D& obj );\r
+\r
+       };\r
+\r
+};\r
+\r
+#endif\r