/* ---------------------------------------------------------------------------- * body.hpp * * Copyright (c) 2017 Yann Herklotz Grave -- MIT License * See file LICENSE for more details * ---------------------------------------------------------------------------- */ #ifndef YAGE_PHYSICS_BODY_HPP #define YAGE_PHYSICS_BODY_HPP #include "Math/matrix.hpp" 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(const Vector2d &position=Vector2d(0, 0), double mass=1, const Vector2d &velocity=Vector2d(0, 0), bool gravity=false); }; } // namespace yage #endif