diff options
author | TravisBot <> | 2017-09-21 23:32:46 +0000 |
---|---|---|
committer | TravisBot <> | 2017-09-21 23:32:46 +0000 |
commit | 1a8ec165031af3b860028ef1b360acc8e7baf9e6 (patch) | |
tree | b9d2e956005b4de847417baf4a66ab3f028f1bc1 /yage/physics/body.h | |
parent | f5ecbc445977654e84120b3b02a9fe5d86dae5c8 (diff) | |
download | YAGE-1a8ec165031af3b860028ef1b360acc8e7baf9e6.tar.gz YAGE-1a8ec165031af3b860028ef1b360acc8e7baf9e6.zip |
Rebuilding documentation
Diffstat (limited to 'yage/physics/body.h')
-rw-r--r-- | yage/physics/body.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/yage/physics/body.h b/yage/physics/body.h new file mode 100644 index 00000000..90682682 --- /dev/null +++ b/yage/physics/body.h @@ -0,0 +1,58 @@ +/* ---------------------------------------------------------------------------- + * body.h + * + * Copyright (c) 2017 Yann Herklotz Grave <ymherklotz@gmail.com> -- MIT License + * See file LICENSE for more details + * ---------------------------------------------------------------------------- + */ + +#ifndef YAGE_PHYSICS_BODY_H +#define YAGE_PHYSICS_BODY_H + +#include <math/matrix.h> + +namespace yage +{ + +class Body +{ +public: + // gravity constant + static const double GRAVITY; + +protected: + // center of mass of the object + Vector2d position_ = Vector2d(0, 0); + + // mass of the object + double mass_ = 1; + + // current velocity of the object + Vector2d velocity_ = Vector2d(0, 0); + + // boolean that defines if gravity can act on the object + bool gravity_ = true; + + // current acceleration + Vector2d acceleration_ = Vector2d(0, 0); + + // force acting on the body + Vector2d force_ = Vector2d(0, 0); + +public: + // apply force to the object and update the velocity + virtual void applyForce(const Vector2d &force) = 0; + virtual void update() = 0; + + double xPosition() const; + double yPosition() const; + +protected: + // protected constructor to initialize member variables + Body(Vector2d position = Vector2d(0, 0), double mass = 1, + Vector2d velocity = Vector2d(0, 0), bool gravity = false); +}; + +} // namespace yage + +#endif |