aboutsummaryrefslogtreecommitdiffstats
path: root/include/YAGE/Physics
diff options
context:
space:
mode:
Diffstat (limited to 'include/YAGE/Physics')
-rw-r--r--include/YAGE/Physics/body.hpp34
-rw-r--r--include/YAGE/Physics/particlebody.hpp26
-rw-r--r--include/YAGE/Physics/rigidbody.hpp17
3 files changed, 53 insertions, 24 deletions
diff --git a/include/YAGE/Physics/body.hpp b/include/YAGE/Physics/body.hpp
index c781e1d4..54fdeb3f 100644
--- a/include/YAGE/Physics/body.hpp
+++ b/include/YAGE/Physics/body.hpp
@@ -8,25 +8,28 @@ namespace yage
class Body
{
+public:
+ // gravity constant
+ static const double GRAVITY;
protected:
- // current force acting on object
- glm::vec2 force_;
-
- // current acceleration
- glm::vec2 acceleration_=glm::vec2(0.f, 0.f);
-
- // current velocity of the object
- glm::vec2 velocity_;
-
// center of mass of the object
- glm::vec2 center_of_mass_;
+ glm::vec2 position_=glm::vec2(0.f, 0.f);
// mass of the object
- double mass_;
+ double mass_=1.0;
+
+ // current velocity of the object
+ glm::vec2 velocity_=glm::vec2(0.f, 0.f);
// boolean that defines if gravity can act on the object
- bool gravity_;
-
+ bool gravity_=true;
+
+ // current acceleration
+ glm::vec2 acceleration_=glm::vec2(0.f, 0.f);
+
+ // force acting on the body
+ glm::vec2 force_=glm::vec2(0.f, 0.f);
+
public:
virtual ~Body();
@@ -38,7 +41,10 @@ public:
float yPosition() const;
protected:
// protected constructor to initialize member variables
- Body(const glm::vec2 &center_of_mass, double mass, const glm::vec2 &force, const glm::vec2 &velocity, bool gravity);
+ Body(const glm::vec2 &position=glm::vec2(0.f, 0.f),
+ double mass=1.0,
+ const glm::vec2 &velocity=glm::vec2(0.f, 0.f),
+ bool gravity=false);
};
} // yage
diff --git a/include/YAGE/Physics/particlebody.hpp b/include/YAGE/Physics/particlebody.hpp
new file mode 100644
index 00000000..d9d5e08c
--- /dev/null
+++ b/include/YAGE/Physics/particlebody.hpp
@@ -0,0 +1,26 @@
+#ifndef YAGE_PARTICLE_BODY_HPP
+#define YAGE_PARTICLE_BODY_HPP
+
+#include <glm/glm.hpp>
+
+#include "body.hpp"
+
+namespace yage
+{
+
+class ParticleBody : public Body
+{
+public:
+ ParticleBody(const glm::vec2 &position=glm::vec2(0.f, 0.f),
+ double mass=1.0,
+ const glm::vec2 &velocity=glm::vec2(0.f, 0.f),
+ bool gravity=true);
+
+ // apply a force to the rigid body
+ virtual void applyForce(const glm::vec2 &force);
+ virtual void update();
+};
+
+} // yage
+
+#endif
diff --git a/include/YAGE/Physics/rigidbody.hpp b/include/YAGE/Physics/rigidbody.hpp
index bf729828..48380dac 100644
--- a/include/YAGE/Physics/rigidbody.hpp
+++ b/include/YAGE/Physics/rigidbody.hpp
@@ -1,23 +1,20 @@
#ifndef YAGE_RIGID_BODY_HPP
#define YAGE_RIGID_BODY_HPP
-#include "body.hpp"
+#include <glm/glm.hpp>
+
+#include "particlebody.hpp"
namespace yage
{
-class RigidBody : public Body
+class RigidBody : public ParticleBody
{
public:
- RigidBody(const glm::vec2 &center_of_mass,
- double mass,
- const glm::vec2 &force=glm::vec2(0.f, 0.f),
- const glm::vec2 &velocity=glm::vec2(0.f, 0.f),
+ RigidBody(const glm::vec2 &position=glm::vec2(0.f, 0.f),
+ double mass=1.0,
+ const glm::vec2 &velocity=glm::vec2(0.f, 0.f),
bool gravity=true);
-
- // apply a force to the rigid body
- virtual void applyForce(const glm::vec2 &force);
- virtual void update();
};
} // yage