diff --git a/planet/constants.h b/planet/constants.h index 78eda772952ec3ebbbf07c74e46d197ae3769d9f..0416ea4a15be9f36e73cf9a525d1c704c755eb04 100644 --- a/planet/constants.h +++ b/planet/constants.h @@ -3,35 +3,61 @@ // display -#define DISPLAY_RADIUS_DIV 1.0e23 +#define DISPLAY_PLANET_RADIUS_DIV 1.0e23 +#define DISPLAY_MAX_ORBIT_RADIUS +// logic +#define PLANET_COUNT 4 + + +// physical constants #define G 6.67e-11 #define M_SOLEIL 1.989e30 // mass -#define M_TERRE 5.9742e24 #define M_MERCURE 3.3011e23 #define M_VENUS 4.8675e24 +#define M_TERRE 5.9742e24 #define M_MARS 6.4171e23 +#define M_JUPITER 1.8982e27 +#define M_SATURN 5.6834e26 +#define M_URANUS 8.6810e25 +#define M_NEPTUNE 1.02413e26 +#define M_PLUTO 1.303e22 // major axis #define A_MERCURE 5.7909e10 #define A_VENUS 1.0821e11 #define A_TERRE 1.4960e11 #define A_MARS 2.2794e11 +#define A_JUPITER 7.7857e11 +#define A_SATURN 1.43353e12 +#define A_URANUS 2.870972e12 +#define A_NEPTUNE 4.50e12 +#define A_PLUTO 5.90638e12 // excentricity #define E_MERCURE 0.205630 #define E_VENUS 0.006772 #define E_TERRE 0.0167086 #define E_MARS 0.0934 +#define E_JUPITER +#define E_SATURN +#define E_URANUS +#define E_NEPTUNE +#define E_PLUTO // perihelion #define PER_MERCURE 4.60012e10 #define PER_VENUS 1.07477e11 #define PER_TERRE 1.47095e11 #define PER_MARS 2.06700e11 +#define PER_JUPITER 7.40520e11 +#define PER_SATURN 1.35255e12 +#define PER_URANUS 2.73556e12 +#define PER_NEPTUNE 4.46e12 +#define PER_PLUTO 4.43682e12 #endif //PLANET_CONSTANTS_H diff --git a/planet/planet.c b/planet/planet.c index 371fa869ef3ee5a4d547f14d375f0556efa50055..e1f3b946f27d83bb7269aa5db812cb16c9f77870 100755 --- a/planet/planet.c +++ b/planet/planet.c @@ -55,7 +55,7 @@ system_t create_system(double delta_t) { } -void show_system(struct gfx_context_t* ctxt, system_t* system) { +void show_system(struct gfx_context_t* ctxt, system_t* system, const double show_radius) { // draw sun const coordinates xy_sun = vec2_to_coordinates_centered( vec2_normalize(system->star.pos), @@ -65,7 +65,7 @@ void show_system(struct gfx_context_t* ctxt, system_t* system) { // draw planets for (uint32_t i = 0; i < system->nb_planets; ++i) { const coordinates xy = vec2_to_coordinates_centered( - vec2_mul(vec2_norm(system->planets[i].pos) / (PER_MARS * 1.25), vec2_normalize(system->planets[i].pos)), + vec2_mul(vec2_norm(system->planets[i].pos) / show_radius, vec2_normalize(system->planets[i].pos)), ctxt->width, ctxt->height); draw_full_circle(ctxt, xy.column, xy.row, 20, COLOR_BLUE); diff --git a/planet/planet.h b/planet/planet.h index 4995e1ededb667ab5ecddd648409fd7261434b30..a946cfef01f7940fdefb32674196857a3d08e08f 100755 --- a/planet/planet.h +++ b/planet/planet.h @@ -16,13 +16,12 @@ typedef struct _system { planet_t* planets; // An array of orbiting planets } system_t; -// These functions are not mandatory to implement, -// it's rather a hint of what you should have. planet_t create_planet(double mass, vec2 pos); system_t create_system(double delta_t); -void show_system(struct gfx_context_t* ctxt, system_t* system); +//void show_system(struct gfx_context_t* ctxt, system_t* system); +void show_system(struct gfx_context_t* ctxt, system_t* system, const double show_radius); void update_system(system_t* system, double delta_t);