SpaceEthics

Space Ethics Visualisation — System & Credits

← Back to Visualisation
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.
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.

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.
    spacecraft.js       — loadSpacecrafts() / unloadSpacecrafts() (DSN live data)
    exoplanets.js       — point cloud, proper-motion update, system fly-to,
                            orbit ring rendering, star glow
  ui/
    nav.js              — 7 nav buttons + DSN Live toggle + Exoplanets toggle
    controls.js         — speed/year sliders, play/pause, syncSpeedDisplay
    infobox.js          — showObject(), hideInfoBox()
    raycaster.js        — click-to-select; handles both individual objects and
                            multi-point clouds; selection ring sprite
    screenshot.js       — viewport / custom-size screenshot
  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)
  service/
    fetchExoplanets.js  — NASA Exoplanet Archive TAP via /api/exoplanets proxy
    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)
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 — 775 objects)
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) NASA NExScI / IPAC US Gov public domain / CC0 Implemented via Vercel CORS proxy
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)
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


All original code and editorial content: © A. Normier / spaceethics.org — CC-BY 4.0.
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).