-/*
- * Copyright (C) 2008 Patrik Gornicz, Gornicz_P (at) hotmail (dot) com.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "Vector2.h"
-#include "debug.h"
-
-#include "mathw.h"
-
-/// ***** Constructors/Destructors *****
-
-Vector2::Vector2()
- : m_fX(0), m_fY(0)
-{
-
-}
-Vector2::Vector2(float fX, float fY)
- : m_fX(fX), m_fY(fY)
-{
-
-}
-
-/// ***** Public Class Methods *****
-
-void Vector2::zero()
-{
- m_fX = 0;
- m_fY = 0;
-}
-void Vector2::unit()
-{
- float fLen = length();
-
- m_fX /= fLen;
- m_fY /= fLen;
-}
-
-float Vector2::angle() const
-{
- //TODO
- DASSERT(false);
- //return atan2A(m_fY,m_fX);
- return 0;
-}
-float Vector2::length() const
-{
- return sqrt(sqrLength());
-}
-float Vector2::sqrLength() const
-{
- return this->dot(*this);
-}
-
-float Vector2::dot(const Vector2& vec) const
-{
- return m_fX * vec.m_fX + m_fY * vec.m_fY;
-}
-
-
-string Vector2::toString() const
-{
- // long just to be safe
- char rgchars[100];
-
- sprintf(rgchars, "Vector2 X: %f, Y: %f", m_fX, m_fY);
-
- return rgchars;
-}
-void Vector2::print() const
-{
- printf("%s\n", toString().c_str());
-}
-
-
-Vector2 Vector2::add(const Vector2& vec) const
-{
- return Vector2(m_fX + vec.m_fX, m_fY + vec.m_fY);
-}
-Vector2 Vector2::subtract(const Vector2& vec) const
-{
- return Vector2(m_fX - vec.m_fX, m_fY - vec.m_fY);
-}
-Vector2 Vector2::multiply(float f) const
-{
- return Vector2(m_fX * f, m_fY * f);
-}
-Vector2 Vector2::divide(float f) const
-{
- return Vector2(m_fX / f, m_fY / f);
-}
-
-/// ***** Public Methods *****
-
-Vector2 operator+(const Vector2& vec1, const Vector2& vec2)
-{
- return vec1.add(vec2);
-}
-Vector2 operator-(const Vector2& vec1, const Vector2& vec2)
-{
- return vec1.subtract(vec2);
-}
-Vector2 operator*(float f, const Vector2& vec)
-{
- return vec.multiply(f);
-}
-Vector2 operator*(const Vector2& vec, float f)
-{
- return vec.multiply(f);
-}
-Vector2 operator/(const Vector2& vec, float f)
-{
- return vec.divide(f);
-}
-
-
-void operator+=(Vector2& vec1, const Vector2& vec2)
-{
- vec1.m_fX += vec2.m_fX;
- vec1.m_fY += vec2.m_fY;
-}
-void operator-=(Vector2& vec1, const Vector2& vec2)
-{
- vec1.m_fX -= vec2.m_fX;
- vec1.m_fY -= vec2.m_fY;
-}
-void operator*=(Vector2& vec, float f)
-{
- vec.m_fX *= f;
- vec.m_fY *= f;
-}
-void operator/=(Vector2& vec, float f)
-{
- vec.m_fX /= f;
- vec.m_fY /= f;
-}