4 /// ***** Constructors/Destructors *****
11 Vector2::Vector2(float x, float y)
16 Vector2::Vector2(const Vector2& vec)
26 /// ***** Public Class Methods *****
41 float Vector2::angle() const
47 float Vector2::length() const
49 return sqrt(x*x + y*y);
53 string Vector2::toString() const
55 // long just to be safe
56 char* strX = new char[50];
57 char* strY = new char[50];
59 sprintf(strX, "%f", x);
60 sprintf(strY, "%f", y);
62 string val = (string)"Vector2 x: " + strX + ", y: " + strY;
64 // deletes the allocated memory, not just what is used by sprintf
70 void Vector2::print() const
72 printf("%s\n",toString().c_str());
76 Vector2 Vector2::add(const Vector2& vec) const
78 return Vector2(x+vec.x, y+vec.y);
80 Vector2 Vector2::subtract(const Vector2& vec) const
82 return Vector2(x-vec.x, y-vec.y);
84 Vector2 Vector2::multiply(float c) const
86 return Vector2(x*c, y*c);
88 Vector2 Vector2::divide(float c) const
90 return Vector2(x/c, y/c);
93 /// ***** Public Methods *****
95 Vector2 operator+(const Vector2& vec1, const Vector2& vec2)
97 return vec1.add(vec2);
99 Vector2 operator-(const Vector2& vec1, const Vector2& vec2)
101 return vec1.subtract(vec2);
103 Vector2 operator*(float c, const Vector2& vec)
105 return vec.multiply(c);
107 Vector2 operator*(const Vector2& vec, float c)
109 return vec.multiply(c);
111 Vector2 operator/(const Vector2& vec, float c)
113 return vec.divide(c);
117 void operator+=(Vector2& vec1, const Vector2& vec2)
122 void operator-=(Vector2& vec1, const Vector2& vec2)
127 void operator*=(Vector2& vec, float c)
132 void operator/=(Vector2& vec, float c)