diff --git a/.idea/workspace.xml b/.idea/workspace.xml index bb531f69abadcfa1e3a61ebf9e06f9e852c14421..b346c3d0eb88413c7e4c154cb1af1e65f2ad388e 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -10,9 +10,10 @@ </component> <component name="ChangeListManager"> <list default="true" id="43aff179-c306-46b9-b69f-eca5306fbf96" name="Default Changelist" comment=""> - <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/Box.h" beforeDir="false" afterPath="$PROJECT_DIR$/Box.h" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/quad_tree.c" beforeDir="false" afterPath="$PROJECT_DIR$/quad_tree.c" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/Box.c" beforeDir="false" afterPath="$PROJECT_DIR$/Box.c" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/Star.c" beforeDir="false" afterPath="$PROJECT_DIR$/Star.c" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/Star.h" beforeDir="false" afterPath="$PROJECT_DIR$/Star.h" afterDir="false" /> + <change beforePath="$PROJECT_DIR$/galaxy.c" beforeDir="false" afterPath="$PROJECT_DIR$/galaxy.c" afterDir="false" /> </list> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="SHOW_DIALOG" value="false" /> @@ -25,8 +26,8 @@ <file pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/Box.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="85"> - <caret line="44" selection-start-line="44" selection-end-line="50" selection-end-column="1" /> + <state relative-caret-position="1088"> + <caret line="64" column="58" selection-start-line="64" selection-start-column="58" selection-end-line="64" selection-end-column="58" /> </state> </provider> </entry> @@ -43,8 +44,8 @@ <file pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/Star.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="833"> - <caret line="79" selection-start-line="79" selection-end-line="79" /> + <state relative-caret-position="323"> + <caret line="40" column="44" selection-start-line="40" selection-start-column="44" selection-end-line="40" selection-end-column="44" /> </state> </provider> </entry> @@ -52,17 +53,17 @@ <file pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/Star.h"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="340"> - <caret line="20" selection-start-line="20" selection-end-line="20" /> + <state relative-caret-position="153"> + <caret line="9" selection-start-line="9" selection-end-line="9" /> </state> </provider> </entry> </file> - <file pinned="false" current-in-tab="false"> + <file pinned="false" current-in-tab="true"> <entry file="file://$PROJECT_DIR$/galaxy.c"> <provider selected="true" editor-type-id="text-editor"> - <state> - <caret selection-end-line="4" selection-end-column="17" /> + <state relative-caret-position="442"> + <caret line="95" column="74" selection-start-line="95" selection-start-column="74" selection-end-line="95" selection-end-column="74" /> </state> </provider> </entry> @@ -76,7 +77,7 @@ </provider> </entry> </file> - <file pinned="false" current-in-tab="true"> + <file pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/quad_tree.c"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="155"> @@ -124,16 +125,16 @@ <option value="$PROJECT_DIR$/Vector_Test.c" /> <option value="$PROJECT_DIR$/Vector.h" /> <option value="$PROJECT_DIR$/Vector.c" /> - <option value="$PROJECT_DIR$/Star.c" /> - <option value="$PROJECT_DIR$/Star.h" /> <option value="$PROJECT_DIR$/galaxy.h" /> - <option value="$PROJECT_DIR$/galaxy.c" /> <option value="$PROJECT_DIR$/galaxy_simulation.c" /> - <option value="$PROJECT_DIR$/Box.c" /> <option value="$PROJECT_DIR$/makefile" /> <option value="$PROJECT_DIR$/quad_tree.h" /> <option value="$PROJECT_DIR$/Box.h" /> <option value="$PROJECT_DIR$/quad_tree.c" /> + <option value="$PROJECT_DIR$/Box.c" /> + <option value="$PROJECT_DIR$/Star.h" /> + <option value="$PROJECT_DIR$/Star.c" /> + <option value="$PROJECT_DIR$/galaxy.c" /> </list> </option> </component> @@ -191,12 +192,12 @@ <option name="presentableId" value="Default" /> <updated>1559227081243</updated> <workItem from="1559227084365" duration="53793000" /> - <workItem from="1560336527698" duration="37316000" /> + <workItem from="1560336527698" duration="38917000" /> </task> <servers /> </component> <component name="TimeTrackingManager"> - <option name="totallyTimeSpent" value="91109000" /> + <option name="totallyTimeSpent" value="92710000" /> </component> <component name="ToolWindowManager"> <frame x="-7" y="-7" width="1550" height="838" extended-state="6" /> @@ -260,73 +261,73 @@ </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/Star.c"> + <entry file="file://$PROJECT_DIR$/makefile"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="833"> - <caret line="79" selection-start-line="79" selection-end-line="79" /> + <state relative-caret-position="119"> + <caret line="7" lean-forward="true" selection-start-line="7" selection-end-line="7" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/galaxy.c"> + <entry file="file://$PROJECT_DIR$/galaxy_simulation.c"> <provider selected="true" editor-type-id="text-editor"> - <state> - <caret selection-end-line="4" selection-end-column="17" /> + <state relative-caret-position="68"> + <caret line="4" column="21" selection-start-line="4" selection-start-column="21" selection-end-line="4" selection-end-column="21" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/Star.h"> + <entry file="file://$PROJECT_DIR$/Box.h"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="340"> - <caret line="20" selection-start-line="20" selection-end-line="20" /> + <state relative-caret-position="187"> + <caret line="11" column="37" selection-start-line="11" selection-start-column="37" selection-end-line="11" selection-end-column="37" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/Box.c"> + <entry file="file://$PROJECT_DIR$/galaxy.h"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="85"> - <caret line="44" selection-start-line="44" selection-end-line="50" selection-end-column="1" /> + <state relative-caret-position="340"> + <caret line="20" column="15" selection-start-line="20" selection-start-column="15" selection-end-line="20" selection-end-column="15" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/Box.h"> + <entry file="file://$PROJECT_DIR$/quad_tree.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="187"> - <caret line="11" column="37" selection-start-line="11" selection-start-column="37" selection-end-line="11" selection-end-column="37" /> + <state relative-caret-position="155"> + <caret line="10" column="4" selection-start-line="10" selection-start-column="4" selection-end-line="10" selection-end-column="4" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/makefile"> + <entry file="file://$PROJECT_DIR$/quad_tree.h"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="119"> - <caret line="7" lean-forward="true" selection-start-line="7" selection-end-line="7" /> + <state relative-caret-position="238"> + <caret line="14" column="35" selection-start-line="14" selection-start-column="35" selection-end-line="14" selection-end-column="35" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/galaxy_simulation.c"> + <entry file="file://$PROJECT_DIR$/Star.h"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="68"> - <caret line="4" column="21" selection-start-line="4" selection-start-column="21" selection-end-line="4" selection-end-column="21" /> + <state relative-caret-position="153"> + <caret line="9" selection-start-line="9" selection-end-line="9" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/galaxy.h"> + <entry file="file://$PROJECT_DIR$/Box.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="340"> - <caret line="20" column="15" selection-start-line="20" selection-start-column="15" selection-end-line="20" selection-end-column="15" /> + <state relative-caret-position="1088"> + <caret line="64" column="58" selection-start-line="64" selection-start-column="58" selection-end-line="64" selection-end-column="58" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/quad_tree.h"> + <entry file="file://$PROJECT_DIR$/Star.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="238"> - <caret line="14" column="35" selection-start-line="14" selection-start-column="35" selection-end-line="14" selection-end-column="35" /> + <state relative-caret-position="323"> + <caret line="40" column="44" selection-start-line="40" selection-start-column="44" selection-end-line="40" selection-end-column="44" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/quad_tree.c"> + <entry file="file://$PROJECT_DIR$/galaxy.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="155"> - <caret line="10" column="4" selection-start-line="10" selection-start-column="4" selection-end-line="10" selection-end-column="4" /> + <state relative-caret-position="442"> + <caret line="95" column="74" selection-start-line="95" selection-start-column="74" selection-end-line="95" selection-end-column="74" /> </state> </provider> </entry> diff --git a/Box.c b/Box.c index 518f22f1c1160cd7ffd67fde7104c202bfb3abef..ba87e7ec529d5f8b646964b772be275deaa6f288 100644 --- a/Box.c +++ b/Box.c @@ -52,14 +52,17 @@ double mid_point(double a, double b){ box *divide_in_four(box b){ + //On détermine le milieu en x et en y double x_mid = mid_point(b.x0,b.x1); double y_mid = mid_point(b.y0,b.y1); + //Puis on les utilise pour déterminé nos 4 nouvelles boxs box b1 = new_box(b.x0,x_mid,y_mid,b.y1); box b2 = new_box(x_mid,b.x1,y_mid,b.y1); box b3 = new_box(b.x0,x_mid,b.y0,y_mid); box b4 = new_box(x_mid,b.x1,b.y0,y_mid); + //Ensuite on créer un tableau où l'on stocke les 4 box box *tab = malloc(4*sizeof(tab)); tab[0]= b1; tab[1]= b2; diff --git a/Star.c b/Star.c index 72cf4a3d88dcb604c1cb9079a218c7849df07663..acd09cc9018bc5a48bb61a25dcce1ee1e11c4667 100644 --- a/Star.c +++ b/Star.c @@ -38,9 +38,11 @@ void print_star(const star *const s){ star *new_star_vel(vec pos, vec vel, vec acc, double mass,double dt){ + //Allocation de la mémoire pour l'étoile star *new_star = malloc(sizeof(star)); new_star->mass = mass; new_star->pos_t = pos; + //pos_t_dt = pos_t - dt * vel vec *pos_t_dt = sub_vec(&pos,mul_vec(dt,&vel)); new_star->pos_t_dt.x = pos_t_dt->x; new_star->pos_t_dt.y = pos_t_dt->y; @@ -52,6 +54,7 @@ star *new_star_vel(vec pos, vec vel, vec acc, double mass,double dt){ void reset_acceleration(star *s){ + //Est ce je dois vraiment expliquer ça? s->acc.y = 0.0; s->acc.x = 0.0; @@ -59,11 +62,13 @@ void reset_acceleration(star *s){ void update_acceleration(star *s, const star *const s2) { + //Calcul de la force Fij s'éxercant entre 2 corps i et j vec sub = sub_vect(s2->pos_t,s->pos_t); double n = pow(norme(sub),3); vec F = mul_vect(6.67e-11 * s->mass * s2->mass, sub); F = mul_vect(1/n,F); + //a = Fi/mi (normalement la somme des forces mais en l'occurence il n'y a qu'une seule étoile) s->acc = mul_vect(1/s->mass,F); } @@ -71,10 +76,11 @@ void update_acceleration(star *s, const star *const s2) { void update_position(star *s, double dt){ + //pos_t = 2*pos_t - pos_t_dt + acc * dt * dt s->pos_t = add_vect(sub_vect(mul_vect(2,s->pos_t),s->pos_t),mul_vect(dt*dt,s->acc)); } -//pos_t = 2*pos_t - pos_t_dt + acc * dt * dt + diff --git a/Star.h b/Star.h index 27a2c2d354610b1d61be18d58ed2baa94afbcd4e..d6f60fd86f932bc55a7435876e2d85e823cbf32b 100644 --- a/Star.h +++ b/Star.h @@ -7,8 +7,7 @@ typedef struct star { //Création d’une nouvelle étoile à la position pos_t, vitesse vel, accélération acc, masse mass et dt la discrétisation temporelle: star *new_star_vel(vec pos, vec vel, vec acc, double mass,double dt); -//On initialisera pos_t_dt à l’aide de la relation (en pseudo-code) -//pos_t_dt = pos_t - dt * vel + //Remise à zéro de l’accélération d’une étoile: void reset_acceleration(star *s); diff --git a/galaxy.c b/galaxy.c index b45f8cb64452608cc28ec1561520c492e8e3968e..86074177b322350f00fcd10f8aeccd792110b138 100644 --- a/galaxy.c +++ b/galaxy.c @@ -8,17 +8,20 @@ galaxy *create_and_init_galaxy(int num_bodies, box b,double dt){ + //Allocation de la mémoire pour la galaxie galaxy* new_gal = malloc(sizeof(galaxy)); new_gal->num_bodies = num_bodies; new_gal->b = b; + //Afin de générer des valeurs aléatoires srand ( time ( NULL)); + //Allocation de la mémoire pour le tableau d'étoiles star** tab = malloc(num_bodies* sizeof(star*)); for(int i = 0; i<num_bodies;i++){ - + //Chaque étoile du tableau est entré avec des valeurs aléatoire pour sa position tab[i] = new_star_vel((vec){rand()%(int)b.x1,rand()%(int)b.y1},(vec){1.0,1.0},(vec){0.0,0.0},100000,dt); -} + } new_gal->stars = tab; @@ -65,25 +68,32 @@ void update_positions(galaxy *g, double dt){ void resize_galaxy(galaxy *g){ + //Valeur pour vérifier combien d'étoile sont sorti de la box int compt = 0; for(int i = 0; i<g->num_bodies; i++){ + //Si l'étoile n'est pas dans la box on compte if(!is_inside(g->b,g->stars[i]->pos_t)){ compt++; } } + //Création d'un nouveau tableau avec le nombre d'étoile en moins int new_size = g->num_bodies-compt; star** tab = malloc(new_size* sizeof(star*)); compt = 0; for(int i = 0; i<g->num_bodies; i++){ + //Même condition que dans l'autre boucle if(!is_inside(g->b,g->stars[i]->pos_t)){ + //On incrémente pour connaître la position dans le nouveau tableau compt++; continue; } + //On met les étoiles qui sont toujours dans la box dans le nouveau tableau tab[i-compt] = g->stars[i]; } - + //On remplace le tableau g->stars = tab; + //Et on change la variable du nombre d'étoile pour qu'elle soit juste g->num_bodies = new_size; }