Moderne astrometrische Kataloge sind öffentlich zugänglich, in ihrer Rohform jedoch abstrakt: Der Gaia-DR3-Katalog umfasst rund 1,8 Milliarden Punktquellen, beschrieben durch Winkelpositionen, Parallaxen und Helligkeiten [1]. Ziel von SpaceMap ist es, diese Tabellen in einen räumlich erfahrbaren Kontext zu übersetzen: Der Nutzer bewegt sich frei durch die dreidimensionale Sternverteilung — von der unmittelbaren Sonnenumgebung (Proxima Centauri, 1,30 pc) über Sternentstehungsgebiete bis zum galaktischen Zentrum (Sgr A*, 8 178 pc [9]) und, zur Einordnung der Größenskalen, bis zur Andromedagalaxie (≈ 765 kpc [6]).
Leitprinzip des Projekts ist Wahrheitstreue: Jeder dargestellte Sternpunkt entspricht einem realen Katalogeintrag. Wo aus didaktischen Gründen symbolische Elemente ergänzt werden (Marker kompakter Objekte, prozedurale Nebeldarstellungen), wird dies in der Anwendung explizit ausgewiesen (Abschnitt 10).
Primärquelle ist Gaia DR3 [1]. Verwendet werden die astrometrischen Größen Rektaszension α, Deklination δ und Parallaxe ϖ sowie photometrisch die G-Band-Magnitude und der Farbindex BP−RP. Die Entfernung folgt in erster Näherung aus der Parallaxeninversion:
Der Farbindex dient sowohl der Farbgebung der Punktdarstellung als auch einer empirischen Abschätzung der Effektivtemperatur Teff über eine stückweise definierte Farb–Temperatur-Relation.
Gaia ist für schwache Quellen optimiert; sehr helle Sterne (G ≲ 3 mag) sättigen die CCD-Detektoren und fehlen im Katalog weitgehend. Paradoxerweise enthält die Datenbank damit zwar Millionen anonymer Feldsterne, nicht aber Sirius, Wega oder α Centauri. SpaceMap ergänzt deshalb 138 helle bzw. kulturell bedeutsame Sterne aus Literaturwerten (IAU-Nomenklatur, Hipparcos-/VLBI-Parallaxen); 6 weitere benannte Objekte konnten direkt Gaia-Quellen zugeordnet werden (Positions- und Helligkeitsabgleich mit Toleranzfenster). Insgesamt tragen 145 Objekte Eigennamen.
Für kompakte Objekte und Deep-Sky-Objekte werden kuratierte Kleinkataloge verwendet: 10 stellare bzw. supermassereiche Schwarze Löcher (Positionen nach SIMBAD; Massen und Akkretionszustände nach Fachliteratur, u. a. [8, 9]), 6 Pulsare (Perioden und Distanzen nach ATNF-Katalog [11], Vela-Distanz per VLBI-Parallaxe [7]), 15 Deep-Sky-Objekte (Distanzquellen u. a. [3–6]) sowie 17 bestätigte Exoplanetensysteme nach dem NASA Exoplanet Archive [10].
Alle Objekte werden in einem kartesischen, heliozentrischen Koordinatensystem im International Celestial Reference System (ICRS, Epoche J2000) dargestellt; die Einheit ist das Parsec (1 pc = 3,0857 · 10¹³ km). Die Transformation lautet
mit der z-Achse in Richtung des Himmelsnordpols. Die galaktische Ebene liegt in diesem System geneigt, entsprechend ihrer tatsächlichen Orientierung am Himmel; für Objekte, die in galaktischen Koordinaten vorliegen, wird die Standard-Rotationsmatrix galaktisch → ICRS (Hipparcos-Konvention) angewandt. Validierung: Der Transformationsfehler für Sgr A* gegenüber den Katalogkoordinaten beträgt < 0,05 %.
Das Grundproblem ist quantitativ: Über 3,6 · 10⁸ importierte Objekte überschreiten Arbeitsspeicher und Bandbreite eines Browsers um Größenordnungen. SpaceMap begegnet dem mit einer mehrstufigen Pipeline (Abb. 1), deren Leitidee lautet: jede Stufe liefert der nächsten ausschließlich die aktuell sichtbare bzw. wahrnehmbare Teilmenge.
Ein Sterneintrag benötigt in JSON-Repräsentation ca. 120 Byte, als unkomprimierte Gleitkommazahlen (x, y, z, Magnitude, Farbe) 20 Byte. Das Übertragungsformat von SpaceMap reduziert dies auf 8 Byte pro Stern (Abb. 2): Positionen werden relativ zum Ursprung des jeweiligen Raumwürfels mit 16 Bit pro Achse quantisiert; Magnitude und Farbindex werden auf je 8 Bit abgebildet.
| Repräsentation | Bytes/Stern | Seitengröße | relativ |
|---|---|---|---|
| JSON (Objektliste) | ≈ 120 | ≈ 1,4 MB | 100 % |
| Float32-Tupel | 20 | 240 KB | 17 % |
| Packed v2 (SpaceMap) | 8 | 96 KB | ≈ 7 % |
Die Würfel-Blobs werden serverseitig vollständig vorberechnet und magnitudensortiert
vorgehalten; eine Anfrage löst somit keinerlei Datenbank-Sortierung aus, sondern einen
reinen Byte-Slice. HTTP-ETags ermöglichen 304 Not Modified-Antworten.
Der Raum ist in achsenparallele Würfel zerlegt, organisiert in zwei Detailstufen (Tabelle 2). Eine globale Ebene der hellsten ~10⁶ Sterne ist permanent geladen und sichert die Fernwirkung der Galaxis; die Würfelebenen liefern Detail in Kameranähe.
| Ebene | Würfelkante | Magnitudengrenze | Laderadius |
|---|---|---|---|
| Global (persistent) | — | hellste ~10⁶ | — |
| Tier 1 | 1000 pc | G ≤ 14 | 5 |
| Tier 2 | 250 pc | G ≤ 20 | 2 |
Es werden maximal acht Anfragen parallel gestellt; die Priorisierung erfolgt global über alle Ebenen nach dem Kriterium (i) Würfel enthält die Kamera, (ii) Sichtkegel, (iii) Distanz. Ohne diese globale Planung verhungerte die feine Ebene systematisch, da die grobe Ebene mit ihren zahlreichen Würfeln sämtliche Ladeplätze belegte (beobachtet: 130 wartende Tier-2-Würfel bei 0 aktiven Ladevorgängen). Würfel, die ihre Sternkappe erreichen, werden nach dem Octree-Prinzip adaptiv in acht Kinder verfeinert (maximal zwei Ebenen), wodurch die galaktische Ebene höhere effektive Auflösung erhält als dünn besetzte Regionen. Alle Sternpakete werden über einen pro Draw-Call gesetzten Fade-Uniform weich ein- und ausgeblendet.
Der dichteste bislang beobachtete 250-pc-Würfel enthält 1 987 995 Katalogsterne. Die erste Seite (12 000 hellste) genügt für die Außenansicht; beim Eintritt der Kamera in den Würfel wird über magnitudensortierte Offsets nachgeladen:
GET /api/stars/binary?…&maxStars=12000&offset=24000
→ Records [24000, 36000) des sortierten Blobs
→ X-Chunk-Total: 1987995 · X-Chunk-Offset: 24000
Die Client-Politik minimiert die Serverlast: Nachgeladen wird ausschließlich der Kamera-Würfel; es existiert genau eine Tiefen-Anfrage zu jedem Zeitpunkt, gedrosselt auf 250 ms Abstand; das Verlassen des Würfels bricht die Sequenz ab (der Fortschritt bleibt erhalten und wird bei Rückkehr fortgesetzt); die Obergrenze liegt bei 96 000 Sternen pro Würfel — jenseits davon ist der visuelle Zugewinn in einer 250-pc-Zelle vernachlässigbar, während GPU-Speicher und Übertragungsvolumen linear weiterwachsen würden. Nachgeladene Pakete werden nur gerendert, solange sich die Kamera im oder unmittelbar neben dem Würfel befindet; aus größerer Distanz unterschreiten die betroffenen Quellen die Pixelgröße.
Sämtliche Sternpakete werden in einer IndexedDB abgelegt (Gültigkeit 24 h wegen des
fortlaufenden Imports; Obergrenze ≈ 150 MB mit Verdrängung der ältesten Einträge).
Bei einem Wiederbesuch reduzierte sich die Zahl der Netz-Anfragen im Test von mehreren
Dutzend auf vier; ein zuvor bei jedem Seitenaufruf wirksamer veralteter
preload-Hinweis (5,7 MB pro Aufruf, Antwort ungenutzt) wurde im Zuge dessen
identifiziert und entfernt.
Unterschreitet die Bildrate 30 fps, wird die interne Renderauflösung schrittweise auf minimal 60 % reduziert (mit kompensierter Punktgröße) und bei > 55 fps wieder angehoben — ein Regelkreis mit Hysterese, der insbesondere auf Mobilgeräten Bildratenstabilität vor Auflösung priorisiert.
Punkt-Sprites mit fester Mindestgröße und Mindestdeckkraft aggregieren aus großer Entfernung zu einer gesättigten Fläche („Blob-Problem"). Ab ≈ 1 500 pc Kameradistanz werden Punktgröße gegen 1 px und die Deckkraftuntergrenze von 0,28 auf 0,05 geführt; die Galaxis erscheint aus der Ferne als feiner Schleier, konsistent mit dem fotografischen Eindruck.
Das Referenzgitter zeigte anfangs Zitterartefakte: Bei einer Ebenenausdehnung von ±10⁶ pc verliert die perspektivische Interpolation von float32-Weltkoordinaten in Kameranähe signifikante Mantissenbits (ULP(10⁶) ≈ 0,06 pc gegenüber Zellgrößen von 1–10 pc). Die Lösung verlagert die Rechnung in ein kamerarelatives Bezugssystem; die Linienphase je Dezimalstufe wird in JavaScript mit 64-Bit-Genauigkeit exakt bestimmt und als Uniform übergeben. Ein Regressionstest (Subpixel-Kamerabewegung, Pixelvergleich) zeigt 0 von 68 679 veränderten Gitterpixeln nach der Korrektur.
Sterne werden als GPU-Punkt-Sprites mit eigenem Shader gerendert: gaußförmiger Kern mit schwachem Halo, Beugungskreuze an den hellsten Quellen (fotografische Anmutung), Farbsättigungsanhebung in Richtung der physikalischen Sternfarben sowie die in Abschnitt 8.3 beschriebene Distanzdämpfung.
Auf der Karte werden Schwarze Löcher als bewusst kleine, distanzstabile Symbole gezeigt (Ereignishorizont-Silhouette, Photonenring, gelinste Scheibe mit Doppler-Asymmetrie); reale Schwarzschild-Radien wären nicht darstellbar (Sgr A*: rs ≈ 0,08 AE). Da Schwarze Löcher am realen Nachthimmel unsichtbar sind, blendet das Symbol mit wachsender Distanz bis auf einen schwachen Restfleck aus („approach reveal"). Die Detailansicht integriert Photonenbahnen in Schwarzschild-Näherung durch schrittweises Raymarching mit der Beschleunigung
(h: spezifischer Drehimpuls des Photons; Horizontradius auf 1 normiert; vgl. [12, 13]). Als Hintergrund dient eine Cube-Map-Aufnahme des realen Gaia-Sternfeldes an der jeweiligen Objektposition, sodass der Linseneffekt tatsächliche Sterne verzerrt. Der dargestellte Akkretionszustand folgt der Literatur: Gaia BH1/BH2 ohne Scheibe [8], Röntgen-Novae im Ruhezustand mit schwacher kühler Scheibe, Cygnus X-1 und GRS 1915+105 aktiv.
Der visuelle Sternradius der Detailansicht folgt aus Leuchtkraft und Effektivtemperatur:
Die Oberfläche wird durch domänenverzerrtes Simplex-Rauschen animiert (Granulation, Supergranulation, Aktivitätsflecken). Für 17 Systeme werden bestätigte Exoplaneten mit Halbachsen und Radien nach [10] gezeigt (kreisförmig komprimierte Bahnen); unbekannte Systeme erhalten explizit als spekulativ gekennzeichnete, ausgegraute Andeutungen. Pulsare werden mit rotierenden, gegen die Rotationsachse geneigten Emissionskegeln dargestellt; die Winkelgeschwindigkeit ist aus der Katalogperiode abgeleitet.
| Element | Status | Anmerkung |
|---|---|---|
| Sternpunkte der Karte | Messdaten | Position, Helligkeit, Farbe je Quelle aus Gaia DR3 [1] |
| Benannte Sterne (145) | Messdaten | Gaia bzw. Literaturastrometrie (Sättigungsfälle, Abschn. 2.2) |
| Schwarze Löcher / Pulsare | Position: Messdaten; Marker: Symbol | Zustand (aktiv/ruhig/schlafend) literaturkonform |
| Deep-Sky-Objekte (15) | Position/Ausdehnung: Messdaten; Optik: prozedural | Distanzquelle je Objekt im Info-Panel [3–6] |
| Exoplaneten (17 Systeme) | bestätigte Objekte, vereinfachte Bahnen | [10]; unbestätigte Systeme als solche markiert |
| Nahansichten | physikalisch motivierte Modelle | Größenrelationen aus Gl. (4); Optik künstlerisch |
(i) Entfernungen aus Parallaxeninversion (Gl. 1) sind für ϖ/σϖ ≲ 5 systematisch verzerrt; eine bayessche Distanzschätzung ist nicht implementiert. (ii) Interstellare Extinktion wird nicht korrigiert; ferne Sterne erscheinen daher — physikalisch korrekt aus Beobachtersicht, aber unkorrigiert — gerötet und abgeschwächt. (iii) Der Datenimport ist zum Dokumentationszeitpunkt unvollständig; die räumliche Abdeckung wächst fortlaufend. (iv) Deep-Sky-Darstellungen beruhen nicht auf Einzelsterndaten; eine Erweiterung um echte Haufen-Mitgliedskataloge (z. B. [4]) ist vorgesehen. Weitere geplante Arbeiten: Eigenbewegungs-Zeitraffer aus Gaia-Proper-Motions sowie Begleitstern-Modelle für Röntgendoppelsterne in der Detailansicht.
Datennutzung: Diese Anwendung verwendet Daten der ESA-Mission Gaia (cosmos.esa.int/web/gaia), verarbeitet durch das Gaia Data Processing and Analysis Consortium (DPAC). Lizenz: CC BY-NC 3.0 IGO © ESA. Projektseite: cwalina.net/project/spacemap · Community: r/spacemap · Impressum · Datenschutz