diff --git a/.gitignore b/.gitignore index afd48089a066879acaf52ff0b681146c5a4f2014..50639f212e691d9c9d221f586d6b1dc62ff0e113 100755 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ *.o main tests +doc/*.pdf diff --git a/doc/rapport.md b/doc/rapport.md new file mode 100644 index 0000000000000000000000000000000000000000..15a8ebef24c469286a7086325450f7d23889981b --- /dev/null +++ b/doc/rapport.md @@ -0,0 +1,85 @@ +--- +title: TP Physique, Système Solaire +author: + - Boris STEFANOVIC + - Michael CERQUEIRA DA COSTA +date: 2021-12-21 +... + + +# Méthode + +## Décomposition du Problème +Nous avons adopté une approche de bas en haut ("bottom-to-top"). +Nous avons décomposé le problème aussi précisément que possible +en nous inspirant des prototypes proposés avant d'écrire la moindre ligne de code. + +## Adaptation de la lib vec2 +Au fichiers de `vec2`, nous avons ajouté la méthode +`vec2_to_coordinates_centered(vec2 v, uint32_t width, uint32_t height)` +qui agit de façon similaire à +`vec2_to_coordinates(vec2 v, uint32_t width, uint32_t height)` +mais fait correspondre au vecteur (0,0) le centre de l'écran. +Ainsi, en plus d'accepter des vecteurs de norme comprise dans [0;1], +elle accepte des arguments de norme dans [-1;+1], ces dernières étant facteurs +de demi-dimensions de l'écran en partant du centre de l'écran (l'origine). + +## Recueil des valeurs physiques relatives aux planètes +Nous avons créé le fichier **constants.h** pour contenir les valeurs des +**masses, périhélies, excentricités et demi-grands-axes** +de chaque planète étudiée. +Ces valeurs ont été recueillies sur internet et dans les tables CRM. + +## Completion des fonctions relatives aux planètes +Compléter le fichier **planet.c** s'est fait par simple traduction des formules +fournies, en code C. A part quelques considérations dues à la gestion des +paramètres par l'ordinateur et une simplification de masses dans le calcul de +l'accélération, nous n'avons fait qu'interpréter les formules de l'énoncé. + +## Ajout de planètes fictives +Une fois le système suffisamment robuste, nous avons ajouté quatre planètes +à notre système. Ces dernières interagissent avec tous les autres objets de +la simulation, comme il se doit, mais sont séparées au niveau informatiques. +Ainsi, il serait facile de revenir à un système plus proche de la réalité en +ne modifiant que peu de lignes de code. +Toutes les planètes fictives sont affichées en vert, pour les dissocier des +planètes réelles. + + +# Difficultés, analyses et optimisations + +## Passage du continu au discret +Si les grandeurs physiques avec lesquelles on travaille sont continues, +leur représentation en mémoire d'un ordinateur est limitée en précision. +Même si dans le cadre de ce travail, la précision fournie par les `double` +est suffisante pour ne pas avoir à s'en inquiéter, nous avons essayé de +minimiser le nombre d'opérations effectuées pour le calcul de chaque valeur. +Il reste sans doute d'autres améliorations que nous pourrions apporter +dans ce domaine si le temps nous le permettait. +De plus, l'ajout de quelques préventions de divisions par zéro s'est aussi +avéré nécessaire. + +## Erreurs de signe +Lors de la première compilation et simulation, nous avons noté que les planètes +s'éloignaient du soleil, à l'infini. Cela n'étant pas représentatif de la réalité, +la cause de cette perturbation n'était autre qu'une inversion malheureuse +du signe du vecteur accélération. Une fois le bug identifié, la simulation +a été corrigée dans la minute. + + +# Résultats + +## Tests +Nous avons obtenu un système fonctionnel. Ce dernier a été testé pendant plus +d'une heure sans produire de résultat qui semblait physiquement incohérent. + +## Améliorations possibles +Si toutes les contraintes physiques ont été gérées, il serait souhaitable de +simplifier l'utilisation de ce programme et de le rendre plus dynamique: +possibilité de rajouter des planètes en cours de route, +d'observer leurs paramètres, ainsi qu'un nettoyage supplémentaire du code +seraient agréables (pour l'utilisateur, du moins). + +### Remarques +Il est très satisfaisant d'observer la brève accélération d'une planète à son +aphélie due au passage d'une planète fictive très dense à proximité.