Skip to content
Snippets Groups Projects
Commit 868c8ae9 authored by arnaud.devevey's avatar arnaud.devevey
Browse files

11h30

parent 414f9686
Branches
No related tags found
No related merge requests found
Pipeline #6094 failed
...@@ -40,9 +40,11 @@ int main(int argc, char **argv) { ...@@ -40,9 +40,11 @@ int main(int argc, char **argv) {
printf("\n\n"); printf("\n\n");
tests(); tests();
double zone = 1e10; double zone = 1e10;
Box box_initial = new_box(-zone, zone, zone, -zone); Box box_initial = new_box(-zone, zone, zone, -zone);
// Galaxy* galaxy = create_and_init_galaxy(nb_stars, box_initial, DELTA_T); Galaxy* galaxy = create_and_init_galaxy(nb_stars, box_initial, DELTA_T);
...@@ -61,7 +63,7 @@ int main(int argc, char **argv) { ...@@ -61,7 +63,7 @@ int main(int argc, char **argv) {
destruction_galaxie(); destruction_galaxie();
*/ */
free_galaxy(galaxy);
} else { } else {
printf("\nNombre d'arguments non valide \n\n"); printf("\nNombre d'arguments non valide \n\n");
...@@ -80,7 +82,7 @@ int main(int argc, char **argv) { ...@@ -80,7 +82,7 @@ int main(int argc, char **argv) {
* * * * * * * * * * * * * * * * */ * * * * * * * * * * * * * * * * */
Galaxy* create_and_init_galaxy(int nb_bodies, Box box, double delta_t) { Galaxy* create_and_init_galaxy(int nb_bodies, Box box, double delta_t) {
Star* list_stars = malloc(sizeof(Star) * nb_bodies); Star** list_stars = malloc(sizeof(Star*) * nb_bodies);
Vector* v_null = new_vec(0, 0); Vector* v_null = new_vec(0, 0);
Star* temp; Star* temp;
...@@ -92,17 +94,20 @@ Galaxy* create_and_init_galaxy(int nb_bodies, Box box, double delta_t) { ...@@ -92,17 +94,20 @@ Galaxy* create_and_init_galaxy(int nb_bodies, Box box, double delta_t) {
} else { } else {
double m_i = random_mass(); double m_i = random_mass();
Vector r_i = random_position();
// si pos est dans box
Vector v_i = random_speed(r_i, m_i); Vector v_i = random_speed(r_i, m_i);
Vector r_i;
do {
r_i = random_position();
} while (!is_inside(box, r_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);
} }
list_stars[i] = *temp; list_stars[i] = temp;
// on regarde comment cette étoile se fait attirer par le "soleil" // 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]);
} }
...@@ -111,6 +116,7 @@ Galaxy* create_and_init_galaxy(int nb_bodies, Box box, double delta_t) { ...@@ -111,6 +116,7 @@ Galaxy* create_and_init_galaxy(int nb_bodies, Box box, double delta_t) {
galaxy -> stars = list_stars; galaxy -> stars = list_stars;
galaxy -> box = box; galaxy -> box = box;
return galaxy; return galaxy;
} }
...@@ -120,9 +126,6 @@ void reset_acc_galaxy(Galaxy* galaxy) { ...@@ -120,9 +126,6 @@ void reset_acc_galaxy(Galaxy* galaxy) {
for (int i = 0; i < galaxy -> nb_bodies; i++) { for (int i = 0; i < galaxy -> nb_bodies; i++) {
galaxy -> stars[i].acc = *v_null; galaxy -> stars[i].acc = *v_null;
/*if (galaxy -> stars[i] != NULL) {
}*/
} }
free(v_null); free(v_null);
...@@ -137,11 +140,13 @@ void update_pos_galaxy(Galaxy* galaxy, double delta_t) { ...@@ -137,11 +140,13 @@ void update_pos_galaxy(Galaxy* galaxy, double delta_t) {
void free_galaxy(Galaxy* galaxy) { void free_galaxy(Galaxy* galaxy) {
/*
for (int i = 0; i < galaxy -> nb_bodies; i++) { for (int i = 0; i < galaxy -> nb_bodies; i++) {
free(galaxy -> stars[i]); if (!is_inside(galaxy -> box, galaxy -> stars[i].pos)) {
free(&(galaxy -> stars[i]));
galaxy -> nb_bodies--;
} }
*/ }
} }
...@@ -160,6 +165,24 @@ void tests() { ...@@ -160,6 +165,24 @@ void tests() {
tests_vector(); tests_vector();
tests_box(); tests_box();
tests_star(); tests_star();
tests_galaxy();
// tests_quadtree(); // tests_quadtree();
// tests_galaxy(); }
/* * * * * * * * * * * * * * * * *
* *
* --- TESTS --- *
* *
* * * * * * * * * * * * * * * * */
void tests_galaxy() {
printf("TESTS GALAXY : \n");
printf("\n");
} }
\ No newline at end of file
...@@ -142,20 +142,21 @@ Vector* resultante(Vector* list_stars, int size_list) { ...@@ -142,20 +142,21 @@ Vector* resultante(Vector* list_stars, int size_list) {
int G_mi_mj = FORCE_GRAVITATION * list_stars[i] -> mass * list_stars[j] -> mass; int G_mi_mj = FORCE_GRAVITATION * list_stars[i] -> mass * list_stars[j] -> mass;
Vector* temp = mul_vec(rj_ri, G_mi_mj); Vector* temp = mul_vec(rj_ri, G_mi_mj);
Fi = add_vec(Fi, temp) Fi = add_vec(Fi, temp);
*/ */
} }
} }
} }
Fi -> x /= size_list;
Fi -> y /= size_list;
return Fi; return Fi;
} }
void new_position(Star* star, Vector resultante) { void new_position(Star* star, Vector resultante) {
star -> acc = *(add_vec(&(star -> acc), &resultante)); Vector* acc_tmp = add_vec(&(star -> acc), &resultante);
star -> acc = *acc_tmp;
free(acc_tmp);
acc_tmp = NULL;
} }
...@@ -187,9 +188,10 @@ void tests_star() { ...@@ -187,9 +188,10 @@ void tests_star() {
Vector* acceleration = 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); Star* s1 = new_star_vel(*position, *speed, *acceleration, MASSE_MIN, DELTA_T);
// print_star(s1);
tests_star_new(s1); tests_star_new(s1);
// tests_star_acc(s1); LEAK
// tests_stars_res(s1); ERREUR
free(s1); free(s1);
...@@ -198,19 +200,38 @@ void tests_star() { ...@@ -198,19 +200,38 @@ void tests_star() {
free(acceleration); free(acceleration);
printf("\n"); printf("\n");
} }
void tests_star_new(Star* s) { void tests_star_new(Star* s) {
Star star_test;
double x = 4.0; double x = 4.0;
double y = 5.0; double y = 5.0;
//star_test.previous_pos = ;
//star_test.acc = ;
//star_test.mass = ;
TEST( s -> pos.x == x && s -> pos.y == y && \ TEST( s -> pos.x == x && s -> pos.y == y && \
s -> previous_pos.x == x && s -> previous_pos.y == y && \ s -> previous_pos.x == (4e10 - x) && s -> previous_pos.y == (5e10 - y) && \
s -> acc.x == x && s -> acc.y == y && \ s -> acc.x == x && s -> acc.y == y && \
s -> mass == 1e20); s -> mass == 1e20);
} }
void tests_star_acc(Star* s) {
Vector* v_test = new_vec(1.0, 1.0);
Star star_test;
star_test.pos = *v_test;
star_test.mass = 1e20;
update_acc(s, &star_test);
free(v_test);
}
void tests_star_pos() {
}
void tests_stars_res(Star* star) {
Vector* v_test = new_vec(-5.0, 4.0);
new_position(star, *v_test);
TEST(star -> pos.x == -1.0 && star -> pos.y == 9.0);
free(v_test);
}
\ No newline at end of file
...@@ -80,5 +80,9 @@ double random_1(); ...@@ -80,5 +80,9 @@ double random_1();
void tests_star(); void tests_star();
void tests_star_new(Star* s);
void tests_stars_res(Star* star);
#endif #endif
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment