#include <simgear/constants.h>
#include <simgear/debug/logstream.hxx>
#include <simgear/math/interpolater.hxx>
+#include <simgear/environment/visual_enviro.hxx>
#include <Main/fg_props.hxx>
#include "environment.hxx"
maybe_copy_value(this, node, "visibility-m",
&FGEnvironment::set_visibility_m);
- if (!maybe_copy_value(this, node, "temperature-degc",
+ if (!maybe_copy_value(this, node, "temperature-sea-level-degc",
&FGEnvironment::set_temperature_sea_level_degc))
- maybe_copy_value(this, node, "temperature-sea-level-degc",
+ maybe_copy_value(this, node, "temperature-degc",
&FGEnvironment::set_temperature_degc);
- if (!maybe_copy_value(this, node, "dewpoint-degc",
+ if (!maybe_copy_value(this, node, "dewpoint-sea-level-degc",
&FGEnvironment::set_dewpoint_sea_level_degc))
- maybe_copy_value(this, node, "dewpoint-sea-level-degc",
+ maybe_copy_value(this, node, "dewpoint-degc",
&FGEnvironment::set_dewpoint_degc);
if (!maybe_copy_value(this, node, "pressure-sea-level-inhg",
return temperature_degc;
}
+double
+FGEnvironment::get_temperature_degf () const
+{
+ return (temperature_degc * 9.0 / 5.0) + 32.0;
+}
+
double
FGEnvironment::get_dewpoint_sea_level_degc () const
{
double
FGEnvironment::get_turbulence_magnitude_norm () const
{
+ if( sgEnviro.get_turbulence_enable_state() )
+ if (fgGetBool("/environment/params/real-world-weather-fetch") == true)
+ return sgEnviro.get_cloud_turbulence();
return turbulence_magnitude_norm;
}
wind_from_heading_deg = 90 - wind_from_heading_deg;
else
wind_from_heading_deg = 270 - wind_from_heading_deg;
+
+#if 0
+ // FIXME: Windspeed can become negative with these formulas.
+ // which can cause problems for animations that rely
+ // on the windspeed property.
if (angle_rad == 0)
wind_speed_kt = fabs(wind_from_east_fps
* SG_METER_TO_NM * SG_FEET_TO_METER * 3600);
else
wind_speed_kt = (wind_from_north_fps / sin(angle_rad))
* SG_METER_TO_NM * SG_FEET_TO_METER * 3600;
+#else
+ wind_speed_kt = sqrt(wind_from_north_fps * wind_from_north_fps +
+ wind_from_east_fps * wind_from_east_fps)
+ * SG_METER_TO_NM * SG_FEET_TO_METER * 3600;
+#endif
}
void
env2->get_visibility_m(),
fraction));
- result->set_temperature_degc
- (do_interp(env1->get_temperature_degc(),
- env2->get_temperature_degc(),
+ result->set_temperature_sea_level_degc
+ (do_interp(env1->get_temperature_sea_level_degc(),
+ env2->get_temperature_sea_level_degc(),
fraction));
result->set_dewpoint_degc
- (do_interp(env1->get_dewpoint_degc(),
- env2->get_dewpoint_degc(),
+ (do_interp(env1->get_dewpoint_sea_level_degc(),
+ env2->get_dewpoint_sea_level_degc(),
fraction));
result->set_pressure_sea_level_inhg