/** --------------------------------------------------------------------------- * @file: body.h * * Copyright (c) 2017 Yann Herklotz Grave * MIT License, see LICENSE file for more details. * ---------------------------------------------------------------------------- */ #ifndef YAGE_PHYSICS_BODY_H #define YAGE_PHYSICS_BODY_H #include 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