Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
P
phys_planetes
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
boris.stefanov
phys_planetes
Commits
20327898
Commit
20327898
authored
3 years ago
by
Boris Stefanovic
Browse files
Options
Downloads
Patches
Plain Diff
ADD: doc V1.0
parent
3e06e219
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
.gitignore
+1
-0
1 addition, 0 deletions
.gitignore
doc/rapport.md
+85
-0
85 additions, 0 deletions
doc/rapport.md
with
86 additions
and
0 deletions
.gitignore
+
1
−
0
View file @
20327898
...
...
@@ -2,3 +2,4 @@
*.o
main
tests
doc/*.pdf
This diff is collapsed.
Click to expand it.
doc/rapport.md
0 → 100644
+
85
−
0
View file @
20327898
---
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é.
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment