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
1cedf5b0
Commit
1cedf5b0
authored
3 years ago
by
BobLeHibou
Browse files
Options
Downloads
Patches
Plain Diff
save
parent
adb7f340
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
doc/rapport.md
+55
-5
55 additions, 5 deletions
doc/rapport.md
with
55 additions
and
5 deletions
doc/rapport.md
+
55
−
5
View file @
1cedf5b0
...
...
@@ -7,22 +7,66 @@ date: 2021-12-21
...
# Méthode
# Calcul des Forces
Chaque corps subit les forces d'attraction des autres corps présents.
On a la formule pour calculer la force entre deux masses:
$$F =
\f
rac{G
\t
imes M
\t
imes m}{r^2}$$
La force résultante sur la masse $m$ est donc:
$$F_{res
\r
ightarrow m} =
\s
um_{i
\i
n autres corps}
\f
rac{G
\t
imes M_i
\t
imes m}{r^2}$$
On applique la deuxième loi de Newton:
$$F = m
\t
imes a$$
Toujours avec $m$, la masse du corps qui subit la force, on pose, par $F = F$:
$$m
\t
imes a =
\f
rac{G
\t
imes M
\t
imes m}{r^2}$$
On simplifie par la masse du corps étudié, comme suit:
$$a =
\f
rac{G
\t
imes M}{r^2}$$
Ainsi, on peut directement calculer le vecteur accélération "résultant":
$$a_{res
\r
ightarrow m} =
\s
um_{i
\i
n autres corps}
\f
rac{G
\t
imes M_i}{r^2}$$
## Application
C'est en utilisant cette dernière formule que le vecteur accélération a été calculé,
de façon itérative, par un suite d'additions de vecteurs.
Ainsi, notre programme ne comporte aucune représentation de vecteur force.
# Analyse des Résultats
## Simulation
De par la contrainte imposée par l'utilisation d'un intervalle de temps,
l'évolution du système n'est pas continue.
En réalité en revanche, les forces en jeu s'appliquent de manière continue,
on perd donc en précision à ce niveau-là.
## Calculs
On essaie de limiter le nombre de calculs.
Une simplification mathématique (des masses), comme mentionné plus haut,
y contribue.
## Observation de l'Affichage
Nous avons pu constater que, comme il se doit, les planètes interagissent bien entre elles
et non seulement avec l'étoile, au centre du système.
Ceci a pu être observé lorsqu'une planète a subi une accélération soudaine
**à l'aphélie**
,
due au passage d'une planète fictive relativement massive à proximité.
# L'Aspect Informatique
## 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 d
e la lib vec2
## Adaptation d
u code Existant
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
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).
En plus de cela, une fonction
`vec2 calc_prev_position(const double star_mass, const vec2 pos, const double ecc, const double axm, const double delta_t)`
a été implémentée pour séparer le calcul de la vitesse initiale des planètes du reste du code.
## Recueil des valeurs physiques relatives aux planètes
Nous avons créé le fichier
**constants.h**
pour contenir les valeurs des
...
...
@@ -41,12 +85,18 @@ 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 informatique
s
.
la simulation, comme il se doit, mais sont séparées au niveau informatique.
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.
## Déroulement du Programme
Le principe de cette simulation est de mettre à jour les variables du système
après chaque intervalle de temps (constant) $
\D
elta t$.
A chaque itération, on calcule la position des planètes au temps $t +
\D
elta t$
après application des forces.
# Difficultés, analyses et optimisations
...
...
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