Manual · Solar System 3D

Complete guide to the 3D WebGL solar system observatory: scene navigation, time controls, scale modes, body inspector, and the firmament layer.

1.Overview

The Fosforonero Lab Solar System 3D is an interactive in-browser observatory built with WebGL (Three.js). It lets you explore solar system bodies in simulated time, using real astronomical data where available.

A — Physics genuinely respected: — Orbital elements (a, e, i, Ω, ω, M₀) from NASA/JPL Horizons — real values. — Correct Keplerian propagation: Kepler's equation solved numerically, full perifocal rotation. — Distance ratios in "Compressed" scale: 1 AU = 1 unit, physically correct. — Radius ratios in "Relative" scale: proportional to the Sun, physically correct. — 1/r² lighting in physical mode: no boost; Neptune is as dark as in reality. — Axial obliquity: real IAU 2015 values (Earth 23.44°, Venus 177.36°, Uranus 97.77°). — Sidereal rotation phase: computed from the real sidereal period from J2000.0. — Ring proportions: ring/planet ratios are physically correct. — Hipparcos star catalog (44 named stars, real J2000 RA/Dec positions).

B — Approximated or educational (disclosed in the UI): — "Visible" radius scale (default): logarithmic category-based, not proportional. Disclosed. — Moon distances: ~200× boost for legibility. Disclosed. — Educational lighting (default): 1/r² + declared ambient boost. — Day/night side: Three.js shading on untextured spheres; no eclipse shadow casting. — Pole direction: ecliptic approximation, not per-body IAU WGCCRE RA/Dec. Planned Sprint 04. — Rings: fixed colour (do not receive sunlight from the PointLight).

C — Not yet implemented: — Newtonian gravity / N-body: orbits are static Keplerian elements. — Temperature: no data, no calculations. — Eclipses, shadows, transits. — Relativistic corrections (including Mercury perihelion precession). — massKg shown in the inspector but not used in the simulation. — Real surface textures (roadmap).

3.Time controls

The toolbar at the bottom (or top, depending on layout) contains the time controls:

Now button: immediately resets the simulation to the browser's current date and time.

Date picker: a date/time input that lets you set any date between approximately 1800 and 2200. Orbital positions are recalculated in real time.

Play / Pause: starts or pauses the simulated time animation. When playing, body positions update every 100 ms.

Speed selector: — Real time → 1 simulated second = 1 real second — 1 day/sec → 1 simulated day per real second — 1 month/sec → 30 simulated days per real second — 1 year/sec → 365 simulated days per real second

Note: at high speeds (1 year/sec), the orbital trajectories of fast bodies such as Mercury may appear discontinuous between updates. This is normal: the position is still correctly computed for each frame.

4.Scale modes

The real solar system is almost entirely empty space. To visualize it usefully, several scale modes are available:

Distance scale: — Compressed (default): 1 AU = 1 render unit. Inner planets are close together and distinguishable. Neptune is visible but distant. This is the most intuitive mode for general exploration. — Logarithmic: distance is transformed with log10. Useful for showing inner and outer planets, TNOs, and distant objects simultaneously. Distances are not linear, but the overall system structure becomes immediately readable. — Inner system: expands the zone within 2 AU to show Mercury, Venus, Earth, and Mars with more detail and space between them.

Radius scale: — Visible (default): enforces a minimum visible size for all bodies. Small planets and moons are larger than they would realistically be at these distances. Ensures every body is clickable. — Relative: radii are proportional to the Sun. Earth appears as a tiny dot. Physically more accurate, but many bodies become invisible to the naked eye.

A note on physical ratios: in "Compressed" mode, orbital distance ratios are physically correct. In "Relative" mode, radius ratios are physically correct. However, there is no mode where both radii and distances are simultaneously to physical scale — at true proportions, planets would be invisible against the vast distances between them.

5.Reference frame

Reference frame: all positions are computed in the Heliocentric Ecliptic J2000.0 frame (HEC-J2000).

Origin: Solar System Barycentre (approximated to the Sun in this lab). xy-plane: mean ecliptic plane at J2000.0. x-axis: mean vernal equinox at J2000.0. Units: kilometres.

This is NOT the same as equatorial ICRF/J2000 (used by SIMBAD, Gaia, etc.). The conversion requires a ~23.44° rotation around x (obliquity of the ecliptic, IAU 2006).

What is approximated: origin is at the Sun, not the true barycentre; positions come from Keplerian elements, not numerical integration; planetary pole azimuth is approximated (IAU WGCCRE RA/Dec planned for Sprint 04).

6.Axial tilt and rotation

Axial tilt: major planets show their real obliquity to the ecliptic (IAU 2015 data). The rotation axis is optionally visible via the "Axes" toggle in the toolbar.

Retrograde rotation: Venus (177°), Uranus (98°) and Pluto (122°) rotate retrograde. Uranus has its pole nearly in the orbital plane.

Rings: Saturn shows rings in its equatorial plane (74,500–140,220 km). Uranus shows fainter rings (38,000–51,149 km), nearly perpendicular to the orbital plane due to its 98° tilt.

Technical note: pole azimuth is approximated — the precise IAU WGCCRE RA/Dec direction is not yet implemented. Rotation phase follows the real sidereal period from J2000.0, without precession or nutation.

7.Lighting

Educational lighting (default): solar light with inverse-square law (1/r²) plus a small declared ambient boost that keeps outer planets visible. Not physically accurate for distant planets.

Physical lighting (1/r²): no boost. Neptune at ~30 AU receives ~1/900 of Earth's irradiance — as dark as reality. Selectable from the "Lighting" menu in the toolbar.

The active mode is always shown in the inspector under "Active scales".

8.Body categories

Bodies in the side browser are organized by category:

Star: the Sun. The only star in the solar system. Radius: 696,340 km. Mass: 1.989 × 10³⁰ kg.

Planets (8): Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune. IAU 2006 classification.

Dwarf planets: Pluto, Ceres, Eris, Makemake, Haumea. IAU 2006 classification.

Moons: the Moon (Earth), Titan, Europa, Ganymede, Callisto, Io, Triton, and other major moons of the giant planets. Sprint 01 includes a curated subset.

Asteroids: minor bodies of the main belt. Sprint 01 includes a representative subset (Vesta, Pallas, etc.).

Comets: bodies with highly eccentric orbits. Sprint 01 includes some notable comets (e.g. 1P/Halley).

Trans-Neptunian Objects (TNOs): bodies beyond Neptune's orbit, including the Kuiper Belt. Sprint 01 includes the most notable TNOs.

All bodies in the MVP are manually curated static data. A full minor-body catalog (JPL Small Body Database) is planned for future sprints.

9.Inspector fields

When you select a celestial body, the side inspector shows:

Name: official IAU name, shown in both Italian and English (bilingual).

Category: the body's category (star, planet, dwarf planet, moon, asteroid, comet, TNO).

Parent body: the body it orbits (e.g. "Earth" for the Moon, "Sun" for planets).

Radius: mean radius in km. For non-spherical bodies (like asteroids), this is the equivalent radius.

Mass: mass in kg, in scientific notation (e.g. 5.972 × 10²⁴ kg for Earth). Reference data only: mass is not used in simulation calculations (orbits are Keplerian, not N-body).

Epoch: ISO 8601 date to which the computed position refers. This matches the date currently set in the time controls.

Source: the dataset used for orbital elements (e.g. "NASA/JPL public orbital elements", "Hipparcos catalog").

Asset confidence: indicates the fidelity level of the body's visual representation (see next section).

10.Visual confidence labels

Each body has a confidence label describing how faithful its visual representation is:

Procedural: the body is rendered with an approximate color and a generic spherical shape. There is no real surface map. This is the current level for most bodies in the MVP Sprint 01. The color is chosen based on the category and available data, but is not photographically accurate.

Symbolic: the body is represented only by a point indicator or marker, without 3D geometry. Used for very small or distant bodies where geometry makes no sense at the current scale.

Real mesh (roadmap): a 3D mesh modeled on real topographic data (USGS, NASA DEM). Planned for Sprint 02+ for Earth, Moon, Mars, and other well-documented bodies.

Real map (roadmap): photographic texture from NASA/USGS/JAXA data applied to the mesh. Planned for Sprint 02+ alongside real meshes.

11.Firmament layer

The firmament is the stellar background of the 3D scene. It is built from real astronomical data:

Stars: 44 named stars from the ESA Hipparcos catalog (High Precision Parallax Collecting Satellite). Each star has a real position (right ascension and declination J2000), real magnitude, and color computed from spectral temperature. Stars are projected onto the celestial sphere at a fixed distance from the camera.

Constellations: constellation lines drawn from Stellarium Sky Cultures metadata. Curated subset of bright stars and recognizable constellations (not full IAU 88 coverage). Can be toggled on or off with the "Constellations" toggle in the control panel.

Deep-sky objects: a subset of Messier and NGC objects from OpenNGC: — M31 (Andromeda Galaxy), M33 (Triangulum), M42 (Orion Nebula), M45 (Pleiades), M44 (Beehive Cluster), M13 (Hercules Globular Cluster), M81 (Bode's Galaxy), M57 (Ring Nebula). Displayed as icons or markers with names. Can be toggled separately from constellations.

Coming soon: the full Gaia catalog (over 1 billion stars) is planned for a future sprint, with optimized rendering using instanced geometry and LOD.

12.Roadmap: sandbox mode

Sandbox mode is a planned feature for a future sprint. It is not available in the MVP Sprint 01.

In sandbox mode, the user will be able to: — Add custom celestial bodies (name, mass, radius, position, initial velocity). — Choose between simplified N-body physics (Verlet integration) or Keplerian orbital elements. — Observe how new bodies interact gravitationally with the existing system. — Export the configuration as JSON to share or reopen later.

The current mode shows only real solar system data. It is not possible to add or modify bodies.

13.Mobile & performance

Current optimization status:

Desktop: the primary experience. The WebGL canvas and all panels are designed for screens 1280px and wider. Tested on Chrome, Firefox, and Safari.

Mobile: the canvas renders correctly on mobile devices. Controls (side panels, toolbar) may overlap or feel cramped on small screens. Touch gestures for navigation (rotate, zoom, pan) are partially supported in Sprint 01. Future sprints will add collapsible panels and optimized touch gestures.

Performance: the WebGL module loads via dynamic import (lazy loading), so it does not impact the initial page load. Sprint 01 does not load heavy textures. The number of active bodies is manageable (~28 bodies). Rendering is optimized with requestAnimationFrame and positional updates every 100ms.

If you experience performance issues on older hardware: try disabling the star firmament from the settings panel (this reduces the number of vertices to render).

14.FAQ

Are the planet positions accurate?
They are approximate. Positions are computed from public reference orbital elements (based on NASA/JPL data) using simplified Keplerian formulas. Typical error is a few million km over a timescale of years. JPL Horizons precision (sub-kilometer) is planned for a future sprint with live Horizons API integration.
Why does the solar system look so small?
In the 'Compressed' scale (default), 1 AU = 1 render unit: inner planets are close but Neptune is already distant. Try the 'Inner system' scale mode to expand the zone within 2 AU and see Mercury, Venus, Earth, and Mars with more detail.
Can I add a custom planet?
Not in the MVP. Sandbox mode, which will let you add bodies with custom mass and initial velocity, is on the roadmap for a future sprint.
Why are the planets just colored spheres?
Real surface textures require processing NASA/USGS data (altimetric maps, multispectral imagery). This work is planned for Sprint 02. In the MVP, representation is procedural: approximate color + spherical shape.
Which star catalog is used?
The ESA Hipparcos catalog (High Precision Parallax Collecting Satellite). 44 named stars with real J2000 RA/Dec positions and real magnitudes. The full Gaia catalog is planned for Sprint 02.
How many bodies are included?
Sprint 01 includes approximately 28 curated bodies: the Sun, 8 planets, 5 main dwarf planets, major moons, some representative asteroids, and a few notable comets. A full minor-body catalog (JPL Small Body Database, >1 million objects) is planned for future sprints.
Where does the orbital data come from?
Public reference orbital elements based on NASA/JPL (Jet Propulsion Laboratory) data. This is not a live feed: the data is loaded statically in the application. Live integration with JPL Horizons is on the roadmap.