ELEC2645 (2018/19) / Mbed 2 deprecated el17dg

Dependencies:   mbed

Fork of el17dg by Dmitrijs Griskovs

Revision:
31:becb8f6bf7b7
Parent:
30:d454d0cb72bc
--- a/game/geometry.h	Tue Apr 16 21:16:33 2019 +0000
+++ b/game/geometry.h	Tue Apr 23 18:18:57 2019 +0000
@@ -3,63 +3,78 @@
 
 #include <math.h>
 
-////////////////////////////////////////////////////////////////////////
 /**
- * A structure to represent the positions of a sprite on the screen. 
+ * @struct Point
+ * @brief Position or vector on the screen. Supports basic vector arithmetics.
  */
 struct Point {
     /*@{*/
     int x; /**< the x position */
     int y; /**< the y position */
+    /** Default constructor */
     Point() : x(0), y(0) {}
+    /** Constructor with x and y parameters */
     Point(int _x, int _y) : x(_x), y(_y) {}
     
+    /** 
+     * @brief Vector addition. 
+     */
     Point operator+ (const Point& rhs) const {
         Point result(x + rhs.x, y + rhs.y);
         return result;
     }
+
+    /** 
+     * @brief Vector substraction. 
+     */
     Point operator- (const Point& rhs) const {
         Point result(x - rhs.x, y - rhs.y);
         return result;
     }
+    
+    /** 
+     * @brief Length of vector squared. 
+     */
     int lengthSquared() {
         return x * x + y * y;
     }
 };
-/** CicleBounds Class
- * @brief A library for appointing the sprites' bounds.
+
+/** 
+ * CicleBounds Class
+ * @brief Class to define object's bounds as a circle with center(e.g. offset).
  * @author Dmitrijs Griskovs
  * @date 15/04/2019
  */
 class CircleBounds {
 public:
-///////////////////////////////////////////////////////////////////////////////////////
-    /** Constructor */
+    /** Default constructor */
     CircleBounds() {};
+    /** Constructor with center and radius parameters */
     CircleBounds(Point _center, float _radius): center(_center), radius(_radius) {};
     Point center;
     float radius;
     
-    
-/** @brief a function that determines whether the two sprites have collided.
- * @details the function takes in the position and the bounds (center and radius)
- * two sprites (x and y positions and the circle area of a sprite) then performs the 
- * pythagoras calaculation and returns a bool statment if there is an overlap
- * in the circle area of two sprites.
- *
- * @param pos_a positon of x and y of first sprite. (const Point&).
- * @param bounds_a center point and radius of the first sprite. (const CircleBounds&).
- * @param pos_b positon of x and y of second sprite. (const Point&).
- * @param bounds_b center point and radius of the second sprite. (const CircleBounds&).
- * @return difference.lengthSquared() if the areas of two sprites overlap, it will return true.
- */
+        
+    /** 
+     * @brief Determines whether the two circles collide.
+     * @details the function takes in position and circle bounds (center and radius)
+     * of two objects and returns wether they collide.
+     *
+     * @param pos_a positon of x and y of the first object. (const Point&).
+     * @param bounds_a center point and radius of the first object. (const CircleBounds&).
+     * @param pos_b positon of x and y of the second object. (const Point&).
+     * @param bounds_b center point and radius of the second object. (const CircleBounds&).
+     * @return true if the two circles overlap.
+     */
     inline bool circleCollideTwoObjects(
-    const Point& pos_a, const CircleBounds& bounds_a, 
-    const Point& pos_b, const CircleBounds& bounds_b) {
-    Point center_a = pos_a + bounds_a.center;
-    Point center_b = pos_b + bounds_b.center;
-    Point difference = center_a - center_b;
-    return difference.lengthSquared() <= pow(bounds_a.radius + bounds_b.radius, 2);
+        const Point& pos_a, const CircleBounds& bounds_a, 
+        const Point& pos_b, const CircleBounds& bounds_b
+    ) {
+        Point center_a = pos_a + bounds_a.center;
+        Point center_b = pos_b + bounds_b.center;
+        Point difference = center_a - center_b;
+        return difference.lengthSquared() <= pow(bounds_a.radius + bounds_b.radius, 2);
     }
 };