AstroViewer Version History
INFORMATION
AstroViewer ist ein Tool, welches das Sonnensystem und erdnahe Systeme in 3D darstellt.
Die Darstellung basiert auf den echten Daten, in einigen Fällen wurden aber Kompromisse
für eine anschaulichere Darstellung gemacht (z.B. eine logarithmisch komprimierte Distanzen
zwischen Objekten, darstellbare Sterngrößen und Maßstäbe pro Objektkategorie)
VERSION HISTORY
- Infopanel 2: auf Mobile 25% kleiner via scale(0.75) – skaliert auch SVG-Grafiken
- Infopanel 2: Leader-Linie zeigt jetzt auf die dem Objekt nächste Panel-Ecke statt immer oben-rechts
- Sektion 0: Reihenfolge invertiert – Systemnavigation oben, Zurück-Button unten; Pfeil etwas größer
- Sektion 3: Auge-Symbol mit Wimpern (4 kurze Linien am oberen Bogen) in beiden Rows
- Neuer Toggle-Button "abc" in Sektion 3: blendet alle Name-Labels aus (Sterne, Planeten, Monde, Zwerge, Asteroiden, Zonen) sowie Tooltip und Focus-Label – für textfreie 3D-Renders
- Sektion 3: HZ-Toggle-Button hinzugefügt – blendet Habitable Zone (Ring + Label) ein/aus, Einstellung bleibt beim Systemwechsel erhalten
- Orbit-Toggle-Symbol: äußere Ellipse diagonal und größer
- Neue Sektion 3 im Control Panel: Auge-Symbol + Orbit-Toggle-Button (3 gekurvte Linien). Bei Deaktivierung werden alle Orbitlinien ausgeblendet
- Control Panel umorganisiert: Sektion 0 (nur im System sichtbar) enthält jetzt Übersicht-Button + System-Navigation; Sektion 1 enthält Zoom + Pause/Autofokus; Sektion 2 unverändert
- Alle Buttons auf einheitliche Größe 32×32px normiert
- Carousel Control Panel: vollständig überarbeitet und stabilisiert. Korrekte Breitenberechnung via window.innerWidth; alle Sektionen werden angezeigt wenn Platz vorhanden; Navigation als Sliding Window (Rechts: nächste Sektion + rückwärts auffüllen; Links: vorherige Sektion + vorwärts auffüllen)
- Mobile: Pfeil-Buttons reagieren jetzt korrekt auf Touch (touchend + preventDefault, touch-action:manipulation, -webkit-user-select:none)
- Carousel: Navigation korrigiert – Rechts/Links navigiert jetzt als echtes Sliding Window; die neue Zielsektion wird immer angezeigt plus so viele daneben wie Platz haben (unabhängig von Sektionsbreiten)
- Control-Panel als Carousel redesigned: auf kleinen Bildschirmen werden nur so viele Sektionen angezeigt wie Platz haben, Pfeil-Buttons (‹ ›) links/rechts zeigen an dass weitere Sektionen vorhanden sind
- Touch-Swipe zum Wechseln zwischen Sektionen unterstützt
- Auf großen Bildschirmen werden alle Sektionen gleichzeitig angezeigt wie bisher
- Bugfix: Wolken-Mesh hatte depthTest:false und renderOrder:999 – dadurch wurden Wolken durch andere Objekte hindurch gerendert (Geister-Effekt). Beides entfernt; da die Wolkenschicht etwas größer als der Planet ist (r×1.06) rendert sie korrekt vor dem Planeten ohne den Z-Buffer zu ignorieren
- Infopanel 2 für Sterne: neues Layout mit Titel "Spektral- und Leuchtkraftklasse", Leuchtkraftklasse links, Spektralklasse als Tag auf der Sternkugel, Farbe als Tag rechts mit gestrichelter grüner Verbindungslinie
- Infopanel 1 für Sterne: Leuchtkraftklasse, Spektralklasse und Farbe entfernt (jetzt ausschließlich in Panel 2)
- Sterne zeigen jetzt auch Infopanel 2 mit Oberflächentemperatur in K und einem farbigen Stern-Glow-Swatch in der Spektralfarbe des Sterns
- Oberflächentemperatur aus Infopanel 1 der Sterne entfernt (jetzt ausschließlich in Panel 2)
- Toten Code entfernt: normaliseOrbit() (war triviale Einzeiler-Wrapper), Legacy-Barycentre-Marker-Block (alle Systeme haben jetzt explizite Barycentren), parentStar-Fallback in planetParent()
- subcat-Werte vereinheitlicht: alle 25 Kurzformen ('t','g','i','gasgiant','terrestrial') durch exakte CAT-Keys ersetzt ('terrestrial', 'gasgiant', 'icegiant'); Alias-Logik aus Engine entfernt
- Internes Feld parentStar auf parentKey umbenannt (Zonenobjekte, HZ-Zonen, Planet-Update-Loop) – konsistent mit orbit.parent
- parentStar auf orbit.parent vereinheitlicht: alle 29 Planeten-Einträge nutzen jetzt orbit:{parent:'key'} statt parentStar:'key'
- Neue Hilfsfunktion planetParent(pd) liest orbit.parent oder legacy parentStar – vollständige Rückwärtskompatibilität
- Info-Panel: Sternname fällt bei Einzelsternsystemen korrekt auf den ersten echten Stern zurück (nicht mehr stars[0] der ein Barizentrum sein könnte)
- Datenmigration: alle 9 Mehrsternsysteme auf neue orbit{}-Hierarchie umgestellt (Alpha Centauri, Luhman 16, Sirius, Luyten 726-8, EZ Aquarii, 61 Cygni, Prokyon, Gliese 725, Groombridge 34)
- EZ Aquarii: erstmals physikalisch korrekt mit zwei expliziten Barycentren (ez-aquarii-bary-abc, ez-aquarii-bary-ac) – A+C umkreisen ihren gemeinsamen Schwerpunkt, dieser umkreist mit B den Gesamtschwerpunkt
- Epsilon Indi: Ba und Bb sind jetzt echte Sterne (T1/T6 Braune Zwerge) mit korrekter hierarchischer Darstellung – Schwerpunkt Ba/Bb (epsilon-indi-bary-babb) kreist um A, Ba und Bb kreisen umeinander
- Alle Barycentren haben konsistente Schlüssel: system-bary-komponenten (z.B. epsilon-indi-bary-babb)
- Engine-Redesign: neue orbit{}-Eigenschaft für Sterne mit parent, r, period, phase, inc, lan, ecc – ersetzt bary{}/baryElliptic{}
- Vollständige Parent-Hierarchie: jedes Sternobjekt kennt sein Elternobjekt und wird relativ dazu positioniert
- Neuer Objekttyp type:'barycenter' in stars[]: Schwerpunkte sind echte Objekte mit eigener Umlaufbahn und eigenem Schlüssel (z.B. epsilon-indi-bary-babb)
- Bugfix: jeder Stern hat jetzt seinen eigenen Winkel (_angle) statt eines systemweit geteilten _baryAngle – unterschiedliche Perioden im selben System werden korrekt berechnet
- Topologische Sortierung stellt sicher, dass Elternobjekte immer vor Kindern positioniert werden
- Vollständige Rückwärtskompatibilität: bestehende bary{}/baryElliptic{}-Daten werden automatisch auf orbit{} umgewandelt
- Epsilon Indi Ba/Bb: Implementierung vereinfacht und korrigiert – Ba und Bb werden jetzt wie Pluto/Charon als Dwarfs mit bary-Mechanik modelliert (kein neues Engine-Feature nötig)
- bary2-Feature wieder entfernt (war unnötig und verursachte liegenbleibende Orbitlinien beim Systemwechsel)
- Ba und Bb zeigen jetzt korrekt ihren gemeinsamen Schwerpunkt, der als Ganzes um Epsilon Indi A kreist
- Epsilon Indi Ba/Bb: hierarchischer Doppelkreisel korrekt implementiert – Ba und Bb umkreisen ihren gemeinsamen Schwerpunkt (2.1 AU, 11 Jahre), der wiederum um Epsilon Indi A kreist (1460 AU, ~460.000 Jahre)
- Neue Engine-Funktion: bary2-Eigenschaft für Sterne ermöglicht hierarchische Mehrkörpersysteme (innere Umlaufbahn zusätzlich zur äußeren); innere Orbitlinie folgt dem äußeren Schwerpunkt
- 4 neue Sternensysteme hinzugefügt: DX Cancri (#21), Epsilon Indi (#22+23), Tau Ceti (#24) und GJ 1061 (#25)
- Epsilon Indi: K-Stern mit direkt abgebildetem Super-Jupiter (JWST 2024, kältester bekannter Exoplanet) und Braunem Zwerg-Paar (Ba/Bb) in 1460 AU Abstand
- Tau Ceti: Sonnenähnlicher G-Stern mit 4 Super-Erden (darunter 2 in/nahe der habitablen Zone) sowie massiver Trümmerscheibe (10–90 AU)
- GJ 1061: Ruhiger Roter Zwerg mit 3 felsigen Super-Erden, 2 davon in der habitablen Zone
- Wolken rotieren mit Planet (cloudMesh per applyRotation); Beleuchtung der Wolken (lightDir Uniform, Nachtseite dunkel); vWorldNormal für korrekte Lichtberechnung
- Gasriesen-Wolken: drift=t*6 auf alle fbm-Samples; Threshold 0.38–0.60 (mehr Bedeckung)
- Gasriesen: sparse fbm-Flecken statt durchgehender Bänder (threshold 0.52–0.70); terrestrische Wolken: schnellerer Drift (t*8)
- Gasriesen: horizontale Bänder mit Turbulenz statt Wolkenflecken; terrestrische Wolken: einheitliche Driftrichtung (sichtbare Bewegung); Farbe stärker getönt
- Wolken: triplanare Projektion (keine Naht mehr), Bedeckung reduziert (smoothstep 0.42–0.62, opacity 0.35), Atmosphärenfarbe eingemischt
- Wolken: renderOrder:999 + depthTest:false explizit auf Material gesetzt; Schwellwert weiter gesenkt, Opacity erhöht
- Cloud-Shader: vLocalPos statt vWorldPos (zuverlässiger in Child-Mesh-Hierarchie), Opacity 0.70
- Atmosphäre zwei Passes: BackSide-Kugel für Limb-Glow + separate FrontSide-Kugel mit depthTest:false für Wolken sichtbar über Planetoberfläche
- Atmosphären-Shader: side:BackSide statt FrontSide — Innenseite der Kugel rendert um den Planeten herum statt davor; Normalen-Fix für korrekte Rim-Berechnung
- Wolken-Shader: Schwellwert von 0.45 auf 0.32 gesenkt (deckt ~40% der Oberfläche), Kontrast erhöht
- Wolken auf Atmosphärenkugeln: prozedurales fBm-Noise im Fragment-Shader (3 Oktaven, smoothstep); langsame Rotation über time-Uniform; kein CPU-Overhead
- Atmosphärenkugeln: Custom GLSL Shader mit Limb-Glow-Effekt — Zentrum transparent, Rand leuchtend (pow(rim, 2.8) * 0.55)
- Atmosphärenkugel: Radius r+20 → r*1.12 (12% größer als Objekt statt absoluter Offset)
- Bugfix: lel in Asteroiden- und Zwergplaneten-Builder wiederhergestellt; vollständiges Audit — Syntax OK, alle Variablen deklariert
- Bugfix: mHit in buildMoon wiederhergestellt; vollständiges Audit aller Deklarationen — keine weiteren fehlenden Variablen
- Bugfix: let ring = null ebenfalls wiederhergestellt
- Bugfix V3.14: hitMesh-Deklarationen für Planeten, Asteroiden und Zwerge versehentlich entfernt → wiederhergestellt
- 3D-Atmosphärenkugel für Objekte mit echter Atmosphäre (pressure > 1e-10 bar): transparente Kugel +20px Radius, Farbe = dominantes Gas, opacity 0.13; Planeten, Monde, Zwerge, Asteroiden
- Exoplaneten ohne Atmosphäredaten: Titel "Atmosphäre unbekannt", Bogen wie Exosphäre, Druckzeiger zeigt "??? bar"
- Atmosphärendaten für Zwergplaneten: Pluto (1×10⁻⁵ bar, N₂ 99.5%, CH₄ 0.5% – New Horizons 2015); Ceres/Haumea/Makemake/Eris: Exosphäre; Asteroiden Vesta/Pallas/Hygiea: Exosphäre
- Erdmond: atmosphere korrekt eingefügt (Python-Script hatte es fälschlich in CAT-Definition geschrieben); CAT-Korruption bereinigt
- Bugfix: hasComp vor erster Verwendung deklariert (TDZ-Fehler)
- Titel "Exosphäre" statt "Atmosphäre" wenn keine Zusammensetzung erfasst; Atmosphärendaten für alle 21 Monde (Titan, Triton, Io, Europa, Ganymede, Callisto, Rhea, Dione, Titania mit Zusammensetzung; Rest als Exosphäre)
- "bar" Formatierung zurückgesetzt; Pfeilkopf breiter (40px) und flacher (14px); Labels nach allen Bogensegmenten gerendert (kein Verdecken mehr)
- Drucklabel 3px nach oben; "bar" kleiner (9px) neben der Zahl (12.5px)
- Zeiger 4px kürzer; Label tiefer im Schaft; Merkur-Druck "≈ 0 bar" statt unleserlichem Exponentialwert
- Zeiger/Wellenlinien: untere Kante auf Bogenkante ausgerichtet (cy); Zeiger nochmals breiter (34px Kopf, 18px Schaft)
- Druckzeiger und Wellenlinien in der freien Fläche des Halbkreises; Zeiger größer (44px), Label im oberen Schaftdrittel; Wellenlinien mit Quadratic Bezier (kein Bug am rechten Ende)
- Druckanzeige im Atmosphären-Panel: Pfeil nach unten mit Druckwert-Label für feste Planeten; Wellenlinien für Gasriesen (kein Oberflächendruck)
- Labels größer (12.5px); mehr Abstand zwischen Titel "Atmosphäre" und Bogenkante
- Doppelter "Atmosphäre"-Titel entfernt; Labels größer (10.5px); Gase alphabetisch sortiert; überlappende Labels radial versetzt
- Atmosphären-Labels auf dem Segment platziert (mid-ring), Pill-Style (dunkler Hintergrund, weißer Text) wie Sternlabels; Titel "Atmosphäre" über dem Bogen; alle Labels immer sichtbar
- Panel2 auf 320px verbreitert; SVG-Höhe mit Puffer für Labels über dem Bogen; Bogen-Geometrie mit korrekten Sweep-Flags
- Atmosphärendiagramm: Sweep-Flags korrigiert (äußerer Bogen sweep=1, innerer sweep=0) → korrekte ∩-Form
- Atmosphärendiagramm: Geometrie korrigiert (∩-Form, Bogen nach oben), Labels außerhalb des Rings in schwarz, korrekte Segmentverteilung
- Infopanel2: Atmosphären-Halbkreis-Diagramm mit farbigen Segmenten je Komponente; Ringdicke proportional zum Atmosphärendruck (logarithmisch); Labels auf Segmenten
- ATMO_COLORS Farbpalette für alle Komponenten (N₂, O₂, CO₂, Ar, H₂, He, CH₄ etc.)
- Atmosphärendaten für alle 8 Planeten: atmosphere.pressure (bar, NASA) und atmosphere.composition (Gase ≥1%, Quelle: NASA NSSDC)
- Merkur: 5×10⁻¹⁵ bar (quasi keine Atmosphäre); Gasriesen: pressure null (kein fester Boden)
- Konsolidierung: moons:[] bei 4 Exoplaneten ergänzt; Feldanordnung bei Gliese 725 und Groombridge 34 Planeten vereinheitlicht; vollständiger Integritäts-Check bestanden
- Temperaturpanel Exoplaneten: Gleichgewichtstemperatur (Teq, A=0.3) zentral groß, berechnete Min/Max-Werte seitlich kleiner; tempEq für alle 21 Exoplaneten eingetragen
- Kelvin/Celsius-Check: alle Werte korrekt; Lacaille 9352 e korrigiert (falsche Leuchtkraft in Berechnung → Tagseite war +14°C statt +300°C)
- Dysnomia: tempMin/tempMax ergänzt; alle Exoplaneten-Temperaturen auf Basis der Gleichgewichtstemperatur (Teq) aus ESPRESSO/NASA-Papers korrigiert
- Gebundene Planeten: Min = Nachtseite (~−230°C), Max = Tagseite (Teq×1.2)
- Temperaturpanel: gestrichelte Verbindungslinie ergänzt; fehlende tempMin/tempMax für Mond, Deimos, Callisto, Tethys, Ariel, Nereid nachgetragen
- Temperaturpanel (#astro-info2) für alle Nicht-Stern-Objekte: zeigt Min/Max °C links unter dem Objekt
- Temperaturdaten (tempMin/tempMax) für alle 52 Objekte eingetragen – Planeten, Monde, Zwerge, Asteroiden, Exoplaneten
- Oberflächentemperatur (K) für alle 30 Sterne eingetragen und im Infopanel angezeigt
- Mobile Systemübersicht: 1. Tap zeigt Distanzlinien, 2. Tap auf denselben Stern wechselt ins System; Tap auf leere Fläche schließt Linien
- "Gebunden (synchron)" → "gebunden" (konsistent mit Mondanzeige)
- Neue Anzeige "Gebunden (synchron)" für tidally locked Exoplaneten; 15 Planeten entsprechend markiert (Proxima b/d, Barnard d/b/c/e, Wolf 359 c, Lalande b, Ross 128 b, Lacaille e/b/c, Gliese 725 A+B b, Groombridge Ab)
- Rotationsperioden der neuen terrestrischen Exoplaneten auf null (unbekannt) gesetzt – Anzeige zeigt korrekt "–" statt falscher Werte
- Prokyon B: Spektralklasse DQZ (Weißer Zwerg), Infopanel zeigt jetzt "Weißer Zwerg" korrekt an; D-Klasse in lumClass-Logik ergänzt
- Planetenbahnen: inc/lan waren in Grad statt Radians — alle neuen Planeten korrigiert
- Alle neuen Planeten haben rotationPeriod; 61 Cygni und Prokyon Schwerpunktsradien angepasst
- Systeme #16–19 hinzugefügt: 61 Cygni (K5+K7, 659-J-Binär), Prokyon (F5-Subgiant + Weißer Zwerg), Gliese 725/Struve 2398 (2×Roter Zwerg, je 1 Planet), Groombridge 34 (2×Roter Zwerg, 2 Planeten um A)
- Code-Bereinigung: 2 stray </div> Tags entfernt, tote Funktionen (_countSystemTextures, _preloadUrl, _preloadKey) und Felder (baryAngle) entfernt
- CAM_BASE_DIST Konstante eingeführt (war hardcoded 900), halfFovTan aus dem forEach-Loop herausgezogen
- Verbindungslinien zeigen nicht mehr in falsche Richtung – Sterne hinter der Kamera werden sauber ausgeblendet statt NDC-Wraparound zu produzieren
- Verbindungslinien immer gezeichnet, unabhängig von Kameraposition – Linien verschwinden nicht mehr beim Ranzoomen
- Linien verschwinden nicht mehr beim Ranzoomen – Dot-Product statt NDC-Z für Kamerarückseiten-Check
- Hover-Linien werden während Autozoom blockiert
- Verbindungslinien verschwinden nicht mehr beim Ranzoomen
- Linien und Hover während Autozoom deaktiviert
- Label-Abstand perspektivisch korrekt berechnet – Labels nicht mehr im Stern
- Übersicht bereinigt: kaputtes HTML-Tag war seit V2.69 Ursache aller Positions-Probleme; alle unnötigen Matrix-Fixes entfernt; Linien verschwinden nicht mehr beim Zoomen
- Verbindungslinien und Labels auf exakten Sternpositionen – matrixWorldInverse nach render() explizit invertiert, Screenkoordinaten von mesh.getWorldPosition() statt project()
- Label-Offset mit direkter Perspektivformel berechnet statt project() – korrekte Skalierung bei Zoom
- _worldToScreen invertiert matrixWorldInverse vor project() explizit
- Labels, Verbindungslinien und Hover korrekt auf Sternen – camera.matrixWorldInverse wird nach updateMatrixWorld() manuell invertiert (Three.js r128 tut dies nicht automatisch)
- Labels in Systemübersicht korrekt über Sternen – Pixel-Offset wird aus projiziertem Sternradius berechnet statt fixer 3D-Unit-Offset
- Verbindungslinien und Labels korrekt auf Sternen positioniert – Label- und Linienberechnung erfolgt nach Kamera-Update
- Verbindungslinien und Hover-Erkennung ohne vertikales Offset – Kamera-Matrix wird vor Projektion und Raycasting aktualisiert
- Systemübersicht: Hover auf Stern zeigt gestrichelte Verbindungslinien zu Nachbarsystemen (max. 10 Lj) mit Distanzangabe
- Panel-Icons: Mond rechts oben vom Planeten positioniert, Zoom als Fadenkreuz, Control als Schieberegler-Symbol
- Lichtintensität der Sterne reduziert – Texturen werden nicht mehr überblendet
- Shininess der Planeten verringert für weicheres Lichtverhalten
- Planeten- und Mond-Labels durch SVG-Icons ersetzt – Panel auf Mobile kompakter
- Sterne in der Systemübersicht zeigen dieselben Texturen wie in der Systemansicht
- Zoom-In auf Sol: Endpunkt weiter vom Stern entfernt – kein Aufblitzen des Glows mehr
- System wird immer mit Standardzoom geladen, unabhängig vom Zoom in der Systemübersicht
- Zurück zur Systemübersicht mit smoothem Zoom-Out-Übergang
- Ladevorgang lädt direkt alle Texturen ohne Sol-System zu bauen – Übersicht erscheint sauber ohne Zwischenschritt
- Bugfix: Klick auf Übersichtsstern funktioniert (tgt.pos → tgt.getPos())
- Gestaffelter Hintergrund-Preload entfernt (nicht mehr nötig)
- Bugfix: Smooth-Zoom-Übergang funktioniert jetzt korrekt (isOverview-Early-Return blockierte den overview-zoom-Modus)
- Zurück-Button schließt Infopanel und setzt Kamera-Modus zurück
- Veraltetes CSS für back-btn entfernt
- Ladebildschirm → direkt Systemübersicht (Sol-System während Ladevorgang unsichtbar)
- Zurück-Button ins Panel integriert (← links, eigener Abschnitt), "Planeten" → "Pl." für Kompaktheit
- Smooth-Zoom-Übergang von Übersicht zu System beim Klick auf einen Stern
- Systemübersicht: neue Startszene nach dem Ladevorgang mit allen Sternen korrekt positioniert (RA/Dec/Distanz)
- Klick auf Stern lädt das zugehörige System, "← Systemübersicht"-Button kehrt zurück
- Toter Code entfernt: hzRing-Referenz im Animate-Loop
- Code-Konsolidierung: ungenutztes baryAngle-Feld entfernt, doppeltes rKm bei Charon bereinigt
- Wolf 359 b/c, Lalande b/c, Ross 128 b: hardcoded dist durch korrekte AU()-Werte ersetzt, subcat und color vereinheitlicht
- Massenkonstanten (MJ_IN_EARTH, SOL_IN_EARTH, ML_PER_EARTH) als globale Konstanten definiert, alle Wiederholungen im Code ersetzt
- _countSolTextures zu _countSystemTextures(sys) verallgemeinert
- Rektaszension und Deklination (J2000.0) für alle 30 Sterne in den Daten erfasst
- Infopanel zeigt RA/Dec im klassischen Format (h m s / ° ′ ″)
- Epsilon Eridani: innerer Asteroidengürtel auf 2–3 AU korrigiert – Epsilon Eridani b (3.5 AU) liegt jetzt korrekt knapp außerhalb
- Epsilon Eridani: 3 bestätigte Gürtel eingetragen – innerer Asteroidengürtel (2–4 AU), äußerer Asteroidengürtel (17–22 AU), Trümmergürtel (35–90 AU)
- Alle anderen eingetragenen Systeme ohne bestätigte Gürtel (Wolf 359, Ross 128, Lacaille 9352 u.a. – kein Infrarot-Überschuss detektiert)
- Kuiper-Gürtel (30–50 AU) im Sonnensystem als Kleinkörpergürtel eingezeichnet
- Neue Zonentypen: Kleinkörpergürtel (grau) und Trümmergürtel (bläulich)
- Scatter-Textur parametrisiert – Kleinkörpergürtel und Trümmergürtel sind klumpiger und spärlicher als der Asteroidengürtel
- Doppeltap-Zoom auf deaktivierten Buttons behoben – Sperre gilt jetzt immer für gesamtes UI-Panel
- Doppeltap-Sperre nur noch auf WebGL-Canvas und UI-Hintergrund – Buttons wieder tappbar
- Hintergrund-Preload gestaffelt (ein System alle 1.2s, Start nach 2s) – kein Ruckeln mehr nach dem Ladevorgang
- iPad-Crash behoben: Canvas-Textur auf Mobile halbiert (512×128), Punktzahl reduziert, Zeichenoperationen gebündelt
- RingGeometry-Segmente auf Mobile reduziert (128 statt 256)
- Doppeltap-Zoom auf iPad blockiert (gesamtes Dokument, inkl. moderne iPad-Erkennung)
- Habitable Zone an Elternstern gebunden – folgt korrekt Proxima Centauri bzw. dem jeweiligen Stern
- Habitable Zone in Zonen-System integriert – wird automatisch pro Stern berechnet und als Zone gerendert
- Label "Habitable Zone" in grün, Label "Hauptasteroidengürtel" in braun
- Label Hauptasteroidengürtel exakt zentriert (vertikal + horizontal)
- Textur in Polarkoordinaten gerendert – keine radialen Streifen mehr, Partikel verlaufen ringförmig
- Punktdichte auf 22.000 erhöht, 80 Helligkeits-Cluster
- Asteroidengürtel umbenannt auf "Hauptasteroidengürtel"
- Label in Ringmitte positioniert (in Kamerarichtung)
- Asteroidengürtel mit prozeduraler Noise-Textur (Punkte/Cluster) für organischeres Aussehen
- Neuer Objekttyp "Bereich" (Zone) mit Unterkategorie "Asteroidengürtel"
- Hauptasteroidengürtel (2.06–3.27 AU) im Sonnensystem als halbtransparenter Ring eingezeichnet
- Lacaille 9352: Planetenabstände auf korrekte AU()-Werte gesetzt – Planet d jetzt sichtbar in der habitablen Zone
- EZ Aquarii: Struktur korrigiert – A+C enges Paar (3.786 d), B in großer äußerer Bahn um AC (2.25 J, ~1.22 AU)
- Lacaille 9352: Spektralklasse auf M0.5V korrigiert, Planeten d und e ergänzt (4 bestätigt, Hartogh 2026) – Planet d in habitabler Zone
- EZ Aquarii: hierarchische Struktur korrigiert – A und C als enges inneres Binär (3.79 d), B in großer äußerer Bahn um AC (2.25 J)
- 5 neue Systeme #11–#15: Ross 248, Epsilon Eridani, Lacaille 9352, Ross 128, EZ Aquarii
- Exoplaneten: Epsilon Eridani b (0.98 MJ), Lacaille 9352 b+c (4.2/7.6 M⊕), Ross 128 b (1.40 M⊕)
- EZ Aquarii als Dreifachsystem (A/B/C) implementiert
- Masse der Asteroiden im Infopanel ergänzt
- Asteroiden-Typen eingeführt: C-, S-, M-, B-, V-Typ
- Vesta (V-Typ), Pallas (B-Typ), Hygiea (C-Typ) zugewiesen
- Infopanel für Asteroiden aktiviert (Typ, Radius, Distanz, Umlaufzeit)
- Larissa als viertgrößter Neptunmond hinzugefügt (rKm 97, Periode 0.55 d)
- Masse aller Monde im Infopanel ergänzt
- Versionsanzeige ist nun ein Link zur Versionshistorie
- Texturen beim Systemwechsel ohne Verzögerung: GPU-Upload direkt beim Laden erzwungen
- Ladetext geändert auf "Ladevorgang"
- Texturen anderer Systeme werden sofort (ohne Verzögerung) im Hintergrund geladen
- Ladebildschirm beim Start: Texturen werden vollständig geladen bevor das Sonnensystem erscheint
- Fortschrittsbalken zeigt Ladestand, sanftes Einblenden danach
- Texturen der anderen Systeme werden im Hintergrund vorgeladen
- Infopanel für Charon (Pluto-Begleiter) repariert
- Proxima Centauri startet näher an Alpha Centauri A/B (bessere Darstellung auf kleinen Bildschirmen)
- Weitere Fehlerkorrekturen Rotation für tidally locked Monde
- Fehlerkorrekturen für Umlaufzeit von Monden
- Fehler Radius Erdmond behoben
- Fehler Rotation für tidally locked Monde behoben
- Fehler behoben für Umlaufzeit und Radius von Monden
- Infopanel für Monde eingebaut
- distanceToSol für alle 15 Sterne erfasst (Lichtjahre)
- Infopanel zeigt Entfernung für Sterne (Sonne zeigt –)
- Infopanel Leader Line: Ankerpunkt wechselt automatisch (links/mitte → unten/mitte bei wenig Platz)
- Schwellenwert: horizGap kleiner 60% Panelbreite (mobil Portrait)
- Infopanel Mobile-Anpassungen (pointer:coarse, max-width:500px)
- Breite 260px→195px, Padding reduziert, Hintergrund transparenter (0.78→0.55)
- #hud width: max-content (Systemlabel bricht nicht mehr um)
- #systemLabel white-space: nowrap
- Glow-Schalen: Canvas-Radialgradienten-Sprites statt harter Kugeln
- Additives Blending, weicher Abfall (4 Stops: 0%/35%/65%/100%)
- Ambient/Fill auf Originalwerte zurückgesetzt (Planeten beide Seiten sichtbar)
- Drei Glow-Schalen mit luminositätsabhängiger Größe/Opazität
- PointLight.intensity logarithmisch aus Luminosität
- Ambient 0.18→0.06, Fill 0.6→0.25 (stärkere Schatten)
- Leuchtkraftklasse differenziert: M+V=Roter Zwerg, K+V=Oranger Zwerg, G+V=Gelber Zwerg
- Planetenzählung nach parentStar gefiltert (Proxima:3, α Cen A/B:0)
- Spektralklassen korrigiert (Sirius B: DA2VII, Luhman: L7/T0.5, WISE: Y2)
- Sternmassen hinzugefügt (M☉/MJ)
- Leuchtkraftklasse aus Suffix abgeleitet (V=Hauptreihe, VII=Weißer Zwerg, kein Suffix=Brauner Zwerg)
- Rotationsdauer Exoplaneten (Wolf 359/Lalande: gebunden/–)
- Stern-Infopanel: Spektralklasse, Farbe (colorName), Sternbild, Planetenzahl, absolute/scheinbare Helligkeit
- 15 Sterne mit constellationName, absoluteMagnitude, relativeMagnitude erfasst
- Massenanzeige-Leiter: <0.01 M⊕→M☽, 0.01–317.8 M⊕→M⊕, >317.8 M⊕→MJ, >333000 M⊕→M☉
- Jupiter selbst in Erdmassen (317.8 M⊕)
- Ceres: Asteroid→Zwergplanet (rotationPeriod, massEarth, moonCount)
- Zwergplaneten-Subkategorien: Hauptgürtelobjekt (Ceres), Plutino (Pluto), Cubewano (Haumea/Makemake), SDO (Eris)
- Massenanzeige mit M☽ für kleine Objekte
- Infopanel für Zwergplaneten aktiviert
- Alle 5 Zwergplaneten mit vollständigen Daten (radius, massEarth, moonCount)
- Infopanel Breite 210px→260px
- moonCount: null für Exoplaneten → Anzeige "(unbekannt)"
- Eisriese-Subcategory (icegiant) für Uranus/Neptun/Proxima c/Lalande c
- 6 neue Sternensysteme #5–#10 (WISE 0855, Wolf 359, Lalande 21185, Sirius, Luyten 726-8, Ross 154)
- Spektralklasse D (Weißer Zwerg) für Sirius B
- Luhman 16-System (L7.5/T0.5 Braune Zwerge)
- Neue Spektralklassen L/T/Y mit Farben/Radius/Luminosität
- Binärsystem mit 25-Jahre-Periode
- touch-action: manipulation auf #ui/Buttons (iOS 300ms Tap-Verzögerung entfernt)
- iOS Double-Tap-Zoom-Bug fix: visualViewport API, resize-Listener, Panel-Taps blockiert
- Planetenabstände korrigiert (AU-Formel für Proxima/Barnard-Planeten)
- HZ-Berechnung war korrekt, Planeten standen an falschen Positionen
- HZ-Ring sichtbarer: opacity 0.07→0.13, zwei grüne Randlinien (opacity 0.55)
- Sternspezifische Luminositäten (Proxima: 0.00155, Barnard: 0.00346)
- Proxima b jetzt korrekt in HZ, Barnard-Planeten zu nah (zu heiß)
- HZ-Ringe nur für Sterne mit Planeten (filter nach parentStar)
- HZ-Ringe nur für Sterne mit Planeten vorbereitet
- Habitable Zone implementiert (Kopparapu-Formel, grün transparenter Ring)
- Luminosität pro Spektralklasse, AU-Umrechnung
- Barnard's Stern-System (M4V) mit 4 Exoplaneten (b/c/d/e, 2024–2025 bestätigt)
- Keys bestehender Systeme: -system Suffix
- Mobile BRIGHT-Farben deutlich stärker (Planet: 0xaaaaff, Mond: 0x8888ff, Asteroid: 0xffaa44, Dwarf: 0x66ccff)
- Mobile Orbit-Farben heller (2×)
- Rigel/Toliman Orbitlinien hinzugefügt
- Proxima Orbitlinie beim Fokus hervorhebbar
- Schwerpunkt zwischen α Cen A/B grau eingezeichnet
- subcategory-Planet-Textur-Bug fix (terrestrial/gasgiant)
- Fallback-Kette: key.jpg → subcategory-planet-.jpg → category-planet.jpg
- Proxima startM=π/2 (halbwegs zwischen Periapsis/Apoapsis)
- Proxima startM=π (Apoapsis, fernster Punkt)
- Proxima-Bahn neu kalibriert (a=300, ecc=0.60 → Periapsis 120, Apoapsis 480)
- Proxima-Bahn elliptischer (ecc 0.30→0.75), startM=0 (Periapsis)
- M-Klasse Radius 16→8 (realistischer), Proxima dist 14→18
- Proxima Exoplaneten (b/c/d) mit parentStar-Mechanismus
- Proxima c als Kandidat (?) markiert
- Stern-Labels: weißer Text auf halbtransparentem schwarzen Pill (lesbar auf jedem Hintergrund)
- Proxima-Bahn: inc 107.6°→20°, lan 126°→45°, ecc 0.5→0.3 (flacher)
- Proxima Centauri (M5V) als dritter Stern im Alpha Centauri-System
- Elliptische Bahn (a=450, ecc=0.5, inc=107.6°, lan=126°), Periode 550.000 Jahre
- Binärsystem: sys._baryAngle geteilt, Stern A+B immer gegenüberliegend (phaseOffset π)
- Korrektur visueller Kompromiss
- Alpha Centauri A/B Separation 120 Units (visueller Kompromiss)
- A: orbitR=54, B: orbitR=66 (Massenverhältnis 1.10:0.90)
- Alpha Centauri Binärsystem (barycenter-Mechanismus wie Pluto-Charon)
- Rigel Centaurus (A): orbitR=18, Toliman (B): orbitR=22, Periode 79.91 Jahre
- Proxima Centauri → Alpha Centauri-System umbenannt
- Rigel Centaurus (G2V) + Toliman (K1V) hinzugefügt
- Sonne: spectralClass 'G2V'
- Spektralklassen-Parsing: nur erstes Zeichen als Subkategorie-Key
- Texture-Fallback: key.jpg → subcategory--.jpg → category-.jpg
- Medium-Sterne 3px→5px (Sprite-Gradient sichtbar ab ~4–5px)
- Sehr helle Sterne 12px→7px, Opacity 0.90→0.85
- Medium 6px→3px / 0.80→0.64, sehr hell 12px→5px / 0.90→0.72
- Runde Glow-Sprites via Canvas-Textur (radialer Gradient)
- Faint-Opacity 0.35→0.5, Sprite-Größen: faint 1px, medium 3.5px, sehr hell 6px
- Drei Helligkeitsebenen: Faint (88%, 1px, 0.35), Medium (9%, 2.5px, 0.75), Sehr hell (3%, 4px, 0.95)
- sizeAttenuation: true aktiviert
- Hintergrundstern-Farben entsättigt (natürlicherer Himmel)
- Größenvariation verstärkt (faint 92%→88%, helle Ausreißer bis 7.5px)
- Verbesserter Sternenhintergrund: sphärische Verteilung (Marsaglia)
- Farbvariation nach Spektralklassen, Größenvariation (92%/7%/1%), 10.000 Sterne
- Stern-Label-Fokus-Farbe: wenn Basisfarbe schwarz → nur font-weight:bold, keine Farbänderung
- Stern-Label positioniert über positionLabel auf projizierte Weltposition (0,0,0) + translate(-50%,-50%)
- Stern-Label zentriert (star-label CSS, position:fixed, left:50%, top:50%)
- Fokus-Farbe bei Sternen: nur font-weight:bold (schwarz auf gelb unleserlich)
- Spektralklassen O→M (blau→rot, groß→klein) mit Farbe/Radius/Licht
- Licht/Glow-Mesh an Pivot gebunden (für Multi-Stern-Systeme)
- Stern-Labels schwarz (rgba(0,0,0,0.9))
- Glow-Leak fix: Glow-Mesh als glowMesh im Star-Objekt gespeichert, beim Unload entfernt
- Geschwindigkeitswerte .val 13px→11px Arial
- Kompletter Neuaufbau von Grund auf (Scoping-Fehler behoben)
- Struktur komplett Überarbeitet mit Scene Setup, Kamera, Focus, Input, Animation
- positionLabel/makeLabel/buildMoon aus loadStarSystem herausgezogen (globale Ebene)
- Licht-Akkumulation fix: Snapshot der Arrays, sofortiges Leeren, dann Mesh-Entfernung
- Race condition fix: Arrays zuerst leeren, dann DOM-Entfernung
- positionLabel: el.isConnected Check vor style-Zugriff
- clearAllFocus() in unloadCurrentSystem durch Inline-Code ersetzt
- mode/focusTgt vor unloadCurrentSystem deklariert
- labelRegistry vor unloadCurrentSystem deklariert
- loadStarSystem(id) Architektur: unloadCurrentSystem() + loadStarSystem(id)
- Nav-Buttons rufen loadStarSystem() auf
- Proxima Centauri als zweites System (ID=2, key='proxima')
- ›-Button aktiv
- .val user-select:none
- Zoom/Speed-Buttons an Grenzen deaktiviert (min/max)
- Deaktivierte Buttons: dunkles Grau, schwacher Rahmen, blasser Text, kein Hover
- starSystemID Variable (default 1)
- „Pause" → „Control"
- ‹/› Buttons für System-Navigation (deaktiviert bei first/last)
- .group-label user-select:none
- Systemtitel #systemLabel zentral oben (18px, sys.name)
- name: 'Sol-System', key: 'sol'
- Saubere starsystems-Hierarchie (keine _sol*-Variablen mehr)
- const sys = starsystems[0]
- starsystems-Hierarchie eingeführt (starsystems[0] mit stars/planets/asteroids/dwarfs)
- Aliase starsData/planetsData/etc. bleiben für Code-Kompatibilität
- gas_giant → gasgiant (ohne Unterstrich)
- TERR_SC/GAS_SC/AST_SC/DWARF_SC entfernt
- categoryData.scaleKm/minR pro Kategorie
- Planet-Subcategories: terrestrial (0.000625, min 2.5), gasgiant (0.0002125, min 8)
- scaleR()-Funktion für einheitliche Radiusberechnung
- Code-Bereinigung: sunMesh/sunHit/CAT_BY_LT entfernt
- Kommentare aktualisiert (rotationPeriod, axisTilt)
- Euler-Reihenfolge ZYX (Neigung Z vor Rotation Y)
- Uranus-Textur mit horizontalen Linien zeigt jetzt korrekte „Roll"-Bewegung
- getPos()-Bug fix: alle Lambdas zeigen auf pivot.position statt mesh.position
- Achsenneigung mit realen Daten (axisTilt in Grad)
- Pivot-Object3D für jedes Mesh, rotation.z = Neigung, rotation.y = Eigenrotation
- HIT_MULT.sun Alias entfernt, direkt HIT_MULT.star im Code
- HIT_MULT.sun undefined Bug fix (Array nur mit star/planet/moon/asteroid/dwarf)
- sd.r undefined = NaN → Geometrie-Fehler
- Defensive Guards in makeOrbitLine/makeEllipticOrbitLine (NaN/undefined-Checks)
- categoryData zentralisiert (labelColor, labelSize, orbitColor, orbitColorDim, hitMult)
- Alte Konstanten (LCOLOR, LSIZE, HIT_MULT, DIM_, BRIGHT_) daraus abgeleitet
- categoryData ganz oben vor jeder Verwendung
- BASE_SPEED 0.05→0.025 halbiert
- Defaults zurück auf 1× für Planeten und Monde
- Eigenrotation mit realen Perioden (rotationPeriod in Tagen)
- Negative Werte = retrograd (Venus, Uranus)
- Monde tidally locked (Rotationsperiode = Umlaufzeit)
- applyRotation() skaliert mit Planeten-Speedregler
- categoryData mit Kategorie-Fallback für Texturen
- Ladereihenfolge: key.jpg → category-.jpg → Fallbackfarbe
- category-moon.jpg auf alle Monde anwendbar
- TEXTURE_BASE_URL auf https://astroviewer.x-core.workers.dev/images/ aktualisiert
- Alle Himmelskörper haben key (fehlende: Rhea, Dione, Tethys, Titania, Oberon, Umbriel, Ariel, Proteus, Nereid, Ceres, Vesta, Pallas, Hygiea, Dysnomia)
- Textur-System mit key-Property (automatische URL-Zusammensetzung)
- TEXTURE_BASE_URL zentral anpassbar
- Canvas-Ansatz für Cross-Origin-Texturen versucht (Image→Canvas→CanvasTexture)
- crossOrigin='anonymous' gesetzt, Fehler-Callback hinzugefügt
- Textur-Loading fix: Fallback-color sofort sichtbar, Textur im Callback angewendet, color auf 0xffffff
- Textur-Support eingeführt (makeMaterial(color, textureUrl, opts))
- texture-Property optional bei allen Objekttypen
- Sonne: texture:'https://astroviewer.netlify.app/images/sun.jpg'
- SUN_R entfernt (toter Code)
- starsData eingeführt (alle Sonneneigenschaften als Daten)
- starObjects iteriert über starsData[0]
- SUN_R aus starsData[0].r abgeleitet
- Startgeschwindigkeiten: Planeten 0.5×, Monde 0.1×
- Uranus-Ringe: dunkelblaugrau, 18% Deckkraft
- Neptun-Ringe: neu, sehr dunkel (10% Deckkraft)
- Ring-Logik: opacity als optionales Datenfeld
- Uranusringe hinzugefügt (Neigung 97.77°, blaugrau)
- Mondgeschwindigkeit fix: updateMoon() verwendet direkt BASE_SPEED × SPEEDS × MOON_SPEEDS
- Pluto-Charon konsistent mit Planeten/Monden-Reglern
- Vollständiges Refactoring: Alle Sonderfälle datatengesteuert
- Ringe → ring:{inner, outer, tilt, color} in planetsData
- Elliptische Monde (Nereid) → ecc in moon-Daten, generischer buildMoon()-Handler
- Dwarf-Monde (Dysnomia) → moons:[...] direkt in dwarfData
- Binärsysteme (Pluto-Charon) → bary:{primaryR, companion:{...}} in dwarfData
- Generische updateMoon()-Funktion (circular/elliptic automatisch)
- Nereid (Neptunmond) mit echter elliptischer Bahn (ecc=0.7512)
- Keplersche Gleichung iterativ gelöst
- Neue Funktionen: makeEllipticOrbitLine(), ellipticOrbitPos()
- Ausrichtung: beide Labels (Zoom/Pause) min-width:36px
- II zentriert: display:flex mit align-items + justify-content:center
- Pause-Icon: II/▶ als einfache Textzeichen (kein iOS-Emoji)
- Alle Buttons feste Breite 32px
- Pause-Button feste Breite 36px (kein Größenwechsel beim Klick)
- Auto-Zoom zeigt nur 🔍 (kein Text "Auto")
- Schwerpunkt-Label grau, kleiner (9px, 60% Deckkraft)
- UI-Redesign: Pause in Zoom-Sektion, Buttons schmaler (7px 10px), Faktoren 15px (gleiche Größe wie Rest)
- Dysnomia (Eris-Mond): Periode 15.786 Tage,
- Umbenennung des Artifacts in "astroviewer.html"
- Download-Dateiname bleibt trotz Umbenennung "solar-system.html" (Browser-Limitierung)
- Versionsanzeige auf V1.20 aktualisiert
- Versionsanzeige auf V1.18 korrigiert (manuelle Anpassung)
- Versionsanzeige auf V1.16 korrigiert (DOM-Struktur-Fix)
- Versionslabel "V1.16" dezent unten rechts eingefügt
- Fehler: `labelsEl is null` durch falsche HTML-Reihenfolge behoben
- Tap-Problem auf Mobilgeräten behoben (Raycaster-Sortierung nach Distanz)
- `isTouchClick`-Flag zur Unterscheidung von Touch/Mouse-Events
- Tap-Fokus auf Sonne auf Mobilgeräten behoben (Raycaster-Logik angepasst)
- Mobilgeräte-Tap-Logik verbessert (entfernungsbasierte Tap-Erkennung)
- Titel im Browser-Tab auf "AstroViewer" umbenannt
- Auto-Zoom-Button-Höhe an andere Schalter angepasst (Padding-Fix)
- Auto-Zoom-Button exakt unter Zoom-Buttons ausgerichtet (Flex-Layout-Fix)
- Auto-Zoom-Button unter Zoom-Buttons platziert (CSS-Grid-Anpassung)
- Steuerungspanel optimiert: Pause-Button nur noch Symbol, Auto-Zoom mit Lupensymbol
- Orbit-Linien-Helligkeit mobilgerätespezifisch angepasst (Media Query `pointer:coarse`)
- Orbit-Linien auf Mobilgeräten heller (2x Helligkeit)
- Touch-Steuerung für Mobilgeräte implementiert (1-Finger-Drehung, 2-Finger-Pinch)
- Orbit-Linien allgemein heller (mobile Sichtbarkeit)
- Tap-Problem auf Mobilgeräten behoben (Raycaster-Koordinaten-Fix)
- Tap-Logik für Mobilgeräte überarbeitet (distanzbasierte Erkennung)
- Klick auf Labels funktioniert jetzt (Pointer-Events-Fix via `document.elementFromPoint`)
- Labels anklickbar gemacht (Pointer-Events-Konflikt behoben)
- Basisversion mit allen Planeten, Monden, Asteroiden und Zwergplaneten
- Kamerafokus-System, Orbit-Highlighting, Geschwindigkeitsregler
- Reale Orbitalparameter (Inklination, Knoten) für alle Objekte
- Pointer-Events-Konflikt zwischen Canvas und Labels behoben
- Klick-Erkennung auf Labels via `document.elementFromPoint` implementiert
- Labels mit höherem z-index als Canvas versehen
- Labels direkt an document.body angehängt (umgehender Container-Konflikt)
- Klick-Handler auf Labels zentralisiert (e.stopPropagation)
- Pointer-Events-Konflikt behoben (#labels pointer-events:none, Labels pointer-events:auto)
- Klick-Handler in makeLabel integriert
- Separate Event-Listener auf Objekten entfernt
- Pointer-Events-Konflikt zwischen Container und Labels analysiert
- Klick auf Labels getestet (funktioniert nicht)
- Klick-Handler auf Labels mit e.stopPropagation()
- Pointer-Events-Konflikt identifiziert (#labels blockiert Events)
- Klick auf Labels soll Fokus setzen (noch nicht funktionierend)
- Labels mit pointer-events:auto und cursor:pointer versehen
- Klick auf Labels getestet (funktioniert nicht)
- Label-Positionierung bei größerem Zoom getestet
- Klick auf Labels soll Fokus setzen (Feature-Anfrage)
- Label-System komplett neu geschrieben (keine CSS-Klassen mehr für Farben)
- Vollständiger Rewrite des Label-Systems (labelRegistry, positionLabel)
- display:none Initialisierung für Labels hinzugefügt
- Highlight via Inline-Style direkt gesetzt (setFocus)
- clearHighlight setzt originalen Inline-Color zurück
- makeLabel verwendet einzelne Klasse plus Inline-Farbe
- Label-Highlighting komplett über Inline-Styles (CSS-Klassen umgangen)
- e.preventDefault() auf mousedown, isDragging-Guard auf mouseup
- setFocus wird möglicherweise doppelt aufgerufen (Guard hinzugefügt)
- Inline-Styles in setFocus zurückgesetzt
- Debug-Console-Logs hinzugefügt
- Label-Findung via textContent-Matching (um labelEl-Referenzen zu umgehen)
- labelEl-Referenz in clickTargets direkt aus allLabelEls Index
- clearHighlight nur von Zoom-Button aufgerufen (setFocus macht eigenes Reset)
- clearHighlight und setFocus-Interferenz analysiert
- allLabelEls-Array statt querySelectorAll (direkte Iteration)
- querySelectorAll Scope-Problem identifiziert
- makeLabel-Funktion zentralisiert
- makeLabel-Call in Asteroiden-Build
- makeLabel-Call in Zwergplanet-Build
- makeLabel-Call in Planet-Build
- makeLabel-Call in Mond-Build
- makeLabel-Funktion eingeführt
- querySelectorAll Scope auf labelsEl begrenzt
- CSS konsolidiert + !important für .focused
- Kuiper-Gürtel hinzugefügt (Pluto, Haumea, Makemake, Eris)
- Dwarf animation im Render-Loop
- .dlabel CSS, clearHighlight und setFocus aktualisiert
- Dwarf planet Build-Loop hinzugefügt
- Dwarf planet Build-Loop vorbereitet
- Zwergplanet-Kategorie vorbereitet
- Kuiper-Gürtel-Feature angefragt
- Vollständiger Rewrite mit sauberer Label-Struktur
- Asteroiden-Labels via cssText fixiert
- Asteroiden-Radius erhöht (Mindestradius 3)
- asteroidsData Deklarations-Reihenfolge fixiert
- asteroidsData Referenzierungs-Fehler analysiert
- Asteroiden hinzugefügt (Ceres, Vesta, Pallas, Hygiea)
- Asteroid animation im Render-Loop
- clearHighlight für Asteroiden-Orbit-Farben aktualisiert
- Asteroid Build-Loop und clearHighlight aktualisiert
- Asteroiden-Daten und separater Build-Loop eingefügt
- Asteroiden-Feature vorbereitet
- Asteroiden-Feature vorbereitet
- Asteroiden-Feature vorbereitet
- Reale Orbitalparameter implementiert (Inklination, Aufsteigender Knoten)
- Orbit-Alignment-Fix (orbitTilt in makeOrbitLine übergeben)
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix vorbereitet
- Orbit-Alignment-Fix (orbitTilt in makeOrbitLine übergeben)
- Orbit-Helligkeit (Mondorbit voll, Planetenorbit halb)
- UI-Layout (zweispaltig, keine Umbrüche)
- Zoom-Problem (FOCUS_BASE_DIST = 120)
- Auto-Zoom Toggle hinzugefügt
- Zoom-Problem analysiert (maximale Zoom-Distanz)
- Fokus-Highlight für Orbit-Linien
- Fokus-Highlight für Orbit-Linien vorbereitet
- Fokus-Highlight für Orbit-Linien vorbereitet
- Orbit-Linien dunkler gestaltet
- Kamera-Modi komplett neu gebaut (free, lerping, focus)
- postFocusLookAt-Logik implementiert
- postFocusLookAt-Logik vorbereitet
- postFocusLookAt-Logik vorbereitet
- postFocusLookAt-Logik vorbereitet
- syncOrbitFromCamera-Fix (kein Sprung zur Sonne)
- syncOrbitFromCamera-Fix vorbereitet
- syncOrbitFromCamera-Fix vorbereitet
- Klick-Fokus: Monde anklickbar, Label-Überlappung behoben
- Klick-Fokus: BASE_SPEED von 0.5 auf 0.25 reduziert
- Klick-Fokus: Kamera zoomt sanft auf Objekt
- Zoom-Steuerung (+/- Buttons) hinzugefügt
- Mond-Geschwindigkeitsregler hinzugefügt
- Monde hinzugefügt (Erde, Mars, Jupiter, Saturn, Uranus, Neptun)
- Planetenbeleuchtung (Nachtseiten sichtbar)
- Sonne (fester Radius 28), Labels (fester Offset), Geschwindigkeitsregler
- Sonne sichtbar (MeshBasicMaterial), Labels (HTML-div), Hintergrund (schwarz), Planetengrößen halbiert
- Basisdarstellung Sonnensystem (Sonne, 8 Planeten, Orbits, Pause-Button)