Neue Features: Satelliten-Orbits, Naturkatastrophen, Visual Modes

SATELLITEN (CelesTrak TLE):
- Raumstationen (ISS), GPS, Galileo, Wetter, Erdbeobachtung, Starlink
- Echtzeit-Positionsberechnung aus Kepler-Elementen (2s Update)
- Orbitbahnen als leuchtende Linien (Stationen, GPS, Galileo)
- Farbkodiert nach Gruppe (rot=Station, orange=GPS, blau=Galileo)

NATURKATASTROPHEN (NASA EONET):
- Waldbraende, Vulkane, Stuerme, Fluten, Erdrutsche, Eis
- Farbige Punkte mit Emoji-Labels
- Klick zeigt Details und Quellen

VISUAL MODES:
- STD: Standard-Ansicht
- NVG: Nachtsicht (gruener Monochrom-Filter)
- FLIR: Thermal-Ansicht (invertiert, Infrarot-Look)
- CRT: Retro-Monitor (Scanlines, Vignette)

4 neue Dateien: satellites.js, disasters.js, visualmodes.js,
data_satellites.py, data_disasters.py
Dieser Commit ist enthalten in:
Claude Dev
2026-03-24 12:50:04 +01:00
Ursprung 1c462c3041
Commit 9b4ea4cd28
9 geänderte Dateien mit 493 neuen und 0 gelöschten Zeilen

Datei anzeigen

@@ -81,6 +81,7 @@ const Globe = {
// Layer starten (die mit checked)
this._toggleLabels(true);
if (typeof VisualModes !== 'undefined') VisualModes.init();
document.getElementById('bottom-stats').textContent = 'Globe initialisiert — Lade Daten...';
},
@@ -111,6 +112,8 @@ const Globe = {
'layer-ships': function(on) { on ? ShipsLayer.start(Globe.viewer) : ShipsLayer.stop(); },
'layer-quakes': function(on) { on ? QuakesLayer.start(Globe.viewer) : QuakesLayer.stop(); },
'layer-gdelt': function(on) { on ? GdeltLayer.start(Globe.viewer) : GdeltLayer.stop(); },
'layer-satellites': function(on) { on ? SatellitesLayer.start(Globe.viewer) : SatellitesLayer.stop(); },
'layer-disasters': function(on) { on ? DisastersLayer.start(Globe.viewer) : DisastersLayer.stop(); },
'layer-daynight': function(on) { Globe.viewer.scene.globe.enableLighting = on; },
'layer-labels': function(on) { Globe._toggleLabels(on); },
};
@@ -133,6 +136,12 @@ const Globe = {
if (typeof QuakesLayer !== 'undefined' && QuakesLayer._count > 0) {
document.getElementById('count-quakes').textContent = QuakesLayer._count.toLocaleString('de-DE');
}
if (typeof SatellitesLayer !== 'undefined' && SatellitesLayer._count > 0) {
document.getElementById('count-satellites').textContent = SatellitesLayer._count.toLocaleString('de-DE');
}
if (typeof DisastersLayer !== 'undefined' && DisastersLayer._count > 0) {
document.getElementById('count-disasters').textContent = DisastersLayer._count.toLocaleString('de-DE');
}
if (typeof GdeltLayer !== 'undefined' && GdeltLayer._count > 0) {
document.getElementById('count-gdelt').textContent = GdeltLayer._count.toLocaleString('de-DE');
}