diff --git a/src/.editorconfig b/.editorconfig similarity index 84% rename from src/.editorconfig rename to .editorconfig index cf80b4e9c2873ce12f3779f6bc215180ec698efc..d8b8333d354593ddbd1255c9b097e7004d25263e 100644 --- a/src/.editorconfig +++ b/.editorconfig @@ -7,3 +7,6 @@ insert_final_newline = true indent_style = space indent_size = 4 trim_trailing_whitespace = true + +[*.md] +indent_style = tab diff --git a/README.md b/README.md index 7246e7f53df4e6beb262cd4b5dcf74edda54234e..56c601d22c4874a15fc1b3a092dad6c7de166a2c 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Rapport du travail pratique "Simulation d'un système planétaire" -Ce travail pratique sur la "Simulation d’un système planétaire sur un plan à l’aide des lois de Newton" est réalisé par M. Gawen ACKERMANN et M. Florian BURGENER, dans le cadre cours du cours de Physique appliquée à l'ingénierie 1 (ISC_123). +Ce travail pratique sur la "Simulation d’un système planétaire sur un plan à l’aide des lois de Newton" est réalisé par M. Gawen ACKERMANN et M. Florian BURGENER, dans le cadre cours du cours de Physique appliquée à l'ingénierie 1 (ISC_123). ## But @@ -25,7 +25,7 @@ puis éxecuter la commander make afin de compiler automatiquement le projet Pour éxecuter le projet, éxecuter la commande suivante : -`./planetary_system` +`./planetary_system` ## Le résultat du projet en vidéo @@ -70,21 +70,36 @@ Nous avons aussi ajouté 1 autre planète réelle (Jupiter), 2 satellites (la Lu ### Fonctionnement de la simulation -#### Calcule des nouvelles positions et de l'accélération à appliquer à chaque Δt +#### Calcule de la nouvelle position et de l'accélération appliquer à chaque Δt sur chaque objet céleste -TODO +##### Initialisation -##### Algorithme +1. Pour chaque objet céleste ; + 1. Création de l'objet céleste en appelant la fonction `celestial_object_create` ; + 1. (dans la fonction `celestial_object_create`) ; + 2. Calcule du périapside en fonction du demi-grand axe et de l'excentricité. -1. Pour tous les objets (Mercure, Venus, ... sauf le Soleil), les mettrent à jour - 1. Calculer la nouvelle position (mouvement MRU calculer avec la position précedente et la position actuelle) - 2. Calculer l'accélération grativationnelle subit par l'objet - 3. Ajouter l'accélération gravitationnelle (multiplier par le delta t au carré) - 4. Mettre à jour la position précedente avec la position - 5. Mettre à jour la positionp avec la nouvelle position -6. Mettre à jour l'intervalle précédent qui nous permet de calculer la variation du temps entre deux mise à jour +<br> -TODO +1. Pour chaque objet céleste (excepté le Soleil) ; + 1. Calcule de la première position en appelant la fonction `celestial_object_first_update` ; + 1. (dans la fonction `celestial_object_first_update`) ; + 2. Calcule de la vitesse au périapside ; + 3. Calcule de la vélocité en multipliant la vitesse à la norme du vecteur perpendiculaire à la distance entre l'objet céleste et le Soleil ; + 4. Calcule de l'accélération subit par l'objet céleste ; + 5. Calcule de la nouvelle position en fonction de la vitesse au périapside et l'accélération subit par l'objet céleste ; + 1. Notez que le Δt est de 1 seconde pour l'initialisation. + +##### À chaque mise à jour + +1. Pour chaque objet céleste (excepté le Soleil) ; + 1. Calcule de la première position en appelant la fonction `celestial_object_update` ; + 1. (dans la fonction `celestial_object_update`) ; + 2. Calcule de la variation du Δt (`interval / previous_interval`) ; + 1. Notez que le `previous_interval` correspond au Δt précèdent tandis que la variable `interval` correspond au Δt actuelle, à l'initialisation la variable `previous_interval` vaut 1 seconde, si le prochain Δt est de 100 secondes alors la "vitesse" sera multiplié par 100 / `previous_interval` pour garder la cohérence du MRU ; + 3. Calcule de la nouvelle position en fonction de la position, de la position précédente et de la variation du Δt ; + 4. Calcule de l'accélération subit par l'objet céleste ; + 5. Conversion de l'accélération en distance en fonction du Δt et ajout de cette distance à la nouvelle position. ### OpenGL diff --git a/README.pdf b/README.pdf index 2a50f2bc7fce14bc6a2d0847b076eab3751763e3..b4267aa354275ad09b71ef4458aedbaedcd0ba5f 100644 Binary files a/README.pdf and b/README.pdf differ