From 42e569f53c9094d521d491ea61eddbe993a59886 Mon Sep 17 00:00:00 2001 From: "arnaud.devevey" <arnaud.de-vevey@etu.hesge.ch> Date: Mon, 17 Jun 2019 19:09:50 +0200 Subject: [PATCH] 19h --- perso/Makefile | 6 +-- perso/box.c | 14 +++---- perso/box.h | 3 +- perso/galaxy | Bin 28472 -> 88896 bytes perso/galaxy.c | 45 +++++++++------------ perso/galaxy.h | 20 +++------ perso/star.c | 107 +++++++++++++++++++++++++++---------------------- perso/star.h | 6 +-- 8 files changed, 93 insertions(+), 108 deletions(-) diff --git a/perso/Makefile b/perso/Makefile index 8639da9..316b1fc 100644 --- a/perso/Makefile +++ b/perso/Makefile @@ -2,9 +2,9 @@ CC = gcc CARGS = -g -std=c11 -Wall -Wextra -fsanitize=address -fsanitize=leak -fsanitize=undefined LARGS = -lm -lSDL2 -all = box galaxy quadtree star vector +all : galaxy -galaxy : galaxy.o box.o quadtree.o star.o vector.o +galaxy : vector.o box.o star.o galaxy.o quadtree.o $(CC) $(CARGS) -o galaxy $^ $(LARGS) @@ -27,7 +27,7 @@ vector.o : vector.c clean : rm -f *.o galaxy - +re : clean all # --- RAPPELS --- # fichier.o : fichier objet (fichier .c compilé) diff --git a/perso/box.c b/perso/box.c index 2a21e0d..e7da8e3 100644 --- a/perso/box.c +++ b/perso/box.c @@ -35,12 +35,13 @@ Box new_box(double new_x0, double new_y0, double new_x1, double new_y1) { Box* divide_in_four(Box box) { /* - (x0 ; y0) +(x0 ; y0) ------------------- | | | | | | - ------------------- (x1 ; y1) + ------------------- + (x1 ; y1) box0 (ul) : (x0;y0) (x1/2;y1/2) box1 (ur) : (x1/2;y0) (x1;y1/2) @@ -54,17 +55,12 @@ Box* divide_in_four(Box box) { Box b2 = new_box(box.x0, box.y1/2.0, box.x1/2.0, box.y1); Box b3 = new_box(box.x1/2.0, box.y1/2.0, box.x1, box.y1); - // pointeur ou pas? Box* sub_boxes = malloc(4 * sizeof(Box)); sub_boxes[0] = b0; sub_boxes[1] = b1; sub_boxes[2] = b2; sub_boxes[3] = b3; - - - - return sub_boxes; } @@ -108,20 +104,20 @@ void tests_box() { Box b1 = new_box(0.0, 0.0, 3.0, 3.0); Box* b2 = divide_in_four(b1); - tests_box_divide(b2); - tests_box_include(b1); free(b2); printf("\n"); } + void tests_box_divide(Box* b) { Box box_test = new_box(1.5, 0.0, 3.0, 1.5); TEST(box_test.x0 == b[1].x0 && box_test.x1 == b[1].x1 && box_test.y0 == b[1].y0 && box_test.y1 == b[1].y1); } + void tests_box_include(Box b1) { Vector* vector = new_vec(1.0, 2.0); TEST(is_inside(b1, *vector)); diff --git a/perso/box.h b/perso/box.h index 48a5a5d..d7ae311 100644 --- a/perso/box.h +++ b/perso/box.h @@ -16,6 +16,8 @@ typedef struct __box { + + /* * * * * * * * * * * * * * * * * * * * --- PROTOTYPES --- * @@ -39,7 +41,6 @@ void print_box(Box box); void tests_box(); -// void tests_box_new(Box b); void tests_box_divide(Box* b); void tests_box_include(Box b); diff --git a/perso/galaxy b/perso/galaxy index 28e639b86f069e6be68216aef884df0304c25a08..6ab26c579dca97930f6e92613b08433c8d1550ca 100755 GIT binary patch literal 88896 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 WK!^J>Ffi<aX#g1t%_~qQm;wN@lVEEA literal 28472 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 diff --git a/perso/galaxy.c b/perso/galaxy.c index 2588f32..2846fb4 100644 --- a/perso/galaxy.c +++ b/perso/galaxy.c @@ -5,36 +5,25 @@ * Date : xx.06.2019 * * * * * * * * * * * * * * * * */ -// #include <stdio.h> -// #include <stdlib.h> -// #include <string.h> -// #include <math.h> -// #include <assert.h> -// #include <stdint.h> -// #include <time.h> -// #include <libgen.h> - #include "galaxy.h" - #include "quadtree.h" - - /* * * * * * * * * * * * * * * * * * * * --- MAIN --- * * * * * * * * * * * * * * * * * * * */ + int main(int argc, char **argv) { if (argc == 3) { // convertit argv[#] en int int nb_stars = atoi(argv[1]); - double theta = atoi(argv[2]); + //double theta = atoi(argv[2]); printf("\n\n"); @@ -81,16 +70,19 @@ int main(int argc, char **argv) { * * * * * * * * * * * * * * * * */ Galaxy* create_and_init_galaxy(int nb_bodies, Box box, double delta_t) { - Star** list_stars = malloc(sizeof(Star*) * nb_bodies); - Vector* v_null = new_vec(0, 0); - Star* temp; + Star* list_stars = malloc(sizeof(Star) * nb_bodies); + Vector v_null = {0, 0}; + Star temp; for (int i = 0; i < nb_bodies; i++) { if (i == 0) { // on crée une étoile en (0;0) qui a comme masse 10^6 * masse solaire - temp = new_star_vel(*v_null, *v_null, *v_null, 1e6 * MASSE_SOLAIRE, 0.0); - + //temp = *new_star_vel(*v_null, *v_null, *v_null, 1e6 * MASSE_SOLAIRE, delta_t); + temp.pos = v_null; + temp.previous_pos = v_null; + temp.acc = v_null; + temp.mass = 1e6 * MASSE_SOLAIRE; } else { double m_i = random_mass(); Vector r_i; @@ -100,13 +92,17 @@ Galaxy* create_and_init_galaxy(int nb_bodies, Box box, double delta_t) { Vector v_i = random_speed(r_i, m_i); - temp = new_star_vel(r_i, v_i, *v_null, m_i, 0.0); + //temp = *new_star_vel(r_i, v_i, *v_null, m_i, 0.0); + temp.pos = r_i; + temp.previous_pos = v_i; + temp.acc = v_null; + temp.mass = m_i; } list_stars[i] = temp; // on regarde comment cette étoile se fait attirer par le "soleil" - update_acc(list_stars[i], list_stars[0]); + update_acc(&list_stars[i], &list_stars[0]); } @@ -139,13 +135,8 @@ void update_pos_galaxy(Galaxy* galaxy, double delta_t) { void free_galaxy(Galaxy* galaxy) { - for (int i = 0; i < galaxy -> nb_bodies; i++) { - if (!is_inside(galaxy -> box, galaxy -> stars[i].pos)) { - free(&(galaxy -> stars[i])); - galaxy -> nb_bodies--; - } - } - + free(galaxy->stars); + free(galaxy); } diff --git a/perso/galaxy.h b/perso/galaxy.h index e787e83..7b049aa 100644 --- a/perso/galaxy.h +++ b/perso/galaxy.h @@ -8,8 +8,6 @@ #include "vector.h" #include "star.h" - - #define DELTA_T 1e10 // discrétisation temporelle /* * * * * * * * * * * * * * * * * @@ -58,19 +56,6 @@ void free_galaxy(Galaxy* galaxy); // lorsqu'une étoile s sort de la box de la galaxie, celle-ci doit être effacée du tableau d'étoiles contenu dans la galaxie (et sa mémoire libérée) void resize_galaxy(Galaxy* galaxy); - - -// fait les tests de toutes les librairies -void tests(); -void tests_galaxy(); - - - - - - - - void insert_star(Node *n, Star *s); /* PSEUDO CODE si (s est dans le box de n et n est alloué) { @@ -102,4 +87,9 @@ void insert_star(Node *n, Star *s); + +// fait les tests de toutes les librairies +void tests(); +void tests_galaxy(); + #endif \ No newline at end of file diff --git a/perso/star.c b/perso/star.c index 99b0220..61625d6 100644 --- a/perso/star.c +++ b/perso/star.c @@ -45,13 +45,14 @@ void reset_acc(Star* star) { void update_acc(Star* target, const Star* const s2) { Vector* rj_ri = sub_vec(&(s2 -> pos), &(target -> pos)); - int G_mi_mj = FORCE_GRAVITATION * target -> mass * s2 -> mass; + double G_mi_mj = FORCE_GRAVITATION * target -> mass * s2 -> mass; Vector* temp = mul_vec(rj_ri, G_mi_mj); - - target -> acc = *mul_vec(temp, (1 / pow(norm(rj_ri), 3))); + Vector* acc = mul_vec(temp, (1 / pow(norm(rj_ri), 3))); + target -> acc = *acc; free(rj_ri); free(temp); + free(acc); } @@ -63,52 +64,6 @@ void update_pos_star(Star* star, double delta_t) { } -void print_star(const Star* const star) { - printf("\tprint_star() : \tposition = (%f ; %f) \n\t\t \ - position precedente = (%f ; %f) \n\t\t \ - acceleration = (%f ; %f) \n\t\t \ - masse = %f \n", star -> pos.x, star -> pos.y, star -> previous_pos.x, star -> previous_pos.y, star -> acc.x, star -> acc.y, star -> mass); -} - - - -int random_mass() { - return MASSE_MIN + (random_10() * MASSE_SOLAIRE); -} - - -Vector random_position() { - // R * (math.log(1 - random_1()) / 1.8) * chaque composante du vecteur v(0.5 - random_1() ; 0.5 - random_1()) - // où R = math.pow(10, 18) [m] et R(0) est R(0) un nombre aléatoire entre 0 et 1 - - Vector position; - double temp = 1e18 * (log(1 - random_1()) / 1.8); - position.x = temp * (0.5 - random_1()); - - temp = 1e18 * (log(1 - random_1()) / 1.8); - position.y = temp * (0.5 - random_1()); - - return position; -} - - -Vector random_speed(Vector r_i, double m_i) { - // math.sqrt(FORCE_GRAVITATION * (star -> mass + )) * chaque composante du vecteur v(-sin(phi) ; cos(phi)) - // où phi = atan2(star -> position.y / star -> position.x) // tan⁻¹ - - Vector* p_norm = new_vec(r_i.x, r_i.y); - double temp = sqrt(FORCE_GRAVITATION * (m_i + (1e6 * MASSE_SOLAIRE)) / norm(p_norm)); - double phi = atan2(r_i.y, r_i.x); - - Vector speed; - speed.x = temp * (-sin(phi)); - speed.y = temp * (cos(phi)); - - return speed; -} - - - Star* super_star(Star* list_stars, int selection, int size_list) { Star* super_star = malloc(sizeof(Star)); @@ -149,6 +104,7 @@ Vector* resultante(Star** list_stars, int size_list) { return Fi; } + void new_position(Star* star, Vector resultante) { Vector* acc_tmp = add_vec(&(star -> acc), &resultante); star -> acc = *acc_tmp; @@ -160,6 +116,59 @@ void new_position(Star* star, Vector resultante) { +// UTILITAIRES + +void print_star(const Star* const star) { + printf("\tprint_star() : \tposition = (%f ; %f) \n\t\t \ + position precedente = (%f ; %f) \n\t\t \ + acceleration = (%f ; %f) \n\t\t \ + masse = %f \n", star -> pos.x, star -> pos.y, star -> previous_pos.x, star -> previous_pos.y, star -> acc.x, star -> acc.y, star -> mass); +} + + +int random_mass() { + return MASSE_MIN + (random_10() * MASSE_SOLAIRE); +} + + +Vector random_position() { + // R * (math.log(1 - random_1()) / 1.8) * chaque composante du vecteur v(0.5 - random_1() ; 0.5 - random_1()) + // où R = math.pow(10, 18) [m] et R(0) est R(0) un nombre aléatoire entre 0 et 1 + + Vector position; + double temp = 1e18 * (log(1 - random_1()) / 1.8); + position.x = temp * (0.5 - random_1()); + + temp = 1e18 * (log(1 - random_1()) / 1.8); + position.y = temp * (0.5 - random_1()); + + return position; +} + + +Vector random_speed(Vector r_i, double m_i) { + // math.sqrt(FORCE_GRAVITATION * (star -> mass + )) * chaque composante du vecteur v(-sin(phi) ; cos(phi)) + // où phi = atan2(star -> position.y / star -> position.x) // tan⁻¹ + + Vector* p_norm = new_vec(r_i.x, r_i.y); + double temp = sqrt(FORCE_GRAVITATION * (m_i + (1e6 * MASSE_SOLAIRE)) / norm(p_norm)); + double phi = atan2(r_i.y, r_i.x); + + Vector speed; + speed.x = temp * (-sin(phi)); + speed.y = temp * (cos(phi)); + + free(p_norm); + + return speed; +} + + + + + + + int random_10() { return ((rand() % 10) + 1); } diff --git a/perso/star.h b/perso/star.h index d63c8b6..d50efb3 100644 --- a/perso/star.h +++ b/perso/star.h @@ -33,10 +33,10 @@ Star* new_star_vel(Vector pos, Vector speed, Vector acc, double mass, double dt) // previous_pos = pos - (dt * speed); // remet à 0 l'accélération d'une étoile -void reset_acc_star(Star* star); +void reset_acc(Star* star); // met à jour l'accélération d'une étoile cible à cause de l'attraction gravitationnelle d'une autre étoile -void update_acc_star(Star* target, const Star* const s2); +void update_acc(Star* target, const Star* const s2); // met à jour la position d'une étoile d'après la discrétisation temporelle @@ -79,9 +79,7 @@ double random_1(); void tests_star(); - void tests_star_new(Star* s); - void tests_stars_res(Star* star); -- GitLab