NEO SPHERXE is an interactive web application inspired by the NASA Space Apps Challenge. The platform provides real-time visualization and tracking of Near-Earth Objects (NEOs), including asteroids and potentially hazardous objects, using NASA's data resources and APIs.
- Interactive 3D Solar System: Real-time visualization of planets, NEOs, and their orbits
- Multiple Object Categories:
- Major Solar System Bodies
- Dwarf Planets
- Near-Earth Asteroids (NEAs)
- Potentially Hazardous Asteroids (PHAs)
- Advanced Controls:
- Time manipulation (pause, play, speed adjustment)
- Customizable object visibility
- Interactive camera controls
- Object labels and orbit visualization
- Risk Assessment: Real-time monitoring and risk level evaluation of approaching NEOs
- Detailed Information: Comprehensive data about celestial objects including orbital parameters and physical characteristics
- Frontend Framework: React
- 3D Rendering: Three.js with React Three Fiber
- State Management: React Hooks
- UI Components: TailwindCSS
- 3D Models & Effects: React Three Drei
- Icons: FontAwesome
- Data Sources: NASA APIs and Resources
- Node.js (v16.0.0 or higher)
- npm or yarn
- Git
-
Clone the Repository:
git clone https://github.com/your-username/NEO_SPHERXE.git cd NEO_SPHERXE
-
Install Dependencies:
npm install # or yarn install
-
Environment Setup:
- Create a
.env
file in the root directory - Add necessary environment variables (if any)
- Create a
-
Start Development Server:
npm run dev # or yarn dev
-
Navigation:
- Use mouse/trackpad to rotate the view
- Scroll to zoom in/out
- Right-click and drag to pan
-
Object Controls:
- Toggle visibility of different celestial bodies using the layers panel
- Click on objects to view detailed information
- Use the time controller to adjust simulation speed
-
Risk Assessment:
- Access the risk level dashboard to view approaching NEOs
- Monitor threat levels and approach dates
- Filter objects based on risk categories
NEO_SPHERXE/
├── src/
│ ├── components/ # React components
│ ├── hooks/ # Custom React hooks
│ ├── utilities/ # Helper functions
│ ├── assets/ # Static resources
├── public/ # Public assets
└── ...
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature
) - Commit your changes (
git commit -m 'Add some AmazingFeature'
) - Push to the branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
The application uses Kepler's orbital mechanics for precise celestial body positioning:
-
Eccentric Anomaly (E) from Mean Anomaly (M):
$M = E - e\sin(E)$ (Kepler's Equation) -
True Anomaly (ν) from Eccentric Anomaly:
$\nu = 2\arctan\left(\sqrt{\frac{1+e}{1-e}}\tan\frac{E}{2}\right)$ -
Radius Vector (r):
$r = a(1-e\cos(E))$ -
Cartesian Coordinates:
-
NASA APIs Used:
- JPL Small-Body Database
- NEO Earth Close Approaches
-
Update Frequency:
- Real-time calculations for object positions
- Daily updates for NEO risk assessments
- Hourly updates for close approach data
-
Salma Saad
- Role: Team Leader
- LinkedIn: Salma Saad
- Email: [email protected]
-
Ahmed Khaled Fathi
- Role: Frontend Developer
- GitHub: AhmedKhaledp-0
- Email: [email protected]
-
Raghad Mahmoud
- Role: UI/UX Designer
- LinkedIn: Raghad Mahmoud
- Behance: Portfolio
- Email: [email protected]
-
Basma Sabry Elhussieni
- Role: Backend and Data Analyzer
- LinkedIn: Basma Sabry
- GitHub: Basma-90
-
Mohamed Ahmed Badry
- Role: Backend and Data Analyzer
- LinkedIn: Mohamed Badry
-
Abd Elhadi Elsayed
- Role: Video Editor, Data Collection
- Email: [email protected]
-
Rendering Optimizations:
- Instance mesh batching
- Dynamic level of detail (LOD)
- Frustum culling
- Texture compression
-
Calculation Optimizations:
- Web Workers for heavy calculations
- Memoization of orbital parameters
- Efficient data structures for position tracking
-
Data Management:
- Client-side caching
- Progressive loading
- Optimized state management
-
Computational Constraints:
- Maximum of 1000 simultaneous NEO objects
- Time simulation limited to ±100 years from present
- Position accuracy decreases with prediction distance
-
Browser Requirements:
- WebGL 2.0 support required
- Minimum 4GB RAM recommended
- Modern browser (Chrome 80+, Firefox 75+, Safari 13+)