diff --git a/.idea/workspace.xml b/.idea/workspace.xml index f54d405b94bf16855fa3c4d8c364ae884e24e560..bb531f69abadcfa1e3a61ebf9e06f9e852c14421 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -11,15 +11,8 @@ <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.o" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/Star.o" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/Vector.o" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/galaxy.o" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/galaxy_simulation.c" beforeDir="false" afterPath="$PROJECT_DIR$/galaxy_simulation.c" afterDir="false" /> - <change beforePath="$PROJECT_DIR$/galaxy_simulation.o" beforeDir="false" /> - <change beforePath="$PROJECT_DIR$/makefile" beforeDir="false" afterPath="$PROJECT_DIR$/makefile" 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$/quad_tree.h" beforeDir="false" afterPath="$PROJECT_DIR$/quad_tree.h" afterDir="false" /> </list> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="SHOW_DIALOG" value="false" /> @@ -32,8 +25,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="272"> - <caret line="55" column="40" lean-forward="true" selection-start-line="55" selection-start-column="40" selection-end-line="55" selection-end-column="40" /> + <state relative-caret-position="85"> + <caret line="44" selection-start-line="44" selection-end-line="50" selection-end-column="1" /> </state> </provider> </entry> @@ -41,8 +34,8 @@ <file pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/Box.h"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="204"> - <caret line="12" column="26" selection-start-line="12" selection-start-column="26" selection-end-line="12" selection-end-column="26" /> + <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> @@ -83,29 +76,29 @@ </provider> </entry> </file> - <file pinned="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/galaxy_simulation.c"> + <file pinned="false" current-in-tab="true"> + <entry file="file://$PROJECT_DIR$/quad_tree.c"> <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="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> </file> <file pinned="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/quad_tree.c"> + <entry file="file://$PROJECT_DIR$/quad_tree.h"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="153"> - <caret line="9" column="49" selection-start-line="9" selection-start-column="49" selection-end-line="9" selection-end-column="49" /> + <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> </file> - <file pinned="false" current-in-tab="true"> - <entry file="file://$PROJECT_DIR$/quad_tree.h"> + <file pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/galaxy_simulation.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="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> @@ -113,8 +106,8 @@ <file pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/makefile"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="51"> - <caret line="3" column="71" selection-start-line="3" selection-start-column="71" selection-end-line="3" selection-end-column="71" /> + <state relative-caret-position="119"> + <caret line="7" lean-forward="true" selection-start-line="7" selection-end-line="7" /> </state> </provider> </entry> @@ -133,14 +126,14 @@ <option value="$PROJECT_DIR$/Vector.c" /> <option value="$PROJECT_DIR$/Star.c" /> <option value="$PROJECT_DIR$/Star.h" /> - <option value="$PROJECT_DIR$/Box.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.c" /> <option value="$PROJECT_DIR$/quad_tree.h" /> + <option value="$PROJECT_DIR$/Box.h" /> + <option value="$PROJECT_DIR$/quad_tree.c" /> </list> </option> </component> @@ -198,12 +191,12 @@ <option name="presentableId" value="Default" /> <updated>1559227081243</updated> <workItem from="1559227084365" duration="53793000" /> - <workItem from="1560336527698" duration="32701000" /> + <workItem from="1560336527698" duration="37316000" /> </task> <servers /> </component> <component name="TimeTrackingManager"> - <option name="totallyTimeSpent" value="86494000" /> + <option name="totallyTimeSpent" value="91109000" /> </component> <component name="ToolWindowManager"> <frame x="-7" y="-7" width="1550" height="838" extended-state="6" /> @@ -274,6 +267,13 @@ </state> </provider> </entry> + <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> + </provider> + </entry> <entry file="file://$PROJECT_DIR$/Star.h"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="340"> @@ -281,31 +281,31 @@ </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/Box.h"> + <entry file="file://$PROJECT_DIR$/Box.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="204"> - <caret line="12" column="26" selection-start-line="12" selection-start-column="26" selection-end-line="12" selection-end-column="26" /> + <state relative-caret-position="85"> + <caret line="44" selection-start-line="44" selection-end-line="50" selection-end-column="1" /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/Box.c"> + <entry file="file://$PROJECT_DIR$/Box.h"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="272"> - <caret line="55" column="40" lean-forward="true" selection-start-line="55" selection-start-column="40" selection-end-line="55" selection-end-column="40" /> + <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$/makefile"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="51"> - <caret line="3" column="71" selection-start-line="3" selection-start-column="71" selection-end-line="3" selection-end-column="71" /> + <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> @@ -316,24 +316,17 @@ </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/galaxy_simulation.c"> + <entry file="file://$PROJECT_DIR$/quad_tree.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="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$/quad_tree.c"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="153"> - <caret line="9" column="49" selection-start-line="9" selection-start-column="49" selection-end-line="9" selection-end-column="49" /> - </state> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/quad_tree.h"> - <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="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> diff --git a/Box.h b/Box.h index 5931890b679c5ba18eb63c12b293ad3ced20a086..24156a53286c1ebf4c342c7444a1eb05421ba764 100644 --- a/Box.h +++ b/Box.h @@ -9,6 +9,8 @@ box new_box(double x0, double x1, double y0, double y1); //Division d’une box en quatre parties égales box *divide_in_four(box b); +double mid_point(double a, double b); + //Déterminer si une position est à l’intérieur de la box bool is_inside(box b, vec v); diff --git a/Box.o b/Box.o new file mode 100644 index 0000000000000000000000000000000000000000..be8e1ab4b244b8062cf5dfbcc70400524f9e3fbb Binary files /dev/null and b/Box.o differ diff --git a/Star.o b/Star.o new file mode 100644 index 0000000000000000000000000000000000000000..31a31dd95f878f0d7ad4feda1d3dc2f5adeacf65 Binary files /dev/null and b/Star.o differ diff --git a/Vector.o b/Vector.o new file mode 100644 index 0000000000000000000000000000000000000000..1d169814ec132196c3f1ebd784a80ce7658c9ace Binary files /dev/null and b/Vector.o differ diff --git a/galaxy.o b/galaxy.o new file mode 100644 index 0000000000000000000000000000000000000000..47541c9c5db45a005c1ab63853045e648c1c956c Binary files /dev/null and b/galaxy.o differ diff --git a/quad_tree.c b/quad_tree.c index 4934535e80cf9055021792d56071c7934e0526bc..fcbe613f215caa2860f2b9732390e0744fd0ac58 100644 --- a/quad_tree.c +++ b/quad_tree.c @@ -7,7 +7,40 @@ quad_tree *create_quad_tree_from_galaxy(const galaxy *const g){ - quad_tree* galaxy = malloc(sizeof(quad_tree)); + quad_tree* galaxy = malloc(sizeof(quad_tree*)); + node *root = malloc(sizeof(node*)); + galaxy->root->b = g->b; + galaxy->root->is_empty = true; + galaxy->root->s = NULL; + galaxy->root->children = NULL; + galaxy->root->super_s = new_star_vel((vec){mid_point(g->b.x0,g->b.x1),mid_point(g->b.y0,g->b.y1)},(vec){0.0,0.0},(vec){0.0,0.0},0.0,0.0); +} +void insert_star(node *n, star *s){ + + if(is_inside(n->b,s) && n!=NULL){ + if(n->children==NULL) { + if (n->is_empty) { + n->s = s; + n->is_empty = false; + } else { + box *zones = divide_in_four(n->b); + node *childs = malloc(4 * sizeof(node *)); + for (int i = 0; i < 4; i++) { + childs[i]->b = zones[i]; + childs[i]->is_empty = true; + insert_star(childs[i], n->s); + insert_star(childs[i], s); + } + n->children = childs; + n->s = NULL; + } + }else{ + n->super_s->mass += s->mass; + for (int i = 0; i < 4; i++) { + insert_star(n->children,s); + } + } + } } \ No newline at end of file