Demo is Live on Netlify Demo .
This project is our submission for the 2024 NASA International Space Apps Challenge. It showcases an interactive orrery web app designed to visualize celestial bodies such as planets, Near-Earth Asteroids (NEAs) including Potentially Hazardous Asteroids (PHAs), Near-Earth Comets (NECs), within our solar system.
The app features a dynamic, animated model that traces the orbital paths and positions of these celestial bodies over time, utilizing real-time data. Our goal is to educate users about these objects through an intuitive, 3D visualization tool supported by NASA's public datasets.
- Interactive 3D Visualization: View the solar system in an interactive manner with the ability to zoom, pan, and rotate.
- NASA's Celestial Body Data: Visualize the position of planets, NECs, NEAs, and PHAs using NASA's Keplerian parameters.
- Orbital Trajectories: Explore the colored orbital trajectories of celestial bodies, with options to enable/disable specific orbits.
- Speed & Timeline Control: Control the speed of the simulation to observe the solar system at different speeds.
- Labels and Views: Toggle labels for celestial objects (NEOs).
- 3D Graphics: Built using open-source 3D graphics library Three.js.
- NASA Data Integration: Celestial body data retrieved from NASA’s Small Body Database and other public datasets/APIs.
- Orbital Propagator: Implemented to calculate real-time movement of celestial bodies in the dynamic orrery.
- Web Application: Developed as a web-based application, ensuring accessibility across multiple browsers (tested on Chrome, Firefox, Safari) and devices.
To run the project locally:
-
Clone the repository:
git clone https://github.com/KhamessiTaha/CosmoArchitects.git cd CosmoArchitects
-
Install the required dependencies:
npm install
-
Run the development server:
npm run start
-
Open your browser and navigate to http://localhost:3000.
- NASA’s Small Body Database: Used for retrieving Keplerian parameters and orbital data for NECs, NEAs, and PHAs.
- Keplerian Parameters Tutorial: Followed the guidelines for using eccentricity, semi-major axis, inclination, argument of periapsis, true anomaly, and more to calculate elliptical orbits.
- Additional NASA APIs: NASA's Horizon API/NASA's Open API Used for planet position data and additional celestial information.
The main objectives for this project are:
- Interactive Education: Provide a visual and interactive platform for users to learn about the solar system and its celestial bodies.
- Real-time Orbit Visualization: Accurately represent the position of celestial objects at any given time.
- User Engagement: Enable users to explore and manipulate the visualization by controlling time, speed, and the point of view in the orrery.
- Navigation: Use mouse controls or touch gestures to pan, zoom, and rotate around the solar system.
- Control Panel: Utilize the control panel to switch between labels, toggle orbital paths, and control the simulation speed.
- Time Travel: Click the 'Faster' or 'Slower' buttons to observe the celestial movements at different speeds.
- Explore Near-Earth Objects: Use the object filter to focus on Near-Earth Objects (NEOs) such as asteroids or comets.
- Enhanced AI Orbit Predictions: Further improve AI-generated orbits with more accurate long-term trajectory predictions.
- Expanded Object Database: Include more detailed data for additional celestial bodies.
- Mobile-Friendly UI: Optimize the web app for mobile devices to enhance accessibility.
Contributions are welcome! If you'd like to contribute, please fork the repository and submit a pull request. Make sure to follow the guidelines outlined in the CONTRIBUTING.md file.
- NASA: For the publicly available datasets and the resources that made this project possible.
- Three.js: For the 3D graphics engine that powers the visualization.
- AI Tools: Special thanks to AI tools used for code debugging :D.
This project is licensed under the LGPL-2.1 license - see the LICENSE file for details.