2 * Copyright (C) 2008 Patrik Gornicz, Gornicz_P (at) hotmail (dot) com.
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21 /// ***** Constructors/Destructors *****
28 Vector2::Vector2(float x, float y)
33 Vector2::Vector2(const Vector2& vec)
43 /// ***** Public Class Methods *****
58 float Vector2::angle() const
64 float Vector2::length() const
66 return sqrt(x*x + y*y);
70 string Vector2::toString() const
72 // long just to be safe
73 char* strX = new char[50];
74 char* strY = new char[50];
76 sprintf(strX, "%f", x);
77 sprintf(strY, "%f", y);
79 string val = (string)"Vector2 x: " + strX + ", y: " + strY;
81 // deletes the allocated memory, not just what is used by sprintf
87 void Vector2::print() const
89 printf("%s\n",toString().c_str());
93 Vector2 Vector2::add(const Vector2& vec) const
95 return Vector2(x+vec.x, y+vec.y);
97 Vector2 Vector2::subtract(const Vector2& vec) const
99 return Vector2(x-vec.x, y-vec.y);
101 Vector2 Vector2::multiply(float c) const
103 return Vector2(x*c, y*c);
105 Vector2 Vector2::divide(float c) const
107 return Vector2(x/c, y/c);
110 /// ***** Public Methods *****
112 Vector2 operator+(const Vector2& vec1, const Vector2& vec2)
114 return vec1.add(vec2);
116 Vector2 operator-(const Vector2& vec1, const Vector2& vec2)
118 return vec1.subtract(vec2);
120 Vector2 operator*(float c, const Vector2& vec)
122 return vec.multiply(c);
124 Vector2 operator*(const Vector2& vec, float c)
126 return vec.multiply(c);
128 Vector2 operator/(const Vector2& vec, float c)
130 return vec.divide(c);
134 void operator+=(Vector2& vec1, const Vector2& vec2)
139 void operator-=(Vector2& vec1, const Vector2& vec2)
144 void operator*=(Vector2& vec, float c)
149 void operator/=(Vector2& vec, float c)