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/>.
23 /// ***** Constructors/Destructors *****
30 Vector2::Vector2(float fX, float fY)
36 /// ***** Public Class Methods *****
45 float fLen = length();
51 float Vector2::angle() const
55 //return atan2A(m_fY,m_fX);
58 float Vector2::length() const
60 return sqrt(sqrLength());
62 float Vector2::sqrLength() const
64 return this->dot(*this);
67 float Vector2::dot(const Vector2& vec) const
69 return m_fX * vec.m_fX + m_fY * vec.m_fY;
73 string Vector2::toString() const
75 // long just to be safe
78 sprintf(rgchars, "Vector2 X: %f, Y: %f", m_fX, m_fY);
82 void Vector2::print() const
84 printf("%s\n", toString().c_str());
88 Vector2 Vector2::add(const Vector2& vec) const
90 return Vector2(m_fX + vec.m_fX, m_fY + vec.m_fY);
92 Vector2 Vector2::subtract(const Vector2& vec) const
94 return Vector2(m_fX - vec.m_fX, m_fY - vec.m_fY);
96 Vector2 Vector2::multiply(float f) const
98 return Vector2(m_fX * f, m_fY * f);
100 Vector2 Vector2::divide(float f) const
102 return Vector2(m_fX / f, m_fY / f);
105 /// ***** Public Methods *****
107 Vector2 operator+(const Vector2& vec1, const Vector2& vec2)
109 return vec1.add(vec2);
111 Vector2 operator-(const Vector2& vec1, const Vector2& vec2)
113 return vec1.subtract(vec2);
115 Vector2 operator*(float f, const Vector2& vec)
117 return vec.multiply(f);
119 Vector2 operator*(const Vector2& vec, float f)
121 return vec.multiply(f);
123 Vector2 operator/(const Vector2& vec, float f)
125 return vec.divide(f);
129 void operator+=(Vector2& vec1, const Vector2& vec2)
131 vec1.m_fX += vec2.m_fX;
132 vec1.m_fY += vec2.m_fY;
134 void operator-=(Vector2& vec1, const Vector2& vec2)
136 vec1.m_fX -= vec2.m_fX;
137 vec1.m_fY -= vec2.m_fY;
139 void operator*=(Vector2& vec, float f)
144 void operator/=(Vector2& vec, float f)