From: Torsten Dreyer Date: Wed, 10 Sep 2014 19:07:57 +0000 (+0200) Subject: Optionally disable the lowpass for the static system X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=48180eb9abedffaf22a2c53978e9dad5013875df;p=flightgear.git Optionally disable the lowpass for the static system the static system has an optional "tau" parameter to define the rate at which the output value changes. Setting this value to zero now disables the filter. This prevents wrong airspeed indications on rapid altitude changes. No functional changes if tau has other-than-zero values (e.g. the default systems). --- diff --git a/src/Systems/static.cxx b/src/Systems/static.cxx index a6e14bb68..f8dc2add6 100644 --- a/src/Systems/static.cxx +++ b/src/Systems/static.cxx @@ -15,6 +15,9 @@ #include
#include
#include +#include +#include +#include #include @@ -22,7 +25,7 @@ StaticSystem::StaticSystem ( SGPropertyNode *node ) : _name(node->getStringValue("name", "static")), _num(node->getIntValue("number", 0)), - _tau(node->getDoubleValue("tau", 1)), + _tau(SGMiscd::max(.0,node->getDoubleValue("tau", 1))), _error_factor(node->getDoubleValue("error-factor", 0)), _type(node->getIntValue("type", 0)) { @@ -76,7 +79,7 @@ StaticSystem::update (double dt) double beta; double alpha; double mach; - double trat = _tau ? dt/_tau : 100; + double trat = _tau ? dt/_tau : SGLimitsd::max(); double proj_factor = 0; double pt; @@ -100,7 +103,9 @@ StaticSystem::update (double dt) p_new = p_new + qc_part; } - _pressure_out_node->setDoubleValue(fgGetLowPass(p, p_new, trat)); //setting new pressure in static system + _pressure_out_node->setDoubleValue( + _tau > .0 ? fgGetLowPass(p, p_new, trat) : p_new + ); //setting new pressure in static system } }