diff options
Diffstat (limited to 'src/math')
-rw-r--r-- | src/math/matrix4f.cc | 3 | ||||
-rw-r--r-- | src/math/matrix4f.h | 2 | ||||
-rw-r--r-- | src/math/vector2f.cc | 24 | ||||
-rw-r--r-- | src/math/vector2f.h | 19 |
4 files changed, 44 insertions, 4 deletions
diff --git a/src/math/matrix4f.cc b/src/math/matrix4f.cc index b7953e9..caccae6 100644 --- a/src/math/matrix4f.cc +++ b/src/math/matrix4f.cc @@ -4,8 +4,7 @@ the terms of the GNU General Public License version 2 */ -#include <string.h> - +#include <cstring> #include <cmath> #include "math/matrix4f.h" diff --git a/src/math/matrix4f.h b/src/math/matrix4f.h index 4148870..5442cb9 100644 --- a/src/math/matrix4f.h +++ b/src/math/matrix4f.h @@ -7,8 +7,6 @@ #ifndef __INCLUDED_MATH_MATRIX4F_H__ #define __INCLUDED_MATH_MATRIX4F_H__ -#include <iostream> - #include "math/axis.h" namespace math diff --git a/src/math/vector2f.cc b/src/math/vector2f.cc index 878304f..bff60c9 100644 --- a/src/math/vector2f.cc +++ b/src/math/vector2f.cc @@ -63,6 +63,25 @@ Vector2f &Vector2f::operator-=(const Vector2f &other) 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; @@ -80,4 +99,9 @@ float distancesquared(const Vector2f& first, const Vector2f& second) return (r); } +Vector2f operator*(float scalar, const Vector2f &vector) +{ + return vector * scalar; +} + } diff --git a/src/math/vector2f.h b/src/math/vector2f.h index 1a5f4de..7641cbc 100644 --- a/src/math/vector2f.h +++ b/src/math/vector2f.h @@ -43,6 +43,18 @@ public: /// vector sum Vector2f & operator+=(const Vector2f &other); + + /** + * @brief scalar multiplication assignment + * @param scalar multiplication factor + * */ + Vector2f& operator*=(const float scalar); + + /** + * @brief scalar division assignment + * @param scalar divider + * */ + Vector2f& operator/=(const float scalar); /// vector subtraction inline Vector2f operator+(const Vector2f &other) const { @@ -97,6 +109,10 @@ public: inline float y() const { return coord[1]; } + + /// cartesian length + float length() const; + /// mutable reference to the x coordinate inline float & get_x() { @@ -131,6 +147,9 @@ float distance(const Vector2f& first, const Vector2f& second); /// distance between two vectors squared float distancesquared(const Vector2f& first, const Vector2f& second); +/// scalar * Vector2f operators +Vector2f operator*(float scalar, const Vector2f & vector); + } #endif // __INCLUDED_MATH_VECTOR2F_H__ |