/** * Header file defining a ball. * A ball is the kind of real object, with a physical model, and the implicit * surface. * The physical model is strongly inspired from * http://www.physics-online.info/book1/chapt1/sect1a/problem1a-12/Problem1A-12.htm, * apart for the x-axis drift. * For this one, the assumption done is that the speed is divided by two at * each bounce, which is a reasonable assumption since it is the same for the * vertical bounces. **/ #include #include "spheroid.hpp" #define G_CTE 9.81 class Ball { private: Point Center; Spheroid surface; double init_h; size_t bounce_number; double crt_time; double A, B, U, T; // Coefficients for the physical model. double v_x; void _compute_pos(double dt); void _compute_v_x(); void _compute_A_n(); void _compute_B_n(); void _compute_U_n(); void _compute_T_n(); public: Ball(Point& _center, double _v_x, double p, double q); void update_pos(double dt); };