/* math/vector2f.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #include #include #include "math/vector2f.h" namespace math { Vector2f::Vector2f() { clear(); } Vector2f::Vector2f(const Vector2f &other) { assign(other); } Vector2f::Vector2f(const float x, const float y) { assign(x, y); } void Vector2f::clear() { memset(coord, 0, sizeof(coord)); } void Vector2f::assign(const Vector2f &other) { memcpy(coord, other.coord, sizeof(coord)); } void Vector2f::assign(const float x, const float y) { coord[0] = x; coord[1] = y; } Vector2f &Vector2f::operator=(const Vector2f &other) { assign(other); return (*this); } Vector2f &Vector2f::operator+=(const Vector2f &other) { coord[0] += other.coord[0]; coord[1] += other.coord[1]; return (*this); } Vector2f &Vector2f::operator-=(const Vector2f &other) { coord[0] -= other.coord[0]; coord[1] -= other.coord[1]; return (*this); } Vector2f & Vector2f::operator*=(const float scalar) { coord[0] *= scalar; coord[1] *= scalar; return (*this); } Vector2f & Vector2f::operator/=(const float scalar) { coord[0] /= scalar; coord[1] /= scalar; return (*this); } float Vector2f::length() const { return (sqrtf((coord[0] * coord[0]) + (coord[1] * coord[1]))); } float distance(const Vector2f& first, const Vector2f& second) { float r = 0; for (int i = 0; i < 2; i++) r += (first[i] - second[i]) * (first[i] - second[i]); return (sqrtf(r)); } float distancesquared(const Vector2f& first, const Vector2f& second) { float r = 0; for (int i = 0; i < 2; i++) r += (first[i] - second[i]) * (first[i] - second[i]); return (r); } Vector2f operator*(float scalar, const Vector2f &vector) { return vector * scalar; } }