From d840a2e73dd9091933b8a98103f79155d719564c Mon Sep 17 00:00:00 2001 From: Boris Stefanovic <owldev@bluewin.ch> Date: Mon, 13 Dec 2021 12:12:37 +0100 Subject: [PATCH] ADD: some constants --- .gitignore | 1 + main.c | 55 +++++++++++++++++++++++----------------------- planet/constants.h | 32 +++++++++++++++++++++++++++ planet/planet.c | 26 +++++++++++++++++----- planet/planet.h | 14 ++++++------ 5 files changed, 87 insertions(+), 41 deletions(-) create mode 100644 planet/constants.h diff --git a/.gitignore b/.gitignore index e424e2b..afd4808 100755 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.idea *.o main tests diff --git a/main.c b/main.c index cbaf99c..b3a6193 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 0000000..9eaf912 --- /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 c9b7767..a6cbbd7 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 0b2b87f..cedbe06 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); -- GitLab