summaryrefslogtreecommitdiffstats
path: root/src/math/point.h
diff options
context:
space:
mode:
authorPiotr Dziwinski <piotrdz@gmail.com>2012-05-01 20:05:48 +0200
committerPiotr Dziwinski <piotrdz@gmail.com>2012-05-01 20:05:48 +0200
commit2513f6556e30e7d98ca615ed769ad82f902f7137 (patch)
tree135f4b437feba9e01bdb056e9fe4ecda9ff6d06e /src/math/point.h
parent7369b10a87aed982de328fbfa242666928e021d6 (diff)
downloadcolobot-2513f6556e30e7d98ca615ed769ad82f902f7137.tar.gz
colobot-2513f6556e30e7d98ca615ed769ad82f902f7137.tar.bz2
colobot-2513f6556e30e7d98ca615ed769ad82f902f7137.zip
Structs continued
Basic functions finished and tested for matrix and vector.
Diffstat (limited to 'src/math/point.h')
-rw-r--r--src/math/point.h62
1 files changed, 40 insertions, 22 deletions
diff --git a/src/math/point.h b/src/math/point.h
index f28411e..fa411d0 100644
--- a/src/math/point.h
+++ b/src/math/point.h
@@ -14,26 +14,49 @@
// * You should have received a copy of the GNU General Public License
// * along with this program. If not, see http://www.gnu.org/licenses/.
-// math/point.h
-
-/* Point struct and functions */
+/** @defgroup MathPointModule math/point.h
+ Contains the Point struct and related functions.
+ */
#pragma once
#include <cmath>
+
+/* TODO
+
+ FPOINT RotatePoint(FPOINT center, float angle, FPOINT p);
+ FPOINT RotatePoint(float angle, FPOINT p);
+ FPOINT RotatePoint(float angle, float dist);
+ void RotatePoint(float cx, float cy, float angle, float &px, float &py);
+ void RotatePoint(D3DVECTOR center, float angleH, float angleV, D3DVECTOR &p);
+ void RotatePoint2(D3DVECTOR center, float angleH, float angleV, D3DVECTOR &p);
+
+ float RotateAngle(float x, float y);
+ float RotateAngle(FPOINT center, FPOINT p1, FPOINT p2);
+ float MidPoint(FPOINT a, FPOINT b, float px);
+ BOOL IsInsideTriangle(FPOINT a, FPOINT b, FPOINT c, FPOINT p);
+
+ BOOL LineFunction(FPOINT p1, FPOINT p2, float &a, float &b);
+
+ float IsInsideTriangle(FPOINT a, FPOINT b, FPOINT c);
+
+ */
+
+// Math module namespace
namespace Math
{
-/** 2D Point
+/* @{ */ // start of group
+
+/** \struct Point math/point.h
+ \brief 2D point
Represents a 2D point (x, y).
Contains the required methods for operating on points.
All methods are made inline to maximize optimization.
- TODO test
-
*/
struct Point
{
@@ -42,43 +65,38 @@ struct Point
//! Y coord
float y;
+ //! Constructs a zero point: (0,0)
inline Point()
{
LoadZero();
}
+ //! Constructs a point from given coords: (x,y)
inline 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 std::sqrt(x*x + y*y);
}
};
-/* TODO
-FPOINT RotatePoint(FPOINT center, float angle, FPOINT p);
-FPOINT RotatePoint(float angle, FPOINT p);
-FPOINT RotatePoint(float angle, float dist);
-void RotatePoint(float cx, float cy, float angle, float &px, float &py);
-void RotatePoint(D3DVECTOR center, float angleH, float angleV, D3DVECTOR &p);
-void RotatePoint2(D3DVECTOR center, float angleH, float angleV, D3DVECTOR &p);
-float Length(FPOINT a, FPOINT b);
-
-float RotateAngle(float x, float y);
-float RotateAngle(FPOINT center, FPOINT p1, FPOINT p2);
-float MidPoint(FPOINT a, FPOINT b, float px);
-BOOL IsInsideTriangle(FPOINT a, FPOINT b, FPOINT c, FPOINT p);
-BOOL LineFunction(FPOINT p1, FPOINT p2, float &a, float &b);
+//! Returns the distance between two points
+inline float Distance(const Point &a, const Point &b)
+{
+ return sqrt((a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y));
+}
-*/
+/* @} */ // end of group
-};
+}; // namespace Math