diff --git a/html/config.js b/html/config.js index f31b2af..8f316c3 100644 --- a/html/config.js +++ b/html/config.js @@ -331,6 +331,7 @@ HideCols = [ // labelsGeom = false; // labels: uses geometric altitude (WGS84 ellipsoid unless geomUseEGM is enabled // geomUseEGM = false; // use EGM96 for displaying geometric altitudes (extra load time!) +// baroUseQNH = false; // windLabelsSlim = false; // showLabelUnits = true; diff --git a/html/defaults.js b/html/defaults.js index 74f0b6e..f877499 100644 --- a/html/defaults.js +++ b/html/defaults.js @@ -344,6 +344,7 @@ let showSil = false; let labelsGeom = false; // labels: uses geometric altitude (WGS84 ellipsoid unless geomUseEGM is enabled let geomUseEGM = false; // use EGM96 for displaying geometric altitudes (extra load time!) +let baroUseQNH = false; let windLabelsSlim = false; let showLabelUnits = true; diff --git a/html/index.html b/html/index.html index e0f7259..93c7c49 100644 --- a/html/index.html +++ b/html/index.html @@ -297,7 +297,7 @@ - Baro. Altitude: + Baro. Altitude: @@ -519,7 +519,7 @@
- Barometric: + Barometric:
@@ -901,6 +901,11 @@ History: n/a positions + + + + diff --git a/html/script.js b/html/script.js index 9e74d48..52a72f0 100644 --- a/html/script.js +++ b/html/script.js @@ -1247,6 +1247,28 @@ jQuery('#selected_altitude_geom1') } }); + new Toggle({ + key: "baroUseQNH", + display: "Baro. alt.: Standard pressure -> Pressure corrected", + container: "#settingsLeft", + init: baroUseQNH, + setState: function(state) { + baroUseQNH = state; + if (baroUseQNH) { + jQuery('#selected_altitude1_title').updateText('Baro. altitude'); + jQuery('#selected_altitude2_title').updateText('Adjusted Barometric'); + jQuery('#infoblock_altimeter').removeClass('hidden'); + } else { + jQuery('#selected_altitude1_title').updateText('Baro. altitude'); + jQuery('#selected_altitude2_title').updateText('Adjusted Barometric'); + jQuery('#infoblock_altimeter').addClass('hidden'); + } + if (loadFinished) { + remakeTrails(); + refreshSelected(); + } + } + }); if (usp.has('labelsGeom')) { toggles['labelsGeom'].toggle(true, 'init'); @@ -3127,8 +3149,8 @@ function refreshSelected() { } - jQuery("#selected_altitude1").updateText(format_altitude_long(selected.altitude, selected.vert_rate, DisplayUnits)); - jQuery("#selected_altitude2").updateText(format_altitude_long(selected.altitude, selected.vert_rate, DisplayUnits)); + jQuery("#selected_altitude1").updateText(format_altitude_long(adjust_baro_alt(selected.altitude), selected.vert_rate, DisplayUnits)); + jQuery("#selected_altitude2").updateText(format_altitude_long(adjust_baro_alt(selected.altitude), selected.vert_rate, DisplayUnits)); jQuery('#selected_onground').updateText(format_onground(selected.altitude)); @@ -8434,6 +8456,28 @@ function getn(n) { limitUpdates=n; RefreshInterval=0; fetchCalls=0; } +function adjust_baro_alt(alt) { + if (baroUseQNH && alt != null) { + let altimeter = document.getElementById("settings_altimeter").value + if (altimeter < 100) { + return corrected_alt(alt, inhg_to_hpa(altimeter)); + } else { + return corrected_alt(alt, altimeter); + } + } else { + return alt; + } +} + +function corrected_alt(alt, qnh) { + let station_pressure = 29.92 * Math.pow( ( (288-0.0065*(0.3048 * alt)) / 288), 5.2561); + return ( 1 - Math.pow( (inhg_to_hpa(station_pressure) / qnh ), 0.190284) ) * 145366.45; +} + +function inhg_to_hpa(inhg) { + return 33.8639 * inhg +} + function globeRateUpdate() { if (adsbexchange) { dynGlobeRate = true;