SpaceEthics

Space Ethics Visualisation — System & Credits

← Back to Visualisation
Acknowledgements

Thank You

This visualisation exists because of the dedication of researchers and institutions who have made their data openly available. Assembling a comprehensive picture of humanity's presence and action in space — from every satellite in low Earth orbit to probes crossing the heliopause — would simply not be possible without their work.

Our deepest gratitude to:

Each dataset is a contribution to a shared, open picture of where we have gone, what we have sent, and what trace we have left. Thank you.

Overview

What This Is

An interactive 3D visualisation of humanity's physical, informational, and contextual footprint in the Solar System and beyond — from Earth-orbit satellites to probes in interstellar space, METI messages, exoplanetary systems, and our place in the Milky Way.

The proposed tool is an attempt by Adrien Normier, for a prototype visualisation arm of a larger project initiated at the International Space Science Institute (ISSI) Forum on Cosmic Footprint (2023–2024). The broader ambition is an International Registry of Anthropogenic Footprint Beyond Earth — a common ground for ethics and governance discussions, merging existing databases, filling data gaps, and making the result publicly accessible.

The visualisation is built on spacekit.js (Ian Webster / typpo), itself wrapping Three.js, running in the browser with no server-side rendering. All coordinate maths is executed client-side using J2000.0 ecliptic heliocentric frames as the native scene coordinate system.

Architecture Concept

Two Distinct Layers

The visualisation is structured around two conceptually separate layers that should not be confused:

Layer 1 — Natural Environment Model

A scientifically accurate model of the pre-existing cosmos: the solar system, nearby stars (GAIA DR3), confirmed exoplanetary systems (NASA Archive), and the Milky Way (ESO panorama). This layer provides the context — the vast, indifferent backdrop against which human activity is measured. It is not the subject of the project; it is the scale reference. Objects in this layer are rendered as the existing, unaffected natural environment.

Layer 2 — Human Impact Layer

The actual subject of the project: everything humanity has placed, fired, crashed, or transmitted into space since 1957. This includes:

The human impact layer can be hidden entirely (fingerprint icon in the toolbar) to reveal the natural environment model alone — making the contrast vivid and intentional.

The point is not to celebrate the footprint, nor to condemn it — but to make it visible, measurable, and discussable. Ethics starts with facts.
Visual Language

Active vs. Inactive Objects

All artificial objects carry an operational status derived from cross-referencing multiple GCAT registries:

The distinction relies on a lifecycle cross-registry system that links an object's heliocentric flight phase (GCAT hcocat) to its surface phase (GCAT landercat) by normalised name matching. An object whose name resolves to both a heliocentric entry and a landing entry is marked inactive in heliocentric space once its landing date has passed, and its infobox selection ring follows it across registries from flight to surface.

Simulation Design

Temporal Visibility

The simulation is time-aware: scrubbing the year slider changes what is visible. Each category of object follows a principled rule about when it appears and disappears:

DatasetAppearsDisappears
Earth orbit satellites On launch date (from Keplerian epoch) When orbit decays / no epoch data (hidden immediately)
Launch sites First recorded launch (GCAT TStart) 5 years after last recorded launch (TStop); sites still active today remain visible indefinitely
Planet orbiters (Mars, Jupiter, Moon) Mission launch date Remain visible while the mission is active (no planned end date encoded)
Planetary landings & impacts Landing / impact date Permanent — surface hardware does not disappear
Cataclysmic events (collisions, ASAT, explosions) Event date — dot persists, expanding flash plays once Permanent — debris fields are historical facts
METI messages Transmission date — propagates outward at c Never; the wavefront is permanent

Launch site activity windows are derived directly from the GCAT Launch Sites table (McDowell, CC-BY 4.0), which records first and last launch dates for each facility. Sites with no known first use (TStart = –) or no known last use (TStop = * or ) are treated conservatively: no start constraint or no end constraint, respectively.

Interaction

Controls & Tools

ControlFunction
Click object Open infobox — shows name, distance, source, lifecycle. Up to 4 simultaneous panels. Selection ring tracks the object across the 3D scene.
Search (toolbar or Cmd/Ctrl+F) Full-text live search across all named objects in the current scene. Nav items navigate directly; object checkboxes open infoboxes. Yellow rings highlight matches.
📏 Ruler Click two objects or points to measure the distance between them. Both endpoints track moving objects. Up to 5 simultaneous measurements; oldest is evicted on the 6th. Click × to dismiss.
DSN Live Loads real-time Deep Space Network feed. Active spacecraft appear with animated dashed lines toward deep space. A robot voice reads active target names; sonar pings repeat every 3 s.
Year slider Scrub simulation time 1950 – 2029. Objects appear and disappear on their historical dates.
Trail length slider In the Motion overlay panel. Log-scale range: 0.1 hours (spacecraft close-up detail) to 10,000 years (proper-motion arcs for stars and exoplanet systems).
U key Hide / restore all UI overlays for a clean view.
Fingerprint icon Toggle human-impact layer on/off to reveal the natural environment alone.
Label click → fly-to Clicking a Spacekit label (planet, probe, etc.) flies the camera directly to that object and logs it in navigation history.
Lifecycle date click In an object's infobox, clicking a lifecycle phase date (launch, flyby, landing…) jumps the simulation clock to that date and optionally re-flies the camera to the object.
Launch site → vessel list Clicking a launch-site icon opens an infobox listing every spacecraft that departed from that site, each with its launch date and destination.
Search "3d model" Typing 3d model in the search bar filters to objects that have an interactive 3D spacecraft model available. Click the result to open the model viewer.
Nav history ◀ ▶ Every camera fly-to (nav buttons, label clicks, search results, tour stops) is recorded in a navigation history. Use ◀ / ▶ in the bottom bar to move back and forward through your exploration path.
Tour button Runs an automatic tour of key locations (Earth, Moon, Mars, solar system, far probes, messaging stars, Milky Way centre) with a short pause at each stop.
Capture / Screenshot In the bottom nav bar. Saves a viewport-resolution PNG, or enter a custom pixel size for print-quality export.
Motion overlay — Trail / Vec The →⃗ panel in the top-left shows velocity vectors and proper-motion trails for all physical objects at any zoom level. Trail length is adjustable via the slider (0.1 hours to 10,000 years), making it useful from spacecraft orbital helices all the way to stellar-motion streaks and exoplanet proper-motion arcs. Covers solar system bodies, stars, far probes, METI messages, exoplanet systems, and heliocentric debris (hcocat). Reference frame selector: solar-centred or galactic centre.
Galactic frame toggle In the Motion overlay panel. Switches trails and velocity vectors from the default heliocentric (solar-centred) frame to a galactic-centre frame, showing stellar and exosystem motions relative to Sgr A*.
Footprint color picker In the Parameters panel. Changes the color of all human-artifact objects (satellites, probes, debris, launch sites, landings) simultaneously. Useful for contrast on different background configurations.
Zoom distance slider Vertical red log-scale slider on the right edge of the screen. Drag up to zoom in (spacecraft close-up ~1 km), drag down to zoom out (Local Universe ~100 Mly). The distance label below the slider updates every frame. Works independently of the mouse scroll wheel.
Local Universe nav The Local Universe nav button zooms out to ~300 million LY, revealing the 869 nearest galaxies (Karachentsev+2013 Local Volume catalog) as a coloured point cloud: amber = elliptical, cyan = irregular, blue-white = spiral. Click a galaxy to see its name, distance, morphology, and a DSS optical image, with a link to its NED page.
Scale reference rings Auto-fading concentric distance rings centred on the Sun, visible at the appropriate zoom level: 1 AU, 5 AU, 50 AU, 1 LY, 10 LY, 100 LY, 300 LY, 1 kLY, 10 kLY, and 26 kLY (galactic centre / Sgr A*).
Exoplanet system viewer 4,555 confirmed exoplanet systems from the NASA Exoplanet Archive. Click any system point (or find one via Search) to fly directly into it. The view shows orbit rings sized to actual semi-major axes, procedurally textured planet spheres (rocky, ocean, sub-Neptune, or gas-giant appearance derived from radius/mass), and per-planet velocity arrows. While inside a system, tiny white speed particles stream opposite to the star's proper-motion velocity, giving a warp-speed impression of stellar motion. The cloud point for the active system fades out smoothly as you approach. The star's proper-motion trail and velocity vector are shown when the Motion overlay is active.
🎲 Random exosystem button Appears in the toolbar after the exoplanet dataset finishes loading. Picks a random confirmed exoplanet system and flies the camera directly to it. Useful for exploration and serendipitous discovery.
⌂ Home button Returns the camera to the default solar system view, regardless of current zoom level or active exosystem.
Search (⌘F / Ctrl+F) Full-text search across all named objects in the scene: planets, probes, satellites, METI messages, exoplanet systems (searchable by system name, individual planet name, spectral type, or keyword "exoplanet"), galaxies, and navigation stops. Results are always available regardless of current zoom level. Checking a result opens its infobox; the "Fly to" button navigates the camera to that object.
Team

Credits

NameRole
Adrien Normier Project lead, concept, architecture, all editorial choices and scientific oversight. Driver of all development iterations.
Jonathan Justman Contributed to initial development phase.
Victor Nakache Early development contributions.
GPT-4 (OpenAI) & Claude (Anthropic) Most of the codebase was written by large-language-model assistants, directed and reviewed at every step by A. Normier.

ISSI Forum Day III participants who contributed to the registry architecture: DB, AB, NM, ER, YE, VD, AN, DV.

System Architecture

Code Structure

The codebase was fully refactored in March 2025 into a clean module hierarchy:

src/js/
  constants.js          — physical constants (LY_TO_AU, PC_TO_AU, KM_TO_AU,
                            obliquity, proper-motion conversion)
  coords.js             — 8-section coordinate toolkit:
                            equatorial ↔ ecliptic ↔ galactic ↔ supergalactic,
                            horizontal (az/el) → equatorial, body-surface → ecliptic,
                            LST calculation (Smart 1977; Seidelmann 2007; Liu 2011)
  utils.js              — isMobile, isDesktop, toggleFullscreen, UI helpers

  main.js               — entry point (~200 lines); owns onTick loop
  modules/
    sim.js              — creates and exports: viz, THREE, scene, renderer, camera
    objects.js          — Keplerian object init, update, unload (satellites, voyagers,
                            messages, stars)
    milkyway.js         — Milky Way composite: top-down image plane (Layer 2) +
                            ESO panoramic sphere (Layer 3); point cloud removed
    planets.js          — initPlanets(); exports earthV, marsV, moonV, etc.
                            IAU-correct pole orientations, prime meridian, 30% dark-side fill
    spacecraft.js       — loadSpacecrafts() / unloadSpacecrafts() (DSN live data)
                            robot voice (Web Speech API), sonar pings (Web Audio API)
    exoplanets.js       — point cloud, proper-motion update, system fly-to,
                            orbit ring rendering, star glow; camera tracks stellar motion
    hcocat.js           — ~427 heliocentric GCAT objects; active/inactive via lifecycle
                            registry; pulsating red / steady dim red
    landings.js         — GCAT landercat: planetary landing & impact sites on
                            Moon, Mars, Venus, Mercury, Titan, Jupiter (IAU surface coords)
    launchsites.js      — GCAT launch sites with temporal activity windows
    satCloud.js         — CelesTrak live GP elements (stations/active/Starlink)
    planetOrbiters.js   — Active orbiters around Mars, Jupiter, Moon, Venus, Mercury
                            (Keplerian elements, visual-grade accuracy)
    cataclysmicEvents.js — Historical collisions, ASAT tests, explosions (flash + dot)
    lifecycleRegistry.js — Cross-registry name normalisation; links heliocentric flight
                            → landing phases so selection rings follow objects across registries
    scaleMarkers.js     — Auto-fading distance reference rings (to 26 kLY / Sgr A*)
    galaxies.js         — Local Volume galaxy cloud (Karachentsev+2013; 869 galaxies)
                            coloured by morphology; DSS thumbnail + NED link on click
    orientation.js      — Phone gyroscope AR mode
    logscale.js         — Optional logarithmic position remap
  motionDisplay.js      — Global MOTION state (trail/vector/frame/trailDays)
                            with subscriber pattern; read by objects.js + exoplanets.js
  ui/
    nav.js              — 7 nav buttons + DSN Live toggle + Exoplanets toggle
    controls.js         — speed/year sliders, play/pause, syncSpeedDisplay
    infobox.js          — up to 4 simultaneous panels; lifecycle section; slot tracking
    raycaster.js        — click-to-select; handles both individual objects and
                            multi-point clouds; selection ring sprite; hover tooltips
    ruler.js            — multi-measurement ruler (up to 5); object-tracking endpoints;
                            live distance update each frame
    search.js           — Cmd/Ctrl+F search; scene-indexed at open; yellow highlight rings
    screenshot.js       — viewport / custom-size screenshot
    datasetsOverlay.js  — dataset toggle overlay (all GCAT layers)
  data/
    voyagers.js         — interstellar probes (JPL Horizons J2000.0 equatorial)
    messages.js         — METI / intentional transmissions
    famousStars.js      — named stars
    stars100LY*.js      — GAIA DR3 stars within 100 LY (split by spectral temp)
    spatial-objects.js  — ∼1000 Earth-orbit satellites (Keplerian elements)
    planetOrbiters.js   — hard-coded orbital elements for active planet orbiters
  service/
    fetchExoplanets.js  — NASA Exoplanet Archive TAP via /api/exoplanets proxy
    fetchCelesTrak.js   — CelesTrak GP elements proxy
    fetchGCAT.js        — GCAT hcocat / landercat / launchsites fetch
    scrapDSN-2.js       — NASA DSN XML feed; az/el → equatorial → ecliptic
    simCalc.js          — distToCam()

api/                    — Vercel serverless functions
  exoplanets.js         — CORS proxy for NASA Exoplanet Archive TAP (1h cache)
  celestrak.js          — CORS proxy for CelesTrak GP elements
  gcat.js               — CORS proxy / cache for GCAT registry files
Coordinate System

Coordinate Framework

Scene Frame

The native scene coordinate system is J2000.0 ecliptic heliocentric (Sun at origin, XY = Earth's orbital plane, X toward the J2000.0 vernal equinox, Z toward the ecliptic north pole). This is the native frame of spacekit.js.

Obliquity Correction

All equatorial (RA/Dec) datasets are rotated to the ecliptic frame via the J2000.0 obliquity ε = 23.43929111° (IAU value stored in constants.js):

x_ecl =  x_eq
y_ecl =  y_eq · cos ε + z_eq · sin ε
z_ecl = −y_eq · sin ε + z_eq · cos ε

Galactic Coordinates

The Milky Way orientation uses the IAU 1985 galactic coordinate system, realised using the most precise modern values (Liu, Zhu & Zhang 2011, A&A 526, A16):

DSN Pipeline

Real-time Deep Space Network signals are placed via: az/el (topocentric horizontal) → RA/Dec (equatorial) → λ/β (ecliptic) → XYZ. LST is computed from UTC using the standard GMST formula (Seidelmann 2007). Station WGS-84 geodetic coordinates: Goldstone (35.425°N, 116.889°W), Madrid (40.427°N, 4.249°W), Canberra (35.402°S, 148.981°E).

Data Sources & Licences

Datasets

Dataset Source Licence Status
Near-Earth satellites (SATCAT / Keplerian elements) Jonathan McDowell — GCAT CC-BY 4.0 Implemented (spatial-objects.js)
Heliocentric objects (hcocat) GCAT hcocat — McDowell CC-BY 4.0 Implemented (hcocat.js — ~427 spacecraft and debris in heliocentric orbit)
Deep Space catalog McDowell deepcat CC-BY 4.0 Reference; not yet rendered
NASA DSN real-time feed NASA / eyes.nasa.gov US Gov public domain Implemented (DSN Live button)
GAIA DR3 — stars within 100 LY ESA Gaia Data Release 3 CC-BY 4.0 Implemented (stars100LY*.js)
NASA Exoplanet Archive (TAP) — 4,555 confirmed systems NASA NExScI / IPAC US Gov public domain / CC0 Implemented via Vercel CORS proxy; system fly-to, orbit rings, procedural textures, speed particles
Far probes — Voyagers, Pioneers, New Horizons JPL Horizons ephemeris (A. Normier, manually extracted) US Gov public domain Implemented (voyagers.js)
METI — intentional transmissions to stars A. Normier (own database, from published literature) CC-BY 4.0 Implemented (messages.js)
Named stars A. Normier / public astronomical catalogues CC-BY 4.0 Implemented (famousStars.js)
Milky Way top-down image NASA/JPL-Caltech (Wikipedia) Public domain (NASA) Implemented (Layer 2)
Milky Way panorama (ESO) ESO S. Brunier CC-BY 4.0 Implemented (Layer 3 sphere)
Planetary landings & impacts (landercat) GCAT landercat — McDowell CC-BY 4.0 Implemented (landings.js — Moon, Mars, Venus, Mercury, Titan, Jupiter)
Launch sites (lscat) GCAT lscat — McDowell CC-BY 4.0 Implemented (launchsites.js — activity windows from TStart/TStop)
Live satellites — stations, active, Starlink CelesTrak GP elements Open Data (Space-Track.org) Implemented (satCloud.js)
Planet orbiters (Mars, Jupiter, Moon, Venus, Mercury) NASA/ESA/ISRO/KARI mission pages (A. Normier, manually extracted) US Gov / agency public domain Implemented (planetOrbiters.js — Keplerian elements, visual-grade)
Cataclysmic events (collisions, ASAT, explosions) A. Normier from public records / GCAT fragmentation catalog CC-BY 4.0 Implemented (cataclysmicEvents.js)
Lunar Registry Paolo Guardabasso CC-BY (agreed) Planned
Radio leakage model Saide, Garrett & Heeralall-Issur 2022 Academic; integration planned Planned
COSPAR biological classification COSPAR PPP Public guidelines Planned
ESA reentry history ESA ESOC Public Planned
Launch events (lcat) McDowell GCAT lcat CC-BY 4.0 Planned
Academic Sources

Scientific References

Coordinate Systems & Stellar Geometry

Galactic Structure

EM Footprint / Radio Leakage

Exoplanets

Registry Architecture

The Cosmic Footprint Registry

The ISSI Forum on Cosmic Footprint (2023) concluded that establishing a shared registry of anthropogenic footprint in space is critical and urgent. No informed governance discussion can happen without a common ground truth accessible to non-experts.

Five-Step Process

  1. Review — Inventory of impact types (physical, biological, informational)
  2. Databases — Fetch existing datasets (GCAT, CelesTrak, DSN, GAIA…) and assemble missing ones (EM leakage, METI, COSPAR biological classification…)
  3. Homogenise & merge — Common coordinate system, schema normalisation, deduplication
  4. Research — Model past/present/future impacts; compare with natural occurrence; quantify uncertainties
  5. Fill data holes — Publish enhanced registry; expose public API; yearly physical backup

Impact Categories

Preprocessing Strategy

Static datasets are pre-baked to ecliptic XYZ coordinates at build time to eliminate per-frame coordinate transforms in the browser. Live feeds (DSN, Exoplanet Archive) are proxied through Vercel edge functions with response caching. Yearly snapshots of the full dataset are distributed to sub-database curators as physical archives.

Frameworks & Licences

Software Dependencies

LibraryVersion / SourceLicence
spacekit.js github.com/typpo/spacekit (Ian Webster) MIT
Three.js threejs.org (bundled via spacekit) MIT
Font Awesome 5 CDN (icons) Font Awesome Free — CC-BY 4.0 (icons), SIL OFL (fonts), MIT (code)
Axios CDN (HTTP client for DSN feed) MIT
Roboto / Google Fonts fonts.googleapis.com Apache 2.0
Vercel Hosting & serverless functions Commercial (Hobby plan)
Contact & Links

Links


Individual sub-datasets retain the licences listed in the table above.
This document was assembled by A. Normier from ISSI Forum Day III working documents (DB, AB, NM, ER, YE, VD, AN, DV).

Licence

SolarSystemRegistry Public License (SSR-GPL) — Version 2.0

1. Purpose

SolarSystemRegistry.org (the “System”) is a public-interest visualisation and synthesis tool. It integrates author-developed components; contributions developed within the Cosmic Footprint Society (CFS); and external datasets and research sources. This license governs use of the System as made publicly available. Ownership of the core System remains with Adrien Normier. This license does not transfer intellectual property rights.

Tier 1 — Public-Interest Use (Automatic)

You may use the System freely, without prior request, for:

Conditions. You must:

Tier 1 applies only to use of the System as publicly presented.

Tier 2 — All Other Uses (Written Authorization Required)

Any use outside Tier 1 requires prior written authorization. This includes, for example:

Authorization is valid only if granted in writing. Silence does not constitute approval.

Intellectual Property Layers

The System may include components owned by the author, CFS, or third-party data providers. Tier 2 use may require separate clearance of these layers. No rights over third-party data are granted unless explicitly stated. Users are responsible for ensuring compliance with applicable intellectual property rights.

Public-Interest Continuity

No authorization may restrict:

Attribution

Required form: SolarSystemRegistry.org — Adrien Normier
Where applicable: In collaboration with the Cosmic Footprint Society

Safeguard and Right of Refusal

Adrien Normier may refuse, limit, suspend, or terminate authorization where the intended or actual use misrepresents or distorts the System; undermines scientific or analytical integrity; associates the System with advocacy, promotion, or normative campaigning; contributes to misinformation or disinformation; causes serious reputational or institutional harm; or creates a material conflict of interest or risk of institutional capture. Decisions shall be based exclusively on the projected or actual use and not on the identity, affiliation, status, or viewpoint of the requesting party. This safeguard applies independently of Tier classification.

No Warranty and Limitation of Liability

The product is provided “as is” and “as available”, without any express or implied warranty, including but not limited to warranties of accuracy, completeness, reliability, fitness for a particular purpose, or non-infringement. The author makes no representation that the materials are error-free, complete, or suitable for any specific use. Users remain solely responsible for any interpretation, decision, action, or reliance based on the materials.

To the maximum extent permitted by applicable law, the author shall not be liable for any direct, indirect, incidental, consequential, reputational, economic, or other damages arising from use of, reliance on, or inability to use the materials, or from errors, omissions, or inaccuracies. Nothing in this section excludes liability where exclusion is prohibited under applicable law.

Governing Law

This license is governed by French law.


© Adrien Normier / SolarSystemRegistry.org — SSR-GPL v2.0. Attribution required: SolarSystemRegistry.org — Adrien Normier.