diff options
Diffstat (limited to 'src/math/point.h')
-rw-r--r-- | src/math/point.h | 216 |
1 files changed, 108 insertions, 108 deletions
diff --git a/src/math/point.h b/src/math/point.h index fdb3051..84be190 100644 --- a/src/math/point.h +++ b/src/math/point.h @@ -12,10 +12,10 @@ // * 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/. +// * along with this program. If not, see http://www.gnu.org/licenses/. /** @defgroup MathPointModule math/point.h - Contains the Point struct and related functions. + Contains the Point struct and related functions. */ #pragma once @@ -35,111 +35,111 @@ namespace Math /** \struct Point math/point.h \brief 2D point - Represents a 2D point (x, y). - Contains the required methods for operating on points. + Represents a 2D point (x, y). + Contains the required methods for operating on points. - All methods are made inline to maximize optimization. + All methods are made inline to maximize optimization. */ struct Point { - //! X coord - float x; - //! Y coord - float y; - - //! Constructs a zero point: (0,0) - inline Point() - { - LoadZero(); - } - - //! Constructs a point from given coords: (x,y) - inline explicit Point(float x, float y) - { - this->x = x; - this->y = y; - } - - //! Sets the zero point: (0,0) - inline void LoadZero() - { - x = y = 0.0f; - } - - //! Returns the distance from (0,0) to the point (x,y) - inline float Length() - { - return sqrtf(x*x + y*y); - } - - //! Returns the inverted point - inline Point operator-() const - { - return Point(-x, -y); - } - - //! Adds the given point - inline const Point& operator+=(const Point &right) - { - x += right.x; - y += right.y; - return *this; - } - - //! Adds two points - inline friend const Point operator+(const Point &left, const Point &right) - { - return Point(left.x + right.x, left.y + right.y); - } - - //! Subtracts the given vector - inline const Point& operator-=(const Point &right) - { - x -= right.x; - y -= right.y; - return *this; - } - - //! Subtracts two points - inline friend const Point operator-(const Point &left, const Point &right) - { - return Point(left.x - right.x, left.y - right.y); - } - - //! Multiplies by given scalar - inline const Point& operator*=(const float &right) - { - x *= right; - y *= right; - return *this; - } - - //! Multiplies point by scalar - inline friend const Point operator*(const float &left, const Point &right) - { - return Point(left * right.x, left * right.y); - } - - //! Multiplies point by scalar - inline friend const Point operator*(const Point &left, const float &right) - { - return Point(left.x * right, left.y * right); - } - - //! Divides by given scalar - inline const Point& operator/=(const float &right) - { - x /= right; - y /= right; - return *this; - } - - //! Divides point by scalar - inline friend const Point operator/(const Point &left, const float &right) - { - return Point(left.x / right, left.y / right); - } + //! X coord + float x; + //! Y coord + float y; + + //! Constructs a zero point: (0,0) + inline Point() + { + LoadZero(); + } + + //! Constructs a point from given coords: (x,y) + inline explicit Point(float x, float y) + { + this->x = x; + this->y = y; + } + + //! Sets the zero point: (0,0) + inline void LoadZero() + { + x = y = 0.0f; + } + + //! Returns the distance from (0,0) to the point (x,y) + inline float Length() + { + return sqrtf(x*x + y*y); + } + + //! Returns the inverted point + inline Point operator-() const + { + return Point(-x, -y); + } + + //! Adds the given point + inline const Point& operator+=(const Point &right) + { + x += right.x; + y += right.y; + return *this; + } + + //! Adds two points + inline friend const Point operator+(const Point &left, const Point &right) + { + return Point(left.x + right.x, left.y + right.y); + } + + //! Subtracts the given vector + inline const Point& operator-=(const Point &right) + { + x -= right.x; + y -= right.y; + return *this; + } + + //! Subtracts two points + inline friend const Point operator-(const Point &left, const Point &right) + { + return Point(left.x - right.x, left.y - right.y); + } + + //! Multiplies by given scalar + inline const Point& operator*=(const float &right) + { + x *= right; + y *= right; + return *this; + } + + //! Multiplies point by scalar + inline friend const Point operator*(const float &left, const Point &right) + { + return Point(left * right.x, left * right.y); + } + + //! Multiplies point by scalar + inline friend const Point operator*(const Point &left, const float &right) + { + return Point(left.x * right, left.y * right); + } + + //! Divides by given scalar + inline const Point& operator/=(const float &right) + { + x /= right; + y /= right; + return *this; + } + + //! Divides point by scalar + inline friend const Point operator/(const Point &left, const float &right) + { + return Point(left.x / right, left.y / right); + } }; // struct Point @@ -147,23 +147,23 @@ struct Point //! Checks if two vectors are equal within given \a tolerance inline bool PointsEqual(const Point &a, const Point &b, float tolerance = TOLERANCE) { - return IsEqual(a.x, b.x, tolerance) && IsEqual(a.y, b.y, tolerance); + return IsEqual(a.x, b.x, tolerance) && IsEqual(a.y, b.y, tolerance); } //! Permutes two points inline void Swap(Point &a, Point &b) { - Point c; + Point c; - c = a; - a = b; - b = c; + c = a; + a = b; + b = c; } //! Returns the distance between two points inline float Distance(const Point &a, const Point &b) { - return sqrtf((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y)); + return sqrtf((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y)); } /* @} */ // end of group |