From 414f96866bd8e80ae0c442714d9414b34a5326eb Mon Sep 17 00:00:00 2001 From: "arnaud.devevey" <arnaud.de-vevey@etu.hesge.ch> Date: Mon, 17 Jun 2019 09:58:57 +0200 Subject: [PATCH] 10h --- perso/galaxy.c | 2 +- perso/star.c | 66 +++++++++++++++++++++++--------------------------- perso/star.h | 3 +-- perso/vector.c | 2 +- perso/vector.h | 2 ++ 5 files changed, 35 insertions(+), 40 deletions(-) diff --git a/perso/galaxy.c b/perso/galaxy.c index 5fa2cae..6ad649c 100644 --- a/perso/galaxy.c +++ b/perso/galaxy.c @@ -64,7 +64,7 @@ int main(int argc, char **argv) { } else { - printf("Nombre d'arguments non valide"); + printf("\nNombre d'arguments non valide \n\n"); exit(1); } } diff --git a/perso/star.c b/perso/star.c index 7925780..50715aa 100644 --- a/perso/star.c +++ b/perso/star.c @@ -17,30 +17,15 @@ Star* new_star_vel(Vector new_pos, Vector new_speed, Vector new_acc, double new_ new_star -> acc = new_acc; new_star -> mass = new_mass; - - // copie mais en pointeur de speed - Vector* p_speed = new_vec(new_speed.x , new_speed.y); - // est-ce que c'est égal à &new_speed ? - // on multiplie le vecteur speed par delta_t (qui retourne un pointeur sur vecteur, que l'on déréférence) - Vector* pos_tmp = mul_vec(p_speed, new_dt); + Vector* pos_tmp = mul_vec(&new_speed, new_dt); new_star -> previous_pos = *pos_tmp; free(pos_tmp); - free(p_speed); - - - - // copie mais en pointeur de previous_pos - Vector* p_pre_pos = new_vec(new_star -> previous_pos.x, new_star -> previous_pos.y); - // copie mais en pointeur de pos - Vector* p_pos = new_vec(new_star -> pos.x, new_star -> pos.y); // et on soustrait ce résultat au vecteur position (qui retourne un pointeur sur vecteur, que l'on déréférence) - pos_tmp = sub_vec(p_pre_pos, p_pos); + pos_tmp = sub_vec(&(new_star -> previous_pos), &(new_star -> pos)); new_star -> previous_pos = *pos_tmp; free(pos_tmp); - free(p_pre_pos); - free(p_pos); pos_tmp = NULL; @@ -124,29 +109,24 @@ Vector random_speed(Vector r_i, double m_i) { -Star* super_star(Star* list_stars, int size_list) { +Star* super_star(Star* list_stars, int selection, int size_list) { Star* super_star = malloc(sizeof(Star)); for (int i = 0; i < size_list; i++) { - // position - super_star -> pos.x += list_stars[i].pos.x; - super_star -> pos.y += list_stars[i].pos.y; + if (i != selection) { + // position + super_star -> pos.x += list_stars[i].pos.x; + super_star -> pos.y += list_stars[i].pos.y; - // accélération - super_star -> acc.x += list_stars[i].acc.x; - super_star -> acc.y += list_stars[i].acc.y; + // accélération + super_star -> acc.x += list_stars[i].acc.x; + super_star -> acc.y += list_stars[i].acc.y; - // masse - super_star -> mass += list_stars[i].mass; + // masse + super_star -> mass += list_stars[i].mass; + } } - // ne donne pas la même chose si on fait /= 2 pour chaque boucle for - super_star -> pos.x /= size_list; - super_star -> pos.y /= size_list; - super_star -> acc.x /= size_list; - super_star -> acc.y /= size_list; - super_star -> mass /= size_list; - return super_star; } @@ -201,15 +181,15 @@ double random_1() { void tests_star() { printf("TESTS STAR : \n"); - + Vector* position = new_vec(4.0, 5.0); Vector* speed = new_vec(4.0, 5.0); Vector* acceleration = new_vec(4.0, 5.0); Star* s1 = new_star_vel(*position, *speed, *acceleration, MASSE_MIN, DELTA_T); - print_star(s1); + // print_star(s1); - + tests_star_new(s1); free(s1); @@ -219,4 +199,18 @@ void tests_star() { printf("\n"); +} + +void tests_star_new(Star* s) { + Star star_test; + double x = 4.0; + double y = 5.0; + //star_test.previous_pos = ; + //star_test.acc = ; + //star_test.mass = ; + + TEST( s -> pos.x == x && s -> pos.y == y && \ + s -> previous_pos.x == x && s -> previous_pos.y == y && \ + s -> acc.x == x && s -> acc.y == y && \ + s -> mass == 1e20); } \ No newline at end of file diff --git a/perso/star.h b/perso/star.h index c841dd2..52d40ea 100644 --- a/perso/star.h +++ b/perso/star.h @@ -1,7 +1,6 @@ #ifndef __STAR_H__ #define __STAR_H__ - #include "vector.h" #define MASSE_MIN 1e20 @@ -70,7 +69,7 @@ Vector random_speed(Vector r_i, double m_i); // calcule une super etoile d'après le poids et la position d'un groupe d'étoiles -Star* super_star(Star* list_stars, int size_list); +Star* super_star(Star* list_stars, int selection, int size_list); int random_10(); double random_1(); diff --git a/perso/vector.c b/perso/vector.c index 6cb49cd..4ee295e 100644 --- a/perso/vector.c +++ b/perso/vector.c @@ -1,6 +1,6 @@ #include "vector.h" -#include "tests.h" + diff --git a/perso/vector.h b/perso/vector.h index 294e48c..0067838 100644 --- a/perso/vector.h +++ b/perso/vector.h @@ -7,6 +7,8 @@ #include <stdlib.h> #include <stdio.h> +#include "tests.h" + /* * * * * * * * * * * * * * * * * -- GitLab