diff --git a/.gitignore b/.gitignore index e424e2b98cc7386182f8cee1fe21bc21cf465640..afd48089a066879acaf52ff0b681146c5a4f2014 100755 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.idea *.o main tests diff --git a/main.c b/main.c index cbaf99c27381be9dd0ea7ecd1af29a7fea625f10..b3a6193ba593778ea14e4375d17801b05ffd6e30 100755 --- a/main.c +++ b/main.c @@ -8,35 +8,34 @@ #define SCREEN_WIDTH 1000 #define SCREEN_HEIGHT 1000 -int main() -{ - srand(time(NULL)); - struct gfx_context_t *ctxt = - gfx_create("Planetary system", SCREEN_WIDTH, SCREEN_HEIGHT); - if (!ctxt) - { - fprintf(stderr, "Graphics initialization failed!\n"); - return EXIT_FAILURE; - } +// arbitraire, en secondes ? +#define DELTA_T 0.125 - // TODO : create your system +int main() { + srand(time(NULL)); + struct gfx_context_t *ctxt = + gfx_create("Planetary system", SCREEN_WIDTH, SCREEN_HEIGHT); + if (!ctxt) { + fprintf(stderr, "Graphics initialization failed!\n"); + return EXIT_FAILURE; + } + + // TODO : create your system + system_t sys = create_system(DELTA_T); // end : create system - while (true) - { - gfx_present(ctxt); - // TODO : draw the current state of your system - // end : draw state of system - // TODO : update your system - // end : update system - gfx_clear(ctxt, COLOR_BLACK); - if (gfx_keypressed() == SDLK_ESCAPE) - { - break; - } - } + while (true) { + gfx_present(ctxt); + gfx_clear(ctxt, COLOR_BLACK); + // TODO : draw the current state of your system + // end : draw state of system + // TODO : update your system + // end : update system + if (gfx_keypressed() == SDLK_ESCAPE) { break; } + } - // TODO : Free your system - // end : free system - gfx_destroy(ctxt); - return EXIT_SUCCESS; + // TODO : Free your system + free_system(sys); + // end : free system + gfx_destroy(ctxt); + return EXIT_SUCCESS; } diff --git a/planet/constants.h b/planet/constants.h new file mode 100644 index 0000000000000000000000000000000000000000..9eaf91213947f1ebe65b6e44894db3928cbab9b4 --- /dev/null +++ b/planet/constants.h @@ -0,0 +1,32 @@ +#ifndef PLANET_CONSTANTS_H +#define PLANET_CONSTANTS_H + + +#define G 6.67e-11 +#define M_SOLEIL 1.989e30 + +// source: CRM +#define M_TERRE 5.9742e24 +// source: wiki +#define M_MERCURE 3.3011e23 +#define M_VENUS 4.8675e24 +#define M_MARS 6.4171e23 + +#define A_MERCURE 5.7909e10 +#define A_VENUS 1.0821e11 +#define A_TERRE 1.4960e11 +#define A_MARS 2.2794e11 + +#define E_MERCURE 0.205630 +#define E_VENUS 0.006772 +#define E_TERRE 0.0167086 +#define E_MARS 0.0934 + +//TODO: perihelion +#define PER_MERCURE +#define PER_VENUS +#define PER_TERRE +#define PER_MARS + + +#endif //PLANET_CONSTANTS_H diff --git a/planet/planet.c b/planet/planet.c index c9b7767708403aa39a7aeb62bba9b7ab4dcf18b6..a6cbbd74b069f23780f7814acc763272035886db 100755 --- a/planet/planet.c +++ b/planet/planet.c @@ -1,8 +1,7 @@ #include "planet.h" #include <stdlib.h> -#define G 6.67e-11 -#define M_SOLEIL 1.989e30 +#include "constants.h" /* @@ -24,10 +23,25 @@ typedef struct _system // TODO : complete all implementations -planet_t create_planet(double mass, vec2 pos); - - -system_t create_system(double delta_t); +planet_t create_planet(double mass, vec2 pos) { + planet_t p; + p.mass = mass; + p.prec_pos = pos; + p.pos = pos; + return p; +} + + +system_t create_system(double delta_t) { + system_t system; + system.star = create_planet(M_SOLEIL, vec2_create_zero()); + system.nb_planets = 4; + system.planets = malloc(system.nb_planets * sizeof(planet_t)); + double masses[system.nb_planets] = {M_MERCURE, M_VENUS, M_TERRE, M_MARS}; + //TODO + vec2 positions[system.nb_planets] = {vec2_create(), vec2_create(), vec2_create(), vec2_create()}; + return system; +} void show_system(struct gfx_context_t *ctxt, system_t *system); diff --git a/planet/planet.h b/planet/planet.h index 0b2b87fdefa9709fd7700dc12aa92872afa785a5..cedbe0647134240e6fa0aedf21bc7705110d178d 100755 --- a/planet/planet.h +++ b/planet/planet.h @@ -6,19 +6,19 @@ typedef struct _planet { - double mass; - vec2 pos; // x(t) - vec2 prec_pos; // x(t - dt) + double mass; + vec2 pos; // x(t) + vec2 prec_pos; // x(t - dt) } planet_t; typedef struct _system { - planet_t star; // ex. The sun - uint32_t nb_planets; // The number of orbiting planets - planet_t *planets; // An array of orbiting planets + planet_t star; // ex. The sun + uint32_t nb_planets; // The number of orbiting planets + planet_t *planets; // An array of orbiting planets } system_t; -// Those function are not mandatory to implement, +// 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);