Ce que tu regardes
Puits de gravité est un simulateur à N corps : chaque astre attire tous les autres selon la loi de Newton, une force en 1/r². Aucune orbite n'est « programmée » — les trajectoires émergent uniquement du jeu des forces. Une planète tourne parce que sa vitesse et l'attraction de son étoile s'équilibrent, rien d'autre.
Le calcul emploie un intégrateur de Velocity-Verlet, dit symplectique : il conserve l'énergie du système sur de très longues durées, ce qui permet de juger la stabilité réelle d'un système plutôt que de l'estimer à l'œil. Pour éviter l'infini lorsque deux corps se superposent, la force est légèrement adoucie à très courte distance (softening) : les astres sont ponctuels et ne se « percutent » pas.
La scène est en relief (2,5D). Le sol n'est pas plat : c'est la nappe du potentiel, l'entonnoir que creuse chaque masse. Plus un astre est lourd, plus son puits est profond — d'où le nom du simulateur.
Commandes de base
- Pause / Lancer — fige ou relance le temps. À l'arrêt, on observe, crée et supprime tranquillement.
- Vide — efface tous les corps et repart d'une page blanche.
- Nappe — montre ou cache la grille déformée, le relief des puits de gravité.
- Orbites — montre ou cache les traces, les sillages laissés par les corps.
- Corps au fond des puits — fait descendre chaque astre au fond de son creux de potentiel, au lieu du niveau zéro. Cette option est là uniquement pour simuler la nappe de latex : l'image de la toile élastique tendue sur laquelle des billes creusent des cuvettes, métaphore classique des puits de gravité. C'est purement visuel — la profondeur n'entre pas dans le calcul, la physique reste inchangée.
- Son — ambiance spatiale ; un son grave s'ajoute si un trou noir est présent.
- Vitesse du temps (×0 à ×32) — ×0 met en pause, ×1 est le temps réel de la simulation. Au-delà de ×1, le moteur ne grossit pas le pas de calcul (ce qui ruinerait la précision) : il multiplie le nombre de sous-pas. La simulation reste donc stable, elle avance simplement plus vite — l'outil idéal pour vérifier qu'un système tient sur le long terme.
Déplacer la vue
- Molette — reculer / avancer la caméra.
- Shift ou Ctrl + glisser — faire pivoter et déplacer la caméra.
- F11 — plein écran (fonction du navigateur).
- ESC — masquer ou réafficher tous les menus pour une image « espace seul ». ESC referme aussi cette aide.
Régler la vue
- Repères — affiche les repères dynamiques : barycentre du système (magenta), pivot désigné (cyan) avec sa sphère de Hill — la zone de stabilité à l'intérieur de laquelle une lune reste liée au pivot (au-delà, elle finit par s'échapper) — et les points de Lagrange L4 / L5 du couple désigné. Indispensable pour bien placer une lune ou des troyens.
- Recentrer — recadre la vue sur le système.
- Pointer — arme le clic : clique un astre et la caméra le suit, il devient le centre.
- Suivre — passe en référentiel co-tournant : la vue tourne avec le couple désigné, ce qui fige son orbite à l'écran. Pratique pour étudier les troyens, qui semblent alors immobiles à ±60°.
- Zoom objets (×0,5 à ×2) — grossit ou réduit la taille apparente des astres, sans toucher à la physique. Les petits corps des grands systèmes redeviennent visibles.
- Dé-zoom écran (×0,2 à ×32) — recul de la caméra, en miroir de la molette mais avec le rapport affiché.
Créer un astre
La création se fait en quatre temps :
- 1. Type — Étoile, Planète, Astéroïde ou Trou noir. Chaque type a sa propre plage de masse.
- 2. Réglages — la Masse, l'Excentricité de l'orbite (0 = cercle parfait, jusqu'à 0,9 = ellipse très allongée) et le sens : Prograde (direct) ou Rétrograde.
- 3. Désigner pivot — clique l'astre central autour duquel le nouveau corps orbitera (le plus souvent l'étoile). Le pivot s'entoure du repère cyan et de sa sphère de Hill, la zone de stabilité : une lune posée à l'intérieur (idéalement bien à l'intérieur) y reste liée durablement.
- 4. Créer — clique à l'endroit voulu. Le corps est posé à cette distance du pivot avec la vitesse orbitale exacte : il part directement en orbite, sans réglage manuel.
Troyens. Avec Repères actif, les points L4 / L5 du couple sont marqués sur l'orbite. Cliquer dessus avec l'outil Créer y dépose un astéroïde co-orbital — un troyen — au bon endroit et à la bonne vitesse.
Anneaux
Sur une planète désignée, règle le curseur Bandes (de 0 à 3) puis clique Appliquer anneau. Une valeur de 1, 2 ou 3 pose ou remplace l'anneau avec ce nombre de bandes ; la valeur 0 le supprime. C'est purement décoratif : les anneaux n'ont aucun effet sur la physique.
Supprimer des astres
La suppression vit dans son propre menu, séparé de la création : c'est un garde-fou délibéré contre les effacements accidentels.
Deux façons de cibler
- Astre — le curseur devient un cercle-brosse. Passe-le sur les corps à retirer : ils se marquent à l'écran (cercle rouge).
- Hors champ — cible d'un seul coup tous les corps sortis du champ visible, ces fugueurs devenus invisibles. Le compteur indique combien d'étoiles, de planètes et d'astéroïdes sont concernés.
Confirmer
Le bouton Supprimer (rouge) efface les corps marqués. Tant que rien n'est marqué, il reste inactif.
Pourquoi « Hors champ » ? Au fil d'une longue simulation, des astéroïdes peuvent être catapultés très loin par effet de fronde. Ils continuent de peser dans le calcul sans être visibles à l'écran : cette option fait le ménage en un clic.
Modèles prédéfinis
Une bibliothèque de systèmes prêts à l'emploi, du plus simple au plus riche : étoile seule, étoile + planète, + lune, étoiles doubles, système hiérarchique complet, « Anneaux & troyens »… Sélectionne un modèle dans la liste puis Charger.
Chaque modèle est calculé pour être stable : lunes bien à l'intérieur de leur sphère de Hill, troyens posés exactement aux points de Lagrange. C'est le meilleur point de départ — charge un modèle, puis modifie-le : ajoute une lune, change une masse, accélère le temps pour éprouver sa tenue.
Sauvegarder / Charger
- Sauvegarder — exporte l'état complet dans un fichier JSON : positions, vitesses, masses, types, anneaux, noms, et jusqu'au cadrage de la caméra et au zoom. Tu conserves ainsi un système que tu as composé.
- Charger — réimporte un fichier JSON précédemment sauvegardé.
Le format est lisible et stable : un système sauvé aujourd'hui se recharge à l'identique, caméra comprise.
À quoi sert l'arbre
L'arbre reconstruit la hiérarchie du système : qui orbite qui. La simulation ne stocke jamais cette information — elle ne connaît que positions, vitesses et masses. L'arbre la déduit à un instant donné.
Comment le pivot est déterminé
Pour chaque corps, son pivot est le corps le plus lourd que lui, le plus proche. Le corps le plus massif n'a pas de pivot : c'est la racine de l'arbre. Une lune se rattache ainsi à sa planète, une planète à son étoile.
Ce que chaque ligne indique
- le type (étoile, planète, astéroïde, trou noir) et la masse ;
- le sens de rotation autour du pivot (prograde / rétrograde) ;
- la distance au barycentre du système ;
- la mention « évadé » si le corps n'est plus lié au système : son énergie lui permet de s'en échapper définitivement.
Interagir
- Clique une ligne pour pointer la caméra sur ce corps.
- Nomme un astre en tapant dans le champ : le nom est conservé à la sauvegarde.
- ↻ Rafraîchir recalcule l'arbre. C'est un instantané : il évolue avec le système — une lune capturée, un astéroïde éjecté changent la hiérarchie.
Une limite à connaître. Le critère « le plus lourd, le plus proche » est volontairement simple et géométrique. Il ne tranche pas les cas ambigus : un troyen, à distance presque égale de sa planète et de l'étoile, peut être rattaché à l'une ou à l'autre selon la géométrie de l'instant. L'arbre donne la structure dominante, pas une classification dynamique fine.
Licence
Puits de gravité est un logiciel libre, publié sous licence BSD 2-Clause. Tu peux l'utiliser, le copier, le modifier et le redistribuer — y compris à des fins commerciales — à la seule condition de conserver la mention de copyright et le texte de la licence ci-dessous. Le logiciel est fourni « tel quel », sans aucune garantie.
Copyright (c) 2026 Pierre Revel. Conception, direction et validation : Pierre Revel (seul titulaire des droits). Développé avec l'assistance de Claude (Anthropic).
Texte intégral — seule la version anglaise fait foi :
Copyright (c) 2026 Pierre Revel
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.