Skip to content
Snippets Groups Projects
Commit 20327898 authored by Boris Stefanovic's avatar Boris Stefanovic
Browse files

ADD: doc V1.0

parent 3e06e219
No related branches found
No related tags found
No related merge requests found
......@@ -2,3 +2,4 @@
*.o
main
tests
doc/*.pdf
---
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é.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment