summaryrefslogtreecommitdiff
path: root/source/logic/MazeMath.h
blob: d5a2aa9181f04ee19acfcad23c49a3fa897c85bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#ifndef MAZEMATH_H
#define MAZEMATH_H

#include <cmath>

/**
* @brief Class of static methods for common math functions that occur in the 2D maze setting.
*
* @author Justin Wernick
* @author David Schneider
*/
class MazeMath
{
    public:
        /**
        * @brief Rounds a value to the nearest integer.
        *
        * Values with a decimal fraction less than 0.5 are floored, while values with
        * a decimal fraction greater than or eqaul to 0.5 are ceiled.
        *
        * @param [in] value The number to be rounded off.
        *
        * @return The rounded off version of the given value.
        */
        static double round(double value);

        /**
        * @brief Finds the straight line distance between two points on a 2D plane.
        *
        * Implemented using Pythagoras' Theorem.
        *
        * @param [in] x1 The x coordinate of the first point.
        * @param [in] y1 The y coordinate of the first point.
        * @param [in] x2 The x coordinate of the second point.
        * @param [in] y2 The y coordinate of the second point.
        *
        * @return The distance between the two given points.
        */
        static double distance(double x1, double y1, double x2, double y2);

    private:
        /**
        * @brief Unimplemented constructor.
        *
        * being a grouping of static functions, construction and destruction of MazeMath
        * objects is unneccesary.
        */
        MazeMath();
        /**
        * @brief Unimplemented copy constructor.
        */
        MazeMath(const MazeMath& ref);
        /**
        * @brief Unimplemented assignment operator.
        */
        MazeMath& operator=(const MazeMath& rhs);
};

#endif // MAZEMATH_H