Présentation
Newton's Orchard est une application web qui reproduit les lois de la gravitation de Newton dans un espace virtuel. L'utilisateur crée, déplace ou supprime des corps célestes et observe les trajectoires résultantes en temps réel. Le projet se veut pédagogique, offrant une visualisation immédiate des interactions N‑body sans nécessiter d’installation locale.
Architecture technique
L’outil repose sur les standards du web : HTML5 pour la structure, le canvas 2D ou WebGL pour le rendu graphique, et JavaScript comme moteur de calcul. Le code s’appuie sur requestAnimationFrame afin de synchroniser les mises à jour de la physique avec le rafraîchissement de l’écran, limitant ainsi la charge CPU. Les forces gravitationnelles sont calculées à chaque frame en appliquant la formule F = G·(m1·m2)/r², où G est la constante gravitationnelle, m1 et m2 les masses, et r la distance euclidienne entre les corps.
Pour les scénarios contenant plus de quelques dizaines d’objets, le calcul direct O(N²) devient prohibitif. La documentation publique ne précise pas de recours à un algorithme d’approximation tel que Barnes‑Hut, ce qui suggère que la version actuelle reste limitée à des systèmes de petite taille ou à des performances dépendantes du matériel client.
Analyse des performances et limites
Le moteur JavaScript utilise des nombres à virgule flottante double précision (IEEE‑754 64 bits). Cette précision suffit pour des distances astronomiques modérées, mais les valeurs extrêmes entraînent des erreurs d’arrondi qui se manifestent sous forme de trajectoires instables. De plus, le sandbox du navigateur empêche l’accès direct au GPU au‑delà de WebGL, limitant la capacité de paralléliser les calculs de force. En pratique, les tests réalisés sur des navigateurs modernes (Chrome 118, Firefox 119) montrent un taux de rafraîchissement stable autour de 30 fps pour 50 corps, mais chute rapidement sous les 15 fps dès que le nombre dépasse 100.
Le modèle de sécurité du web impose également des restrictions : aucune lecture ou écriture de fichiers système, aucune exécution de code natif, ce qui protège l’utilisateur mais empêche l’utilisation de bibliothèques C++ optimisées via WebAssembly. L’absence d’une version WebAssembly du solveur gravitationnel représente une opportunité d’amélioration notable.
Perspectives d'usage et évolutions possibles
Newton's Orchard peut servir de support didactique dans les cours de physique ou d’introduction à la programmation graphique. Son architecture purement client‑side facilite le déploiement, mais limite la complexité des scénarios simulables. L’intégration d’un algorithme de partition spatiale (Barnes‑Hut ou Fast Multipole Method) réduirait la complexité à O(N log N), rendant viable la simulation de plusieurs centaines de corps.
Le passage à WebAssembly, en compilant un solveur C++ ou Rust, offrirait un gain de performance de l’ordre de 5 à 10 fois, tout en conservant la portabilité du navigateur. Enfin, l’ajout d’une API REST permettant de charger ou d’enregistrer des configurations de systèmes gravitationnels élargirait l’écosystème, ouvrant la porte à des études comparatives ou à des visualisations collaboratives.