diff options
author | Andrei Karas <akaras@inbox.ru> | 2018-02-17 22:03:30 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2018-02-17 22:03:30 +0300 |
commit | df9a970a5109002f2eab7907718976dfb810803b (patch) | |
tree | 46528c38541f2d48934fd6bccde98f16ece52f88 /src/vector.h | |
parent | 022e1967837a9e065f88ba5036381c54448b203c (diff) | |
download | plus-df9a970a5109002f2eab7907718976dfb810803b.tar.gz plus-df9a970a5109002f2eab7907718976dfb810803b.tar.bz2 plus-df9a970a5109002f2eab7907718976dfb810803b.tar.xz plus-df9a970a5109002f2eab7907718976dfb810803b.zip |
Move vector class into resources directory.
Diffstat (limited to 'src/vector.h')
-rw-r--r-- | src/vector.h | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/src/vector.h b/src/vector.h deleted file mode 100644 index d17502f17..000000000 --- a/src/vector.h +++ /dev/null @@ -1,216 +0,0 @@ -/* - * The ManaPlus Client - * Copyright (C) 2007-2009 The Mana World Development Team - * Copyright (C) 2009-2010 The Mana Developers - * Copyright (C) 2011-2018 The ManaPlus Developers - * - * This file is part of The ManaPlus Client. - * - * 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 2 of the License, or - * 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/>. - */ - -#ifndef VECTOR_H -#define VECTOR_H - -#ifndef USE_SDL2 -#include <cmath> -#endif // USE_SDL2 - -#include <iostream> - -#include "localconsts.h" - -/** - * Vector class. Represents either a 3D point in space, a velocity or a force. - * Provides several convenient operator overloads. - */ -class Vector final -{ - public: - /** - * Constructor. - */ - Vector() : - x(0.0F), - y(0.0F), - z(0.0F) - {} - - /** - * Constructor. - */ - Vector(const float x0, - const float y0, - const float z0) : - x(x0), - y(y0), - z(z0) - {} - - /** - * Copy constructor. - */ - Vector(const Vector &v) : - x(v.x), - y(v.y), - z(v.z) - {} - - A_DEFAULT_COPY(Vector) - - /** - * Returns true if all coordinates are set to 0, otherwise returns - * false. - */ - bool isNull() const noexcept2 A_WARN_UNUSED - { - return x == 0.0F && y == 0.0F && z == 0.0F; - } - - Vector &operator=(const Vector &v) noexcept2 - { - x = v.x; - y = v.y; - z = v.z; - return *this; - } - - /** - * Scale vector operator. - */ - Vector operator*(const float c) const noexcept2 A_WARN_UNUSED - { - return Vector(x * c, - y * c, - z * c); - } - - /** - * In-place scale vector operator. - */ - Vector &operator*=(const float c) noexcept2 - { - x *= c; - y *= c; - z *= c; - return *this; - } - - /** - * Scale vector operator. - */ - Vector operator/(const float c) const noexcept2 A_WARN_UNUSED - { - return Vector(x / c, - y / c, - z / c); - } - - /** - * In-place scale vector operator. - */ - Vector &operator/=(const float c) noexcept2 A_WARN_UNUSED - { - x /= c; - y /= c; - z /= c; - return *this; - } - - /** - * Add vector operator. - */ - Vector operator+(const Vector &v) const noexcept2 A_WARN_UNUSED - { - return Vector(x + v.x, - y + v.y, - z + v.z); - } - - /** - * In-place add vector operator. - */ - Vector &operator+=(const Vector &v) noexcept2 - { - x += v.x; - y += v.y; - z += v.z; - return *this; - } - - /** - * Subtract vector operator. - */ - Vector operator-(const Vector &v) const noexcept2 A_WARN_UNUSED - { - return Vector(x - v.x, - y - v.y, - z - v.z); - } - - /** - * In-place subtract vector operator. - */ - Vector &operator-=(const Vector &v) noexcept2 - { - x -= v.x; - y -= v.y; - z -= v.z; - return *this; - } - - /** - * Returns the length of this vector. This method does a relatively - * slow square root. - */ - float length() const A_WARN_UNUSED - { - return sqrtf(x * x + y * y + z * z); - } - - /** - * Returns the squared length of this vector. Avoids the square root. - */ - float squaredLength() const noexcept2 A_WARN_UNUSED - { - return x * x + y * y + z * z; - } - - /** - * Returns the manhattan length of this vector. - */ - float manhattanLength() const A_WARN_UNUSED - { - return fabsf(x) + fabsf(y) + fabsf(z); - } - - /** - * Returns a normalized version of this vector. This is a unit vector - * running parallel to it. - */ - Vector normalized() const A_WARN_UNUSED - { - const float len = length(); - return Vector(x / len, y / len, z / len); - } - - float x, y, z; -}; - -/** - * Appends a string representation of a vector to the output stream. - */ -std::ostream& operator <<(std::ostream &os, const Vector &v); - -#endif // VECTOR_H |