Frvncso
Francois
0%
Solar System
ISEN CIR 1 - 2022
Role
Developer
Duration and Result
1 Week | 19,5/20
Team
Individual Project
Tags
C
HTML/CSS/JavaScript
JSON
p5.js
Data Visualization
Overview
In June 2022, as part of my first year at ISEN, I undertook an individual project (originally intended to be done in pairs) focusing on the calculation and representation of the solar system. This project, which took place over a week, combined calculations in C to simulate the trajectories of the planets and the development of an interactive website to visualize this data. I employed numerical methods such as Euler, asymmetric Euler, and second-order Runge-Kutta, with the output of these calculations being a JSON file containing the trajectories of the planets. The website displayed these trajectories using the p5.js graphic library.
Goal
Calculating and visualizing planetary trajectories using various numerical methods.
The primary objective of the project was twofold:
First, to calculate the trajectories of the solar system's planets in C by applying different numerical methods for solving differential equations (Euler, asymmetric Euler, and second-order Runge-Kutta).
Second, to develop a website capable of dynamically displaying these trajectories.
Context
An individual numerical simulation project.
The project was part of the first-year curriculum in CIR at ISEN, and although it was originally planned as a pair project, I completed it independently. This challenge required rigorous time management and a methodical approach to solve the technical issues related to simulation and data visualization in just one week.
Process and Methodology
Simulation in C and visualization with p5.js.
Numerical calculations in C: I began by writing a program in C to calculate the trajectories of the solar system's planets using three calculation methods: Euler's method, a simple but less accurate method; asymmetric Euler's method, a variation that improves the stability of calculations; and second-order Runge-Kutta, a more precise method for solving differential equations. The program produced a JSON file containing the calculated trajectories for each planet.
Website development: Once the JSON file was generated, I integrated it into a website designed with HTML, CSS, and JavaScript. The site allowed users to load the planetary trajectories via a button and display the data using the p5.js library for graphical rendering.
Interactive visualization: The representation of the trajectories on the site was interactive, featuring several advanced functionalities: acceleration/deceleration of time to visualize the trajectories at different speeds; zoom and tilt of the solar system for exploration from various angles; and the ability to compare the different calculation methods (Euler, asymmetric Euler, Runge-Kutta) by displaying them independently or simultaneously through integrated controls.
Challenges Faced and Solutions
Managing the project's complexity as a solo developer.
Complexity of calculation methods: The main challenge was to understand and implement the numerical methods while ensuring the accuracy of the results. Each method had its peculiarities, and I had to rigorously test the program to verify the consistency of the simulated trajectories.
Interactive visualization and data manipulation: One of the major challenges was the implementation of interactive 3D visualization using p5.js.
Solo project: Completing a project intended for two people as a single developer required strict time management. I divided the project into clear stages (calculations, visualization, integration) and demonstrated autonomy in overcoming each difficulty.
Results
An interactive website and an accurate simulation of planetary trajectories.
The project was a success, featuring an accurate simulation of the planets' trajectories and an interactive visualization that allowed real-time manipulation of the data. The site provided an intuitive interface for exploring the various calculation methods and comparing their results. This project was graded with a score of 19.5/20.
Lessons Learned and Skills Gained
Numerical methods, web development, and interactive visualization.
This project allowed me to strengthen my programming skills in C, particularly in using numerical methods to solve complex problems. Managing an originally pair-based project independently taught me how to better manage my time and effectively tackle technical issues.