Skip to content
/ Orri Public

This solar system simulation program uses real-time ephemeris data from a dedicated server to accurately model the positions and motions of all planets and major moons. It features multiple view modes, including one that allows users to observe the solar system from any specified location on Earth.

Notifications You must be signed in to change notification settings

vortical/Orri

Repository files navigation

A 3D web application crafted to faithfully visualize celestial bodies within our solar system.

Initial positions and velocities are retrieved from a simple ephemeris like REST API which was created to support the Web Application. It is on my github.

Once the initial conditions are established, positions and velocities are maintained with a leap frog approach to update the state based on clock time and scale. The N-Body calculations naively consider all the bodies given that we only have around 40 bodies to update. I have another algorithm which implements BarnsHut in 3D which offers the option to view the octree. It should eventually makes its way into this web application.

The web app is currently hosted on github https://vortical.github.io/Orri/ and https://vortical.hopto.org/Orri/, be aware that the inital load of imagery may take some time.

Here are some quick links:

It has some educational benefits:

Please note that this application is somewhat still in early stages of development, and there may be some rough edges. Especially the mouse/touchpad interaction has some known issues. If you drag the mouse to orbit around the scene and release the mouse while its over a body, then that body will be selected.

Navigating Between Celestial Bodies

You can explore different planets and moons by selecting them within the application. Your movement capabilities are determined by the selected camera targeting mode. The currently are 3 camera modes:

  • "Follow Target" Camera Mode: This mode maintains the camera at a constant position and direction relative to the selected target. It effectively keeps the target body within the camera view while pointing in the same direction in space.
  • "Look at Target" Camera Mode: In this mode, the camera's position remains fixed, but it continuously points towards the selected target. This stationary perspective provides a sense of the slow and majestic movements of celestial bodies in space.
  • "Follow From Surface" Camera Mode: This mode positions the camera on the surface of Earth, with the camera direction always pointing towards the selected target. Please note that the camera position remains fixed at the established coordinates on the Earth's surface, with an altitude fixed at 100 meters.

Camera Control Functions

While in either the "Follow Target" or "Look at Target" camera mode, you can perform the following camera control functions:

  • Zooming: Use your mouse scroll button or two-finger drag on a touchpad or mobile display to zoom in and out.
  • Orbiting: Click or touch and drag to orbit around the selected target.
  • Selecting and Moving: Click on other celestial bodies to select and move towards them at speeds exceeding the speed of light!

While in "Follow From Surface" camera mode, the camera controls will remain fixed at the established coordinates/position on the surface (altitude is fixed at 100m) while the camera direction will ALWAYS be pointing towards the target. Be aware that it is possible for the camera target to be below/behind the surface horizon; in that case, the camera will be pointing down into the surface of Earth and have a 'blocked' view. If the "Show Alt/Az" option is enabled, a negative Alt property value means the target is below the horizon. So while in the "Follow From Surface" camera mode:

  • You can click or select different targets. Once a target is set, the view remains pointed towards it regardless of the fact that it is above or below the horizon.

Time Control

You can control the application's internal clock and time scale to observe celestial bodies at different times and speeds.

  • Changing Datetime: Click on the datetime display to bring up the datetime picker. Apply changes by clicking outside the picker.
  • Play/Pause: Cick '>' to play and '||' to pause. When play is enabled, the application clock progresses based on the selected time scale. Pausing the clock stops all time-dependent movements of celestial bodies.
  • Rewind and Forward: Click repeatedly on '<<' to rewind and '>>' to fast forward, adjusting the time scale in either direction.
  • Setting to Current Time: Click on 'Now' to set the clock to the current date and time.
  • Resetting Time Scale: Click on '1X' to reset the time scale back to 1X.

If you want to view the bodies in 'real time' (scale is '1X') just click on 'Now'.

Setting a Location on the Surface

This feature is still rough from a user's perspecive. You have two methods to specify coordinates for positioning on the Earth's surface:

  • Manual Input: Enter latitude and longitude coordinates to place a green dot on the Earth's surface. This will set the initial camera position when you switch to the "View From Surface" camera mode.
  • Use Browser Location: Clicking this option will utilize your browser's current location via IP geolocation. You'll need to approve the initial location prompt; subsequent requests will bypass this prompt.

The plan is to eventually let users click anywhere on any body to set a location...

Shadows and Shadow Modes

The application offers the option to enable/disable shadows with two distinct shadow modes: Penumbra and Umbra. Shadows are established using parallel light, with their centers accurately positioned.

  • Enabling Shadows: Toggle the shadows on/off to visualize the shadow of the moon on Earth during solar eclipses and other shadow effects.
  • Shadow Modes: Choose between Penumbra and Umbra modes. The Umbra represents the darkest, central part of a shadow, while the Penumbra is the surrounding, lighter region. The Umbra effectively represents the area experiencing a 'total' eclipse.

Field Of View Control

The Field of View (FOV) represents the angle of your view. Imagine opening your arms in front of your eyes—the angle between your arms represents the FOV. The wider you open them, the wider the FOV.

  • Adjusting FOV: Use the FOV control to change the viewing angle. A smaller FOV results in a narrow angle with magnified targets. A FOV of approximately 0.5 will make the moon occupy the entire screen, while the minimum value of 0.0001 enables you to view Pluto from a position on earth - the indicated labels of distance and Altitude/Azimuth are precise.

Displaying Labels in Orri

The app displays labels over celestial objects, which can be easily enabled or disabled according to your preferences. E.g.: to see a cool view without labels. There are three types of labels:

  • Body Name: This label indicates the name of the celestial body.
  • Body Distance from the Camera: Distances can be configured to display in Astronomical Units (Au), kilometers (km), or miles. This provides valuable context on the spatial relationship between objects and the viewer.
  • Altitude/Azimuth Coordinates: This label is specific to the viewer's perspective and is only visible when using the "View From Surface" camera mode. For more information on the altaz coordinates, you can refer to Wikipedia's page on the Horizontal Coordinate System. This label also depicts a small arrow that is either pointing up: ↑ or down: ↓ which indicates if the body is currently trending/moving up or down in elevation.

About

This solar system simulation program uses real-time ephemeris data from a dedicated server to accurately model the positions and motions of all planets and major moons. It features multiple view modes, including one that allows users to observe the solar system from any specified location on Earth.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages