]> git.mxchange.org Git - flightgear.git/commitdiff
Remove the old WeatherCM module.
authordavid <david>
Tue, 16 Mar 2004 20:19:07 +0000 (20:19 +0000)
committerdavid <david>
Tue, 16 Mar 2004 20:19:07 +0000 (20:19 +0000)
48 files changed:
configure.ac
src/ATC/AIMgr.cxx
src/ATC/approach.cxx
src/ATC/atis.cxx
src/FDM/Balloon/BalloonSim.cpp
src/FDM/JSBSim/JSBSim.cxx
src/Main/Makefile.am
src/Main/fg_init.cxx
src/Main/fg_props.cxx
src/Main/main.cxx
src/Main/util.cxx
src/Makefile.am
src/WeatherCM/.cvsignore [deleted file]
src/WeatherCM/FGAirPressureItem.cpp [deleted file]
src/WeatherCM/FGAirPressureItem.h [deleted file]
src/WeatherCM/FGCloud.h [deleted file]
src/WeatherCM/FGCloudItem.cpp [deleted file]
src/WeatherCM/FGCloudItem.h [deleted file]
src/WeatherCM/FGLocalWeatherDatabase.cpp [deleted file]
src/WeatherCM/FGLocalWeatherDatabase.h [deleted file]
src/WeatherCM/FGPhysicalProperties.cpp [deleted file]
src/WeatherCM/FGPhysicalProperties.h [deleted file]
src/WeatherCM/FGPhysicalProperties_bind.cpp [deleted file]
src/WeatherCM/FGPhysicalProperty.cpp [deleted file]
src/WeatherCM/FGPhysicalProperty.h [deleted file]
src/WeatherCM/FGSnowRain.h [deleted file]
src/WeatherCM/FGTemperatureItem.cpp [deleted file]
src/WeatherCM/FGTemperatureItem.h [deleted file]
src/WeatherCM/FGThunderstorm.cpp [deleted file]
src/WeatherCM/FGThunderstorm.h [deleted file]
src/WeatherCM/FGTurbulenceItem.cpp [deleted file]
src/WeatherCM/FGTurbulenceItem.h [deleted file]
src/WeatherCM/FGVaporPressureItem.cpp [deleted file]
src/WeatherCM/FGVaporPressureItem.h [deleted file]
src/WeatherCM/FGWeatherDefs.h [deleted file]
src/WeatherCM/FGWeatherFeature.h [deleted file]
src/WeatherCM/FGWeatherParse.cpp [deleted file]
src/WeatherCM/FGWeatherParse.h [deleted file]
src/WeatherCM/FGWeatherUtils.h [deleted file]
src/WeatherCM/FGWeatherVectorWrap.h [deleted file]
src/WeatherCM/FGWindItem.cpp [deleted file]
src/WeatherCM/FGWindItem.h [deleted file]
src/WeatherCM/Makefile.am [deleted file]
src/WeatherCM/air-pressure-explanation.txt [deleted file]
src/WeatherCM/linintp2.cpp [deleted file]
src/WeatherCM/linintp2.h [deleted file]
src/WeatherCM/sphrintp.cpp [deleted file]
src/WeatherCM/sphrintp.h [deleted file]

index 65f8972529d876347d424d023c3348a02451793e..5be1a33fd09372ad38a5427145b022495194b03a 100644 (file)
@@ -70,18 +70,6 @@ fi
 AM_CONDITIONAL(ENABLE_MPLAYER_AS, test "x$with_multiplayer" != "xno")
 
 
-# Specify if we want to use WeatherCM instead of FGEnvironment.
-# default to with_weathercm=no
-AC_ARG_WITH(weathercm, [  --with-weathercm        Use WeatherCM instead of FGEnvironment])
-if test "x$with_weathercm" = "xyes" ; then
-    echo "Building with WeatherCM"
-    AC_DEFINE([FG_WEATHERCM], 1,
-              [Define to build with Christian Mayer's weather code])
-else
-    echo "Building with FGEnvironment"
-fi
-AM_CONDITIONAL(ENABLE_WEATHERCM, test "x$with_weathercm" = "xyes")
-
 dnl Thread related checks
 AC_ARG_WITH(threads, [  --with-threads          Include tile loading threads [default=no]])
 if test "x$with_threads" = "xyes"; then
@@ -522,7 +510,6 @@ AC_CONFIG_FILES([ \
        src/Sound/Makefile \
        src/Systems/Makefile \
        src/Time/Makefile \
-       src/WeatherCM/Makefile \
        tests/Makefile \
        utils/Makefile \
        utils/TerraSync/Makefile \
@@ -548,12 +535,6 @@ fi
 echo -n "Automake version: "
 automake --version | head -1
 
-if test "x$with_weathercm" != "x"; then
-    echo "WeatherCM instead of FGEnvironment: $with_weathercm"
-else
-    echo "Using FGEnvironment"
-fi
-
 if test "x$with_multiplayer" != "xno"; then
     echo "Building with multiplayer support"
 fi
index 2c2a1bf569f11898e86e1bffb64b5f17508d7206..621bf5ec83b19f85b6735938cd85d4b65a6e2e72 100644 (file)
 #  include <dirent.h>          // for directory reading
 #endif
 
-#ifdef FG_WEATHERCM
-# include <WeatherCM/FGLocalWeatherDatabase.h>
-#else
-# include <Environment/environment_mgr.hxx>
-# include <Environment/environment.hxx>
-#endif
+#include <Environment/environment_mgr.hxx>
+#include <Environment/environment.hxx>
 
 #include "AIMgr.hxx"
 #include "AILocalTraffic.hxx"
@@ -379,19 +375,10 @@ void FGAIMgr::GenerateSimpleAirportTraffic(string ident, double min_dist) {
        
        // Check that the visibility is OK for IFR operation.
        double visibility;
-       #ifdef FG_WEATHERCM
-       //sgVec3 position = { aptpos.lat(), aptpos.lon(), aptpos.elev() };
-       //FGPhysicalProperty stationweather = WeatherDatabase->get(position);
-       #else
        FGEnvironment stationweather =
             ((FGEnvironmentMgr *)globals->get_subsystem("environment"))
               ->getEnvironment(aptpos.lat(), aptpos.lon(), aptpos.elev());     // TODO - check whether this should take ft or m for elev.
-       #endif
-       #ifdef FG_WEATHERCM
-       visibility = fgGetDouble("/environment/visibility-m");
-       #else
        visibility = stationweather.get_visibility_m();
-       #endif
        // Technically we can do VFR down to 1 mile (1600m) but that's pretty murky!
        //cout << "vis = " << visibility << '\n';
        if(visibility < 3000) return;
index c036a28274f7d33114860858bb990cfbd5d88f2e..f8901029d5693bb638b98e144e16dddcf0a4078b 100644 (file)
 #include <simgear/math/polar3d.hxx>
 #include <simgear/misc/sg_path.hxx>
 
-#ifdef FG_WEATHERCM
-# include <WeatherCM/FGLocalWeatherDatabase.h>
-#else
-# include <Environment/environment_mgr.hxx>
-# include <Environment/environment.hxx>
-#endif
+#include <Environment/environment_mgr.hxx>
+#include <Environment/environment.hxx>
 
 
 #include <GUI/gui.h>
@@ -555,37 +551,11 @@ double FGApproach::round_alt( const bool hl, double alt ) {
 void FGApproach::get_active_runway() {
        //cout << "Entering FGApproach::get_active_runway()\n";
 
-#ifdef FG_WEATHERCM
-  sgVec3 position = { lat, lon, elev };
-  FGPhysicalProperty stationweather = WeatherDatabase->get(position);
-#else
   FGEnvironment stationweather =
       ((FGEnvironmentMgr *)globals->get_subsystem("environment"))
         ->getEnvironment(lat, lon, elev);
-#endif
 
-#ifdef FG_WEATHERCM
-  //Set the heading to into the wind
-  double wind_x = stationweather.Wind[0];
-  double wind_y = stationweather.Wind[1];
-  
-  double speed = sqrt( wind_x*wind_x + wind_y*wind_y ) * SG_METER_TO_NM / (60.0*60.0);
-  double hdg;
-  
-  //If no wind use 270degrees
-  if(speed == 0) {
-    hdg = 270;
-  } else {
-    // //normalize the wind to get the direction
-    //wind_x /= speed; wind_y /= speed;
-    
-    hdg = - atan2 ( wind_x, wind_y ) * SG_RADIANS_TO_DEGREES ;
-    if (hdg < 0.0)
-      hdg += 360.0;
-  }
-#else
   double hdg = stationweather.get_wind_from_heading_deg();
-#endif
   
   FGRunway runway;
   if ( globals->get_runways()->search( ident, int(hdg), &runway) ) {
index ff0da5767891b196127945c178c05e77cad32625..4ab783d8171c234657f2e785766d4cf018ca809a 100644 (file)
@@ -36,12 +36,8 @@ SG_USING_STD(cout);
 
 #include <simgear/misc/sg_path.hxx>
 
-#ifdef FG_WEATHERCM
-# include <WeatherCM/FGLocalWeatherDatabase.h>
-#else
-# include <Environment/environment_mgr.hxx>
-# include <Environment/environment.hxx>
-#endif
+#include <Environment/environment_mgr.hxx>
+#include <Environment/environment.hxx>
 
 #include <Main/fg_props.hxx>
 #include <Main/globals.hxx>
@@ -102,14 +98,9 @@ void FGATIS::UpdateTransmission() {
        int hours;
        // int minutes;
        
-       #ifdef FG_WEATHERCM
-       sgVec3 position = { lat, lon, elev };
-       FGPhysicalProperty stationweather = WeatherDatabase->get(position);
-       #else
        FGEnvironment stationweather =
             ((FGEnvironmentMgr *)globals->get_subsystem("environment"))
               ->getEnvironment(lat, lon, elev);
-       #endif
        
        transmission = "";
        
@@ -139,11 +130,7 @@ void FGATIS::UpdateTransmission() {
        
        // Get the temperature
        int temp;
-       #ifdef FG_WEATHERCM
-       temp = int(stationweather.Temperature - 273.15);
-       #else
        temp = (int)stationweather.get_temperature_degc();
-       #endif
        
        // HACK ALERT - at the moment the new environment subsystem returns bogus temperatures
        // FIXME - take out this hack when this gets fixed upstream
@@ -162,11 +149,7 @@ void FGATIS::UpdateTransmission() {
        transmission += " degrees_Celsius";
        
        // Get the visibility
-       #ifdef FG_WEATHERCM
-       visibility = fgGetDouble("/environment/visibility-m");
-       #else
        visibility = stationweather.get_visibility_m();
-       #endif
        sprintf(buf, "%i", int(visibility/1600));
        transmission += " / Visibility ";
        tempstr1 = buf;
@@ -198,48 +181,9 @@ void FGATIS::UpdateTransmission() {
        
        // Get the pressure / altimeter
        
-       #ifndef FG_WEATHERCM
-       double altimeter = stationweather.get_pressure_sea_level_inhg();
-       sprintf(buf, "%.2f", altimeter);
-       transmission += " / Altimeter ";
-       tempstr1 = buf;
-       transmission += ConvertNumToSpokenDigits(tempstr1);
-       #endif
-       
        // Based on the airport-id and wind get the active runway
        //FGRunway *r;
 
-       #ifdef FG_WEATHERCM
-       //Set the heading to into the wind
-       double wind_x = stationweather.Wind[0];
-       double wind_y = stationweather.Wind[1];
-       
-       double speed = sqrt( wind_x*wind_x + wind_y*wind_y ) * SG_METER_TO_NM / (60.0*60.0);
-       double hdg;
-       
-       //If no wind use 270degrees
-       if(speed == 0) {
-               hdg = 270;
-               transmission += " / Winds_light_and_variable";
-       } else {
-               // //normalize the wind to get the direction
-               //wind_x /= speed; wind_y /= speed;
-               
-               hdg = - atan2 ( wind_x, wind_y ) * SG_RADIANS_TO_DEGREES ;
-               if (hdg < 0.0)
-                       hdg += 360.0;
-               
-               //add a description of the wind to the transmission
-               char buf5[10];
-               char buf6[10];
-               sprintf(buf5, "%i", int(speed));
-               sprintf(buf6, "%i", int(hdg));
-               tempstr1 = buf5;
-               tempstr2 = buf6;
-               transmission = transmission + " / Winds " + ConvertNumToSpokenDigits(tempstr1) + " knots from "
-                                           + ConvertNumToSpokenDigits(tempstr2) + " degrees";
-       }
-       #else
        double speed = stationweather.get_wind_speed_kt();
        double hdg = stationweather.get_wind_from_heading_deg();
        if (speed == 0) {
@@ -257,7 +201,6 @@ void FGATIS::UpdateTransmission() {
                transmission = transmission + " / Winds " + ConvertNumToSpokenDigits(tempstr1) + " knots from "
                                            + ConvertNumToSpokenDigits(tempstr2) + " degrees";
        }
-       #endif
        
        string rwy_no = globals->get_runways()->search(ident, int(hdg));
        if(rwy_no != "NN") {
index de291d94138f0a638cf0df60f403b62c37df42ca..968bf12cf6f56b3902a4036ea445bf15dcc6224a 100644 (file)
@@ -45,9 +45,6 @@ HISTORY
 #include <simgear/constants.h>
 
 #include <Aircraft/aircraft.hxx>
-#ifdef FG_WEATHERCM
-# include <WeatherCM/FGLocalWeatherDatabase.h>
-#endif
 
 #include "BalloonSim.h"
 
@@ -171,35 +168,10 @@ void balloon::update()
     /* later, but currently was my main concern to get it going...          */
     /************************************************************************/
 
-#ifdef FG_WEATHERCM
-    sgVec3 v;
-
-    FGPhysicalProperty wdbpos = WeatherDatabase->get(position);
-
-    //get the current wind velocity and store it in v
-    //Point3D temp = wdbpos.Wind;
-    //sgSetVec3(v, temp.x(), temp.y(), temp.z());
-    sgCopyVec3(v, wdbpos.Wind );
-
-    sgSubVec3(v, velocity);
-    float speed = sgLengthVec3(v);
-    
-    // calculate the density of the gas inside
-    double rho = wdbpos.AirPressure / (287.14 * T);
-
-    // calculate the mass of the air
-    double mAir = rho * balloon_envelope_volume;
-
-    // loss of energy by cooling down:
-    float k = 1.0 / (1.0/4.8 + 1.0/(4.8+3.4*speed) + l_of_the_envelope/lambda);
-    float Q = k * balloon_envelope_area * (dt/3600.0) * (wdbpos.Temperature - T);   //(dt/3600.0) = time since last call in hours
-
-#else
    // I realy don't think there is a solution for this without WeatherCM
    // but this is a hack, and it's working -- EMH
    double mAir = 0;
    float Q = 0;
-#endif
 
     // gain of energy by heating:
     if (fuel_left > 0.0)       //but only with some fuel left ;-)
@@ -228,10 +200,6 @@ void balloon::update()
     sgVec3 fTotal, fFriction, fLift;
 
     sgScaleVec3(fTotal, gravity_vector, mTotal);
-#ifdef FG_WEATHERCM
-    sgScaleVec3(fFriction, v, cw_envelope * wind_facing_area_of_balloon * WeatherDatabase->getAirDensity(position) * speed / 2.0);  //wind resistance
-    sgScaleVec3(fLift, gravity_vector, -balloon_envelope_volume * wdbpos.AirPressure / (287.14 * wdbpos.Temperature));
-#endif
    
     sgAddVec3(fTotal, fLift);
     sgAddVec3(fTotal, fFriction);
index 61b8fdec4eab8c8ca1c05d43a50086032acab678..ebcacf96d3e0e36d159611091fe635d67e94c14a 100644 (file)
@@ -250,9 +250,6 @@ void FGJSBsim::init()
     // Explicitly call the superclass's
     // init method first.
 
-#ifdef FG_WEATHERCM
-    Atmosphere->UseInternal();
-#else
     if (fgGetBool("/environment/params/control-fdm-atmosphere")) {
       Atmosphere->UseExternal();
       Atmosphere->SetExTemperature(
@@ -269,7 +266,6 @@ void FGJSBsim::init()
     } else {
       Atmosphere->UseInternal();
     }
-#endif
 
     fgic->SetVnorthFpsIC( wind_from_north->getDoubleValue() );
     fgic->SetVeastFpsIC( wind_from_east->getDoubleValue() );
index b8a75ed207ac9bfb43c17eb5373a1e017cac1c78..675c09b78a5f98c8fe556778c4cbceb81b5a5d89 100644 (file)
@@ -1,9 +1,3 @@
-if ENABLE_WEATHERCM
-WEATHER_LIBS = $(top_builddir)/src/WeatherCM/libWeatherCM.a
-else
-WEATHER_LIBS = $(top_builddir)/src/Environment/libEnvironment.a
-endif
-
 if ENABLE_MPLAYER_AS
 MPLAYER_LIBS = $(top_builddir)/src/MultiPlayer/libMultiPlayer.a
 else
@@ -82,7 +76,7 @@ fgfs_LDADD = \
        $(top_builddir)/src/Replay/libReplay.a \
        $(top_builddir)/src/Systems/libSystems.a \
        $(top_builddir)/src/Time/libTime.a \
-       $(WEATHER_LIBS) \
+       $(top_builddir)/src/Environment/libEnvironment.a \
        $(CLOUD3D_LIBS) \
        -lsgroute -lsgsky -lsgsound -lsgephem -lsgmaterial -lsgtgdb -lsgmodel \
        -lsgtiming -lsgio -lsgscreen -lsgmath -lsgbucket -lsgprops -lsgdebug \
index d2ff2eea226b6f25fc8c6e4c0099d4f8f26b964f..ec0a9b035dd8bcaeb58900b84734d0ac90aef813 100644 (file)
 #include <MultiPlayer/multiplayrxmgr.hxx>
 #endif
 
-#ifdef FG_WEATHERCM
-#  include <WeatherCM/FGLocalWeatherDatabase.h>
-#else
-#  include <Environment/environment_mgr.hxx>
-#endif
+#include <Environment/environment_mgr.hxx>
 
 #include "fg_init.hxx"
 #include "fg_io.hxx"
@@ -1553,49 +1549,7 @@ bool fgInitSubsystems() {
     ////////////////////////////////////////////////////////////////////
 
     // Initialize the weather modeling subsystem
-#ifdef FG_WEATHERCM
-    // Initialize the WeatherDatabase
-    SG_LOG(SG_GENERAL, SG_INFO, "Creating LocalWeatherDatabase");
-    sgVec3 position;
-    sgSetVec3( position, current_aircraft.fdm_state->get_Latitude(),
-               current_aircraft.fdm_state->get_Longitude(),
-               current_aircraft.fdm_state->get_Altitude() * SG_FEET_TO_METER );
-    double init_vis = fgGetDouble("/environment/visibility-m");
-
-    FGLocalWeatherDatabase::DatabaseWorkingType working_type;
-
-    if (!strcmp(fgGetString("/environment/weather/working-type"), "internet"))
-    {
-      working_type = FGLocalWeatherDatabase::use_internet;
-    } else {
-      working_type = FGLocalWeatherDatabase::default_mode;
-    }
-    
-    if ( init_vis > 0 ) {
-      FGLocalWeatherDatabase::theFGLocalWeatherDatabase = 
-        new FGLocalWeatherDatabase( position,
-                                    globals->get_fg_root(),
-                                    working_type,
-                                    init_vis );
-    } else {
-      FGLocalWeatherDatabase::theFGLocalWeatherDatabase = 
-        new FGLocalWeatherDatabase( position,
-                                    globals->get_fg_root(),
-                                    working_type );
-    }
-
-    // cout << theFGLocalWeatherDatabase << endl;
-    // cout << "visibility = " 
-    //      << theFGLocalWeatherDatabase->getWeatherVisibility() << endl;
-
-    WeatherDatabase = FGLocalWeatherDatabase::theFGLocalWeatherDatabase;
-
-    // register the periodic update of the weather
-    globals->get_event_mgr()->add( "weather update",
-                                   &fgUpdateWeatherDatabase, 30000);
-#else
     globals->add_subsystem("environment", new FGEnvironmentMgr);
-#endif
 
 
     ////////////////////////////////////////////////////////////////////
index 7f2c7e8685460fa7102199a2e41420610bb1ed29..66a9086fb7b13e5c64472209e305280f597a4842 100644 (file)
 #include <Aircraft/aircraft.hxx>
 #include <Time/tmp.hxx>
 #include <FDM/UIUCModel/uiuc_aircraftdir.h>
-#ifdef FG_WEATHERCM
-#  include <WeatherCM/FGLocalWeatherDatabase.h>
-#else
-#  include <Environment/environment.hxx>
-#endif // FG_WEATHERCM
+#include <Environment/environment.hxx>
 
 #include <GUI/gui.h>
 
 SG_USING_STD(istream);
 SG_USING_STD(ostream);
 
-#ifdef FG_WEATHERCM
-static double getWindNorth ();
-static double getWindEast ();
-static double getWindDown ();
-#endif // FG_WEATHERCM
-
 static bool winding_ccw = true; // FIXME: temporary
 
 static bool fdm_data_logging = false; // FIXME: temporary
@@ -383,95 +373,6 @@ getHeadingMag ()
   return magheading;
 }
 
-
-#ifdef FG_WEATHERCM
-
-/**
- * Get the current visibility (meters).
- */
-static double
-getVisibility ()
-{
-  return WeatherDatabase->getWeatherVisibility();
-}
-
-
-/**
- * Set the current visibility (meters).
- */
-static void
-setVisibility (double visibility)
-{
-  WeatherDatabase->setWeatherVisibility(visibility);
-}
-
-/**
- * Get the current wind north velocity (feet/second).
- */
-static double
-getWindNorth ()
-{
-  return current_aircraft.fdm_state->get_V_north_airmass();
-}
-
-
-/**
- * Set the current wind north velocity (feet/second).
- */
-static void
-setWindNorth (double speed)
-{
-  current_aircraft.fdm_state
-    ->set_Velocities_Local_Airmass(speed, getWindEast(), getWindDown());
-}
-
-
-/**
- * Get the current wind east velocity (feet/second).
- */
-static double
-getWindEast ()
-{
-  return current_aircraft.fdm_state->get_V_east_airmass();
-}
-
-
-/**
- * Set the current wind east velocity (feet/second).
- */
-static void
-setWindEast (double speed)
-{
-  SG_LOG(SG_GENERAL, SG_INFO,, "Set wind-east to " << speed );
-  current_aircraft.fdm_state->set_Velocities_Local_Airmass(getWindNorth(),
-                                                          speed,
-                                                          getWindDown());
-}
-
-
-/**
- * Get the current wind down velocity (feet/second).
- */
-static double
-getWindDown ()
-{
-  return current_aircraft.fdm_state->get_V_down_airmass();
-}
-
-
-/**
- * Set the current wind down velocity (feet/second).
- */
-static void
-setWindDown (double speed)
-{
-  current_aircraft.fdm_state->set_Velocities_Local_Airmass(getWindNorth(),
-                                                          getWindEast(),
-                                                          speed);
-}
-
-#endif // FG_WEATHERCM
-
 static long
 getWarp ()
 {
@@ -584,18 +485,6 @@ FGProperties::bind ()
                                // Orientation
   fgTie("/orientation/heading-magnetic-deg", getHeadingMag);
 
-                               // Environment
-#ifdef FG_WEATHERCM
-  fgTie("/environment/visibility-m", getVisibility, setVisibility);
-  fgSetArchivable("/environment/visibility-m");
-  fgTie("/environment/wind-from-north-fps", getWindNorth, setWindNorth);
-  fgSetArchivable("/environment/wind-from-north-fps");
-  fgTie("/environment/wind-from-east-fps", getWindEast, setWindEast);
-  fgSetArchivable("/environment/wind-from-east-fps");
-  fgTie("/environment/wind-from-down-fps", getWindDown, setWindDown);
-  fgSetArchivable("/environment/wind-from-down-fps");
-#endif
-
   fgTie("/environment/magnetic-variation-deg", getMagVar);
   fgTie("/environment/magnetic-dip-deg", getMagDip);
 
@@ -625,13 +514,6 @@ FGProperties::unbind ()
   fgUntie("/orientation/heading-magnetic-deg");
 
                                // Environment
-#ifdef FG_WEATHERCM
-  fgUntie("/environment/visibility-m");
-  fgUntie("/environment/wind-from-north-fps");
-  fgUntie("/environment/wind-from-east-fps");
-  fgUntie("/environment/wind-from-down-fps");
-#endif
-
   fgUntie("/environment/magnetic-variation-deg");
   fgUntie("/environment/magnetic-dip-deg");
 
index 0f7d536e9569ae3b477cdbee310c97cb920310eb..d92367f497f82bd37f75a7d57030f60e74f9b584 100644 (file)
@@ -119,10 +119,6 @@ glPointParameterfvProc glPointParameterfvPtr = 0;
 bool glPointParameterIsSupported = false;
 
 
-#ifdef FG_WEATHERCM
-#  include <WeatherCM/FGLocalWeatherDatabase.h>
-#endif
-
 #ifdef macintosh
 #  include <console.h>         // -dw- for command line dialog
 #endif
index 9525f1d582553cd6760ba5a19eccfb41ba143f00..1e7f4e4467f4194bfb5779ffbaa6faf8ca0c86a3 100644 (file)
@@ -98,18 +98,6 @@ fgSetupWind (double min_hdg, double max_hdg, double speed, double gust)
               min_hdg);
   fgSetDouble("/environment/config/aloft/entry[2]/wind-speed-kt",
               speed);
-
-#ifdef FG_WEATHERCM
-  // convert to fps
-  speed *= SG_NM_TO_METER * SG_METER_TO_FEET * (1.0/3600);
-  while (min_hdg > 360)
-    min_hdg -= 360;
-  while (min_hdg <= 0)
-    min_hdg += 360;
-  min_hdg *= SGD_DEGREES_TO_RADIANS;
-  fgSetDouble("/environment/wind-from-north-fps", speed * cos(dir));
-  fgSetDouble("/environment/wind-from-east-fps", speed * sin(dir));
-#endif // FG_WEATHERCM
 }
 
 
index 74a44e7f9c19e75d341a9132cc0893cbdf03af02..7a668f4ee040d993b954e54dd33ba61e1e9dfd6e 100644 (file)
@@ -1,9 +1,3 @@
-if ENABLE_WEATHERCM
-WEATHER_DIR = WeatherCM
-else
-WEATHER_DIR = Environment
-endif
-
 if ENABLE_MPLAYER_AS
 MPLAYER_DIRS = MultiPlayer
 else
@@ -18,6 +12,7 @@ SUBDIRS = \
         Autopilot \
         Cockpit \
         Controls \
+        Environment \
         FDM \
         GUI \
         Input \
@@ -34,5 +29,4 @@ SUBDIRS = \
         Sound \
         Systems \
         Time \
-        $(WEATHER_DIR) \
         Main
diff --git a/src/WeatherCM/.cvsignore b/src/WeatherCM/.cvsignore
deleted file mode 100644 (file)
index e995588..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-.deps
-Makefile
-Makefile.in
diff --git a/src/WeatherCM/FGAirPressureItem.cpp b/src/WeatherCM/FGAirPressureItem.cpp
deleted file mode 100644 (file)
index 7f981e0..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*****************************************************************************
-
- Module:       FGAirPressureItem.cpp
- Author:       Christian Mayer
- Date started: 28.05.99
- Called by:    FGMicroWeather
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Operator< definition for the item
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-*****************************************************************************/
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include "FGAirPressureItem.h"
-
-/****************************************************************************/
-/********************************** CODE ************************************/
-/****************************************************************************/
diff --git a/src/WeatherCM/FGAirPressureItem.h b/src/WeatherCM/FGAirPressureItem.h
deleted file mode 100644 (file)
index 2119290..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/*****************************************************************************
-
- Header:       FGAirPressureItem.h     
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Air pressure item that is stored in the micro weather class
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer      Created
-08.06.1999 Christian Mayer      Added international air preasure formula
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-15.12.1999 Christian Mayer     changed the air pressure calculation to a much
-                               more realistic formula. But as I need for that
-                               the temperature I moved the code to 
-                               FGPhysicalProperties
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGAirPressureItem_H
-#define FGAirPressureItem_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include <math.h>
-
-#include "FGWeatherDefs.h"
-               
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-class FGAirPressureItem;
-FGAirPressureItem operator-(const FGAirPressureItem& arg);
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/* NOTE: The value stored in 'value' is the air preasure that we'd have at  */
-/*       an altitude of 0.0 The correct airpreasure at the stored altitude  */
-/*       gets  calulated in  FGPhyiscalProperties  as  I need  to know  the */
-/*       temperatures at the different altitudes for that.                 */
-/****************************************************************************/
-class FGAirPressureItem
-{
-private:
-    WeatherPrecision value; //that's the airpressure at 0 metres
-
-protected:
-public:
-
-    FGAirPressureItem(const WeatherPrecision v)        {value = v;                             }
-    FGAirPressureItem()                                {value = FG_WEATHER_DEFAULT_AIRPRESSURE;}
-
-    WeatherPrecision getValue() const
-    { 
-       return value;
-    };
-
-    void setValue(WeatherPrecision p) 
-    { 
-       value = p;
-    };
-
-    FGAirPressureItem& operator*=(const WeatherPrecision   arg);
-    FGAirPressureItem& operator+=(const FGAirPressureItem& arg);
-    FGAirPressureItem& operator-=(const FGAirPressureItem& arg);
-
-    friend FGAirPressureItem operator-(const FGAirPressureItem& arg);
-};
-
-inline FGAirPressureItem& FGAirPressureItem::operator*= (const WeatherPrecision arg)
-{
-  value *= arg;
-  return *this;
-}
-
-inline FGAirPressureItem& FGAirPressureItem::operator+= (const FGAirPressureItem& arg)
-{
-  value += arg.value;
-  return *this;
-}
-
-inline FGAirPressureItem& FGAirPressureItem::operator-= (const FGAirPressureItem& arg)
-{
-  value -= arg.value;
-  return *this;
-}
-
-inline FGAirPressureItem operator-(const FGAirPressureItem& arg)
-{
-    return FGAirPressureItem(-arg.value);
-}
-
-/****************************************************************************/
-#endif /*FGAirPressureItem_H*/
-
-
-
-
-
-
diff --git a/src/WeatherCM/FGCloud.h b/src/WeatherCM/FGCloud.h
deleted file mode 100644 (file)
index 844cec4..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*****************************************************************************
-
- Header:       FGCloud.h       
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Header for the cloud class
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGCloud_H
-#define FGCloud_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include "FGWeatherFeature.h"
-               
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/****************************************************************************/
-class FGCloud:FGWeatherFeature
-{
-private:
-protected:
-public:
-};
-
-/****************************************************************************/
-#endif /*FGCloud_H*/
diff --git a/src/WeatherCM/FGCloudItem.cpp b/src/WeatherCM/FGCloudItem.cpp
deleted file mode 100644 (file)
index d3d74e9..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*****************************************************************************
-
- Module:       FGCloudItem.cpp
- Author:       Christian Mayer
- Date started: 28.05.99
- Called by:    FGMicroWeather
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Operator< definition for the item
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-09.10.1999 Christian Mayer     changed CloudItem on Durks request
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-*****************************************************************************/
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include "FGCloudItem.h"
-
-/****************************************************************************/
-/********************************** CODE ************************************/
-/****************************************************************************/
-
diff --git a/src/WeatherCM/FGCloudItem.h b/src/WeatherCM/FGCloudItem.h
deleted file mode 100644 (file)
index 4b6260d..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*****************************************************************************
-
- Header:       FGCloudItem.h   
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Cloud item that is stored in the micro weather class
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-09.10.1999 Christian Mayer     changed CloudItem on Durks request
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGCloudItem_H
-#define FGCloudItem_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include "FGWeatherDefs.h"
-               
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/****************************************************************************/
-class FGCloudItem
-{
-private:
-    WeatherPrecision thickness;
-    WeatherPrecision density;
-
-protected:
-public:
-
-    FGCloudItem(const WeatherPrecision t, const WeatherPrecision d) {thickness = t; density = d;}
-    FGCloudItem()                                                  {thickness = 0.0; density = 0.0;}
-
-    WeatherPrecision getThickness(void) const { return thickness; }
-    WeatherPrecision getDensity  (void) const { return density;   }
-};
-
-/****************************************************************************/
-#endif /*FGCloudItem_H*/
diff --git a/src/WeatherCM/FGLocalWeatherDatabase.cpp b/src/WeatherCM/FGLocalWeatherDatabase.cpp
deleted file mode 100644 (file)
index 0ad64b9..0000000
+++ /dev/null
@@ -1,446 +0,0 @@
-/*****************************************************************************
-
- Module:       FGLocalWeatherDatabase.cpp
- Author:       Christian Mayer
- Date started: 28.05.99
- Called by:    main program
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Database for the local weather
-This database is the only one that gets called from FG
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-14.12.1999 Christian Mayer     Changed the internal structure to use Dave
-                                Eberly's spherical interpolation code. This
-                               stops our dependancy on the (ugly) voronoi
-                               code and simplyfies the code structure a lot.
-07.05.2000 Tony Peden           Added functionality to get the weather data
-                                on 'the bus'
-18.05.2000 Christian Mayer      Minor clean-ups. Changed the code to use 
-                                FGWeatherUtils.h for unit conversion
-18.07.2001 Christian Mayer      Added the posibility to limit the amount of 
-                                stations for a faster init.
-*****************************************************************************/
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include <simgear/compiler.h>
-#include <simgear/constants.h>
-
-#include <Aircraft/aircraft.hxx>
-#include <Main/fg_props.hxx>
-
-#include "FGLocalWeatherDatabase.h"
-
-#include "FGWeatherParse.h"
-
-#include "FGWeatherUtils.h"
-
-/****************************************************************************/
-/********************************** CODE ************************************/
-/****************************************************************************/
-
-FGLocalWeatherDatabase* FGLocalWeatherDatabase::theFGLocalWeatherDatabase = 0;
-FGLocalWeatherDatabase *WeatherDatabase;
-
-void FGLocalWeatherDatabase::init( const WeatherPrecision visibility,
-                                  const DatabaseWorkingType type,
-                                  const string &root )
-{
-    cerr << "Initializing FGLocalWeatherDatabase\n";
-    cerr << "-----------------------------------\n";
-
-    if (theFGLocalWeatherDatabase)
-    {
-       cerr << "Error: only one local weather allowed";
-       exit(-1);
-    }
-
-    setWeatherVisibility(visibility);
-
-    DatabaseStatus = type;
-    database_logic = 0;            //just get sure...
-
-    Thunderstorm = false;
-    //I don't need to set theThunderstorm as Thunderstorm == false
-
-    switch(DatabaseStatus)
-    {
-    case use_global:
-       {
-           cerr << "Error: there's no global database anymore!\n";
-           exit(-1);
-       }
-       break;
-
-    case use_internet:
-       {
-           FGWeatherParse *parsed_data = new FGWeatherParse();
-           sgVec2       *p;
-            unsigned int *f;
-            string path_to_weather = root + "/weather/current.txt.gz";
-           parsed_data->input( path_to_weather.c_str() );
-           unsigned int n = parsed_data->stored_stations();
-            int m = fgGetInt("/environment/weather/max-stations", -1);
-
-            if ( ( m < 0 ) || ( m > n ) )
-            {
-                m = n;
-
-               p = new sgVec2[n];
-               f = new unsigned int[n];
-
-               // fill the database
-               for (unsigned int i = 0; i < n; i++) 
-               {
-                    f[i] = i;
-                   database_data[i] = parsed_data->getFGPhysicalProperties(i);
-                   parsed_data->getPosition(i, p[i]);
-
-                   if ( (i%100) == 0)
-                       cerr << ".";
-               }
-            }
-            else
-            {   // we have to limit the amount of stations
-
-                //store the "distance" between the station and the current
-                //position. As the distance is calculated from the lat/lon
-                //values it's not worth much - but it's good enough for
-                //comparison
-                map<float, unsigned int> squared_distance;
-                sgVec2 cur_pos;
-
-                cur_pos[0] = cache->last_known_position[0];
-                cur_pos[1] = cache->last_known_position[1];
-                
-                unsigned int i;
-                for( i = 0; i < n; i++ )
-                {
-                  sgVec2 pos;
-                  parsed_data->getPosition(i, pos);
-                  squared_distance[sgDistanceSquaredVec2(cur_pos, pos)] = i;
-                }
-
-                p = new sgVec2      [m];
-                f = new unsigned int[m];
-
-                map<float, unsigned int>::const_iterator ci;
-                ci = squared_distance.begin();
-
-               // fill the database
-               for ( i = 0; i < m; i++ ) 
-                { 
-                    f[i] = i;
-                   database_data.push_back( parsed_data->getFGPhysicalProperties(ci->second) );
-                   parsed_data->getPosition(ci->second, p[i]);
-
-                   if ( (i%100) == 0)
-                       cerr << ".";
-
-                    ci++;
-               }
-            }
-
-           // free the memory of the parsed data to ease the required memory
-           // for the very memory consuming spherical interpolation
-           delete parsed_data;
-
-           //and finally init the interpolation
-           cerr << "\nInitialiating Interpolation. (2-3 minutes on a PII-350 for ca. 3500 stations)\n";
-           database_logic = new SphereInterpolate(m, p, f);
-
-           //and free my allocations:
-           delete[] p;
-           delete[] f;
-           cerr << "Finished weather init.\n";
-
-       }
-       break;
-
-    case distant:
-       cerr << "FGLocalWeatherDatabase error: Distant database isn't implemented yet!\n";
-       cerr << "  using random mode instead!\n";
-    case random:
-    case manual:
-    case default_mode:
-       {
-           double x[2] = {0.0,  0.0};  //make an standard weather that's the same at the whole world
-           double y[2] = {0.0,  0.0};  //make an standard weather that's the same at the whole world
-           double z[2] = {1.0, -1.0};  //make an standard weather that's the same at the whole world
-            unsigned int f[2] = {0, 0};
-            database_data.push_back( FGPhysicalProperties() ); // == database_date[0]
-           database_logic = new SphereInterpolate(2,x,y,z,f);
-       }
-       break;
-
-    default:
-       cerr << "FGLocalWeatherDatabase error: Unknown database type specified!\n";
-    };
-
-    cache->latitude_deg  = fgGetNode("/position/latitude-deg" );
-    cache->longitude_deg = fgGetNode("/position/longitude-deg");
-    cache->altitude_ft   = fgGetNode("/position/altitude-ft"  );
-
-}
-
-void FGLocalWeatherDatabase::bind()
-{
-    fgTie("/environment/weather/wind-north-mps", this, &FGLocalWeatherDatabase::get_wind_north);
-    fgTie("/environment/weather/wind-east-mps", this, &FGLocalWeatherDatabase::get_wind_east);
-    fgTie("/environment/weather/wind-up-mps", this, &FGLocalWeatherDatabase::get_wind_up);
-    fgTie("/environment/weather/temperature-K", this, &FGLocalWeatherDatabase::get_temperature);
-    fgTie("/environment/weather/air-pressure-Pa", this, &FGLocalWeatherDatabase::get_air_pressure);
-    fgTie("/environment/weather/vapor-pressure-Pa", this, &FGLocalWeatherDatabase::get_vapor_pressure);
-    fgTie("/environment/weather/air-density", this, &FGLocalWeatherDatabase::get_air_density);
-    
-
-  SGPropertyNode * station_nodes = fgGetNode("/environment/weather");
-  if (station_nodes == 0) {
-    cerr << "No weatherstations (/environment/weather)!!";
-    return;
-  }
-  
-  int index = 0;
-  for(vector<FGPhysicalProperties>::iterator it = database_data.begin(); it != database_data.end(); it++)
-  {
-      SGPropertyNode * station = station_nodes->getNode("station", index, true);
-
-      station -> tie("air-pressure-Pa", 
-        SGRawValueMethods<FGAirPressureItem,WeatherPrecision>(
-          database_data[0].AirPressure,
-          &FGAirPressureItem::getValue,
-          &FGAirPressureItem::setValue)
-        ,false);
-
-    int i;
-    for( i = 0; i < database_data[index].Wind.size(); i++)
-    {
-      SGPropertyNode * wind = station->getNode("wind", i, true);
-      wind -> tie("north-mps", 
-        SGRawValueMethodsIndexed<FGPhysicalProperties,WeatherPrecision>(
-          database_data[index], i,
-          &FGPhysicalProperties::getWind_x,
-          &FGPhysicalProperties::setWind_x)
-        ,false);
-      wind -> tie("east-mps", 
-        SGRawValueMethodsIndexed<FGPhysicalProperties,WeatherPrecision>(
-          database_data[index], i,
-          &FGPhysicalProperties::getWind_y,
-          &FGPhysicalProperties::setWind_y)
-        ,false);
-      wind -> tie("up-mps", 
-        SGRawValueMethodsIndexed<FGPhysicalProperties,WeatherPrecision>(
-          database_data[index], i,
-          &FGPhysicalProperties::getWind_z,
-          &FGPhysicalProperties::setWind_z)
-        ,false);
-      wind -> tie("altitude-m", 
-        SGRawValueMethodsIndexed<FGPhysicalProperties,WeatherPrecision>(
-          database_data[index], i,
-          &FGPhysicalProperties::getWind_a,
-          &FGPhysicalProperties::setWind_a)
-        ,false);
-    }
-
-    for( i = 0; i < database_data[index].Temperature.size(); i++)
-    {
-      SGPropertyNode * temperature = station->getNode("temperature", i, true);
-      temperature -> tie("value-K", 
-        SGRawValueMethodsIndexed<FGPhysicalProperties,WeatherPrecision>(
-          database_data[index], i,
-          &FGPhysicalProperties::getTemperature_x,
-          &FGPhysicalProperties::setTemperature_x)
-        ,false);
-      temperature -> tie("altitude-m", 
-        SGRawValueMethodsIndexed<FGPhysicalProperties,WeatherPrecision>(
-          database_data[index], i,
-          &FGPhysicalProperties::getTemperature_a,
-          &FGPhysicalProperties::setTemperature_a)
-        ,false);
-    }
-
-    for( i = 0; i < database_data[index].VaporPressure.size(); i++)
-    {
-      SGPropertyNode * vaporpressure = station->getNode("vapor-pressure", i, true);
-      vaporpressure -> tie("value-Pa", 
-        SGRawValueMethodsIndexed<FGPhysicalProperties,WeatherPrecision>(
-          database_data[index], i,
-          &FGPhysicalProperties::getVaporPressure_x,
-          &FGPhysicalProperties::setVaporPressure_x)
-        ,false);
-      vaporpressure -> tie("altitude-m", 
-        SGRawValueMethodsIndexed<FGPhysicalProperties,WeatherPrecision>(
-          database_data[index], i,
-          &FGPhysicalProperties::getVaporPressure_a,
-          &FGPhysicalProperties::setVaporPressure_a)
-        ,false);
-    }
-
-    index++;
-  }
-}
-
-void FGLocalWeatherDatabase::unbind()
-{
-    fgUntie("/environment/weather/wind-north-mps");
-    fgUntie("/environment/weather/wind-east-mps");
-    fgUntie("/environment/weather/wind-up-mps");
-    fgUntie("/environment/weather/temperature-K");
-    fgUntie("/environment/weather/air-pressure-Pa");
-    fgUntie("/environment/weather/vapor-pressure-Pa");
-    fgUntie("/environment/weather/air-density");
-}
-
-FGLocalWeatherDatabase::~FGLocalWeatherDatabase()
-{
-    //Tidying up:
-    delete database_logic;
-}
-
-/****************************************************************************/
-/* reset the whole database                                                */
-/****************************************************************************/
-void FGLocalWeatherDatabase::reset(const DatabaseWorkingType type)
-{
-    cerr << "FGLocalWeatherDatabase::reset isn't supported yet\n";
-}
-
-/****************************************************************************/
-/* update the database. Since the last call we had dt seconds              */
-/****************************************************************************/
-void FGLocalWeatherDatabase::update(const WeatherPrecision dt)
-{
-    //if (DatabaseStatus==use_global)
-    // global->update(dt);
-}
-
-void FGLocalWeatherDatabase::update(const sgVec3& p) //position has changed
-{
-    //uncomment this when you are using the GlobalDatabase
-    /*
-    cerr << "****\nupdate(p) inside\n";
-    cerr << "Parameter: " << p[0] << "/" << p[1] << "/" << p[2] << "\n";
-    cerr << FGPhysicalProperties2D(get(p2d), p2d);
-    cerr << "****\n";
-    */
-    
-}
-
-void FGLocalWeatherDatabase::update(const sgVec3& p, const WeatherPrecision dt)   //time and/or position has changed
-{
-}
-
-/****************************************************************************/
-/* Get the physical properties on the specified point p        out of the database */
-/****************************************************************************/
-FGPhysicalProperty FGLocalWeatherDatabase::get(const sgVec3& p) const
-{
-  // check for bogous altitudes. Dunno why, but FGFS want's to know the
-  // weather at an altitude of roughly -3000 meters...
-  if (p[2] < -500.0f)
-    return FGPhysicalProperty(DatabaseEvaluate(p), -500.0f);
-
-  return FGPhysicalProperty(DatabaseEvaluate(p), p[2]);
-}
-
-#ifdef macintosh
-    /* fix a problem with mw compilers in that they don't know the
-       difference between the next two methods. Since the first one
-       doesn't seem to be used anywhere, I commented it out. This is
-       supposed to be fixed in the forthcoming CodeWarrior Release
-       6. */
-#else
-FGPhysicalProperties FGLocalWeatherDatabase::get(const sgVec2& p) const
-{
-    return DatabaseEvaluate(p);
-}
-#endif
-
-WeatherPrecision FGLocalWeatherDatabase::getAirDensity(const sgVec3& p) const
-{
-    FGPhysicalProperty dummy(DatabaseEvaluate(p), p[2]);
-
-    return 
-       (dummy.AirPressure*FG_WEATHER_DEFAULT_AIRDENSITY*FG_WEATHER_DEFAULT_TEMPERATURE) / 
-       (dummy.Temperature*FG_WEATHER_DEFAULT_AIRPRESSURE);
-}
-
-
-void FGLocalWeatherDatabase::setSnowRainIntensity(const WeatherPrecision x, const sgVec2& p)
-{
-    /* not supported yet */
-}
-
-void FGLocalWeatherDatabase::setSnowRainType(const SnowRainType x, const sgVec2& p)
-{
-    /* not supported yet */
-}
-
-void FGLocalWeatherDatabase::setLightningProbability(const WeatherPrecision x, const sgVec2& p)
-{
-    /* not supported yet */
-}
-
-void FGLocalWeatherDatabase::setProperties(const FGPhysicalProperties2D& x)
-{
-    /* not supported yet */
-}
-
-void fgUpdateWeatherDatabase(void)
-{
-    sgVec3 position;
-    
-    sgSetVec3(position, 
-        current_aircraft.fdm_state->get_Latitude(),
-        current_aircraft.fdm_state->get_Longitude(),
-        current_aircraft.fdm_state->get_Altitude() * SG_FEET_TO_METER);
-    
-    WeatherDatabase->update( position );
-       
-    // get the data on 'the bus' for the FDM
-
-   /*  FGPhysicalProperty porperty = WeatherDatabase->get(position);
-
-    current_aircraft.fdm_state->set_Static_temperature( Kelvin2Rankine(porperty.Temperature) );
-    current_aircraft.fdm_state->set_Static_pressure( Pascal2psf(porperty.AirPressure) );
-
-    current_aircraft.fdm_state->set_Density( SIdensity2JSBsim( Density(porperty.AirPressure, porperty.Temperature) ) );
-    
-#define MSTOFPS  3.2808 //m/s to ft/s
-    current_aircraft.fdm_state->set_Velocities_Local_Airmass(porperty.Wind[1]*MSTOFPS,
-        porperty.Wind[0]*MSTOFPS,
-        porperty.Wind[2]*MSTOFPS); */
-
-    
-}
-
diff --git a/src/WeatherCM/FGLocalWeatherDatabase.h b/src/WeatherCM/FGLocalWeatherDatabase.h
deleted file mode 100644 (file)
index 5509fd7..0000000
+++ /dev/null
@@ -1,357 +0,0 @@
-/*****************************************************************************
-
- Header:       FGLocalWeatherDatabase.h        
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Database for the local weather
-This database is the only one that gets called from FG
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-30.06.1999 Christian Mayer     STL portability
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-14.12.1999 Christian Mayer     Changed the internal structure to use Dave
-                                Eberly's spherical interpolation code. This
-                               stops our dependancy on the (ugly) voronoi
-                               code and simplyfies the code structure a lot.
-18.07.2001 Christian Mayer      Added the posibility to limit the amount of 
-                                stations for a faster init.
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGLocalWeatherDatabase_H
-#define FGLocalWeatherDatabase_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include <vector>
-#include STL_STRING
-
-#include <plib/sg.h>
-
-#include <Main/fgfs.hxx>
-
-#include <simgear/constants.h>
-#include <simgear/props/props.hxx>
-
-#include "sphrintp.h"
-
-#include "FGPhysicalProperties.h"
-#include "FGPhysicalProperty.h"
-
-#include "FGWeatherFeature.h"
-#include "FGWeatherDefs.h"
-#include "FGThunderstorm.h"
-
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-SG_USING_STD(vector);
-SG_USING_STD(string);
-SG_USING_NAMESPACE(std);
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/****************************************************************************/
-struct _FGLocalWeatherDatabaseCache
-{
-    sgVec3             last_known_position;
-    //sgVec3             current_position;
-    SGPropertyNode     *latitude_deg;
-    SGPropertyNode     *longitude_deg;
-    SGPropertyNode     *altitude_ft;
-    FGPhysicalProperty last_known_property;
-};
-
-class FGLocalWeatherDatabase : public FGSubsystem
-{
-private:
-protected:
-    SphereInterpolate            *database_logic;
-    vector<FGPhysicalProperties> database_data;
-#ifndef macintosh
-    FGPhysicalProperties DatabaseEvaluate(const sgVec2& p) const
-    {
-        sgVec2 p_converted = {p[0]*(SGD_2PI/360.0),
-                              p[1]*(SGD_2PI/360.0)};
-        EvaluateData d = database_logic->Evaluate(p_converted);
-        return database_data[d.index[0]]*d.percentage[0] + 
-               database_data[d.index[1]]*d.percentage[1] + 
-               database_data[d.index[2]]*d.percentage[2] ; 
-    }
-#endif
-    FGPhysicalProperties DatabaseEvaluate(const sgVec3& p) const
-    {
-        sgVec3 p_converted = {p[0]*(SGD_2PI/360.0),
-                              p[1]*(SGD_2PI/360.0),
-                              p[2]                };
-        EvaluateData d = database_logic->Evaluate(p_converted);
-        return database_data[d.index[0]]*d.percentage[0] + 
-               database_data[d.index[1]]*d.percentage[1] + 
-               database_data[d.index[2]]*d.percentage[2] ; 
-    }
-
-    typedef vector<sgVec2>      pointVector;
-    typedef vector<pointVector> tileVector;
-
-    /************************************************************************/
-    /* make tiles out of points on a 2D plane                              */
-    /************************************************************************/
-    WeatherPrecision WeatherVisibility;        //how far do I need to simulate the
-                                       //local weather? Unit: metres
-
-    _FGLocalWeatherDatabaseCache *cache;
-    inline void check_cache_for_update(void) const;
-
-    bool Thunderstorm;                 //is there a thunderstorm near by?
-    FGThunderstorm *theThunderstorm;   //pointer to the thunderstorm.
-
-public:
-    /************************************************************************/
-    /* for tieing them to the property system                              */
-    /************************************************************************/
-    inline WeatherPrecision get_wind_north() const;
-    inline WeatherPrecision get_wind_east() const;
-    inline WeatherPrecision get_wind_up() const;
-    inline WeatherPrecision get_temperature() const;
-    inline WeatherPrecision get_air_pressure() const;
-    inline WeatherPrecision get_vapor_pressure() const;
-    inline WeatherPrecision get_air_density() const;
-
-    static FGLocalWeatherDatabase *theFGLocalWeatherDatabase;  
-    
-    enum DatabaseWorkingType {
-       use_global,     //use global database for data !!obsolete!!
-       use_internet,   //use the weather data that came from the internet
-       manual,         //use only user inputs
-       distant,        //use distant information, e.g. like LAN when used in
-                       //a multiplayer environment
-       random,         //generate weather randomly
-       default_mode    //use only default values
-    };
-
-    DatabaseWorkingType DatabaseStatus;
-
-    void init( const WeatherPrecision visibility,
-              const DatabaseWorkingType type,
-              const string &root );
-
-    /************************************************************************/
-    /* Constructor and Destructor                                          */
-    /************************************************************************/
-    FGLocalWeatherDatabase(
-       const sgVec3&             position,
-       const string&             root,
-       const DatabaseWorkingType type       = PREFERED_WORKING_TYPE,
-       const WeatherPrecision    visibility = DEFAULT_WEATHER_VISIBILITY)
-    {
-        cache = new _FGLocalWeatherDatabaseCache;
-       sgCopyVec3( cache->last_known_position, position );
-
-       init( visibility, type, root );
-
-       theFGLocalWeatherDatabase = this;
-    }
-
-    FGLocalWeatherDatabase(
-       const WeatherPrecision    position_lat,
-       const WeatherPrecision    position_lon,
-       const WeatherPrecision    position_alt,
-       const string&             root,
-       const DatabaseWorkingType type       = PREFERED_WORKING_TYPE,
-       const WeatherPrecision    visibility = DEFAULT_WEATHER_VISIBILITY)
-    {
-        cache = new _FGLocalWeatherDatabaseCache;
-       sgSetVec3( cache->last_known_position, position_lat, position_lon, position_alt );
-
-       init( visibility, type, root );
-
-       theFGLocalWeatherDatabase = this;
-    }
-
-    ~FGLocalWeatherDatabase();
-
-    /************************************************************************/
-    /* reset the whole database                                                    */
-    /************************************************************************/
-    void reset(const DatabaseWorkingType type = PREFERED_WORKING_TYPE);
-
-    /************************************************************************/
-    /* update the database. Since the last call we had dt seconds          */
-    /************************************************************************/
-    void update(const WeatherPrecision dt);                    //time has changed
-    void update(const sgVec3& p);                              //position has  changed
-    void update(const sgVec3& p, const WeatherPrecision dt);   //time and/or position has changed
-
-    /************************************************************************/
-    /* define methods requited for FGSubsystem                             */
-    /************************************************************************/
-    virtual void init () { /* do nothing; that's done in the constructor */ };
-    virtual void bind ();
-    virtual void unbind ();
-    virtual void update (int dt) { update((float) dt); };
-
-    /************************************************************************/
-    /* Get the physical properties on the specified point p                */
-    /************************************************************************/
-#ifdef macintosh
-    /* fix a problem with mw compilers in that they don't know the
-       difference between the next two methods. Since the first one
-       doesn't seem to be used anywhere, I commented it out. This is
-       supposed to be fixed in the forthcoming CodeWarrior Release
-       6. */
-#else
-    FGPhysicalProperties get(const sgVec2& p) const;
-#endif
-    FGPhysicalProperty   get(const sgVec3& p) const;
-
-    WeatherPrecision     getAirDensity(const sgVec3& p) const;
-    
-    /************************************************************************/
-    /* Add a weather feature at the point p and surrounding area           */
-    /************************************************************************/
-    // !! Adds aren't supported anymore !!
-
-    void setSnowRainIntensity   (const WeatherPrecision x, const sgVec2& p);
-    void setSnowRainType        (const SnowRainType x,     const sgVec2& p);
-    void setLightningProbability(const WeatherPrecision x, const sgVec2& p);
-
-    void setProperties(const FGPhysicalProperties2D& x);    //change a property
-
-    /************************************************************************/
-    /* get/set weather visibility                                          */
-    /************************************************************************/
-    void             setWeatherVisibility(const WeatherPrecision visibility);
-    WeatherPrecision getWeatherVisibility(void) const;
-
-    /************************************************************************/
-    /* figure out if there's a thunderstorm that has to be taken care of    */
-    /************************************************************************/
-    void updateThunderstorm(const float dt)
-    {
-       if (Thunderstorm == false)
-           return;
-
-       theThunderstorm->update( dt );
-    }
-};
-
-extern FGLocalWeatherDatabase *WeatherDatabase;
-void fgUpdateWeatherDatabase(void);
-
-/****************************************************************************/
-/* get/set weather visibility                                              */
-/****************************************************************************/
-void inline FGLocalWeatherDatabase::setWeatherVisibility(const WeatherPrecision visibility)
-{
-    if (visibility >= MINIMUM_WEATHER_VISIBILITY)
-       WeatherVisibility = visibility;
-    else
-       WeatherVisibility = MINIMUM_WEATHER_VISIBILITY;
-}
-
-WeatherPrecision inline FGLocalWeatherDatabase::getWeatherVisibility(void) const
-{
-    return WeatherVisibility;
-}
-
-inline void FGLocalWeatherDatabase::check_cache_for_update(void) const
-{
-  if ( ( cache->last_known_position[0] == cache->latitude_deg->getFloatValue() ) &&
-       ( cache->last_known_position[1] == cache->longitude_deg->getFloatValue() ) &&
-       ( cache->last_known_position[2] == cache->altitude_ft->getFloatValue() * SG_FEET_TO_METER ) )
-    return; //nothing to do 
-
-  sgVec3 position = { cache->latitude_deg->getFloatValue(), 
-                      cache->longitude_deg->getFloatValue(), 
-                      cache->altitude_ft->getFloatValue() * SG_FEET_TO_METER };
-
-  sgCopyVec3(cache->last_known_position, position);
-  cache->last_known_property = get(position);
-}
-
-inline WeatherPrecision FGLocalWeatherDatabase::get_wind_north() const
-{
-  check_cache_for_update();
-
-  return cache->last_known_property.Wind[0];
-}
-
-inline WeatherPrecision FGLocalWeatherDatabase::get_wind_east() const
-{
-  check_cache_for_update();
-
-  return cache->last_known_property.Wind[1];
-}
-
-inline WeatherPrecision FGLocalWeatherDatabase::get_wind_up() const
-{
-  check_cache_for_update();
-
-  return cache->last_known_property.Wind[2];
-}
-
-inline WeatherPrecision FGLocalWeatherDatabase::get_temperature() const
-{
-  check_cache_for_update();
-
-  return cache->last_known_property.Temperature;
-}
-
-inline WeatherPrecision FGLocalWeatherDatabase::get_air_pressure() const
-{
-  check_cache_for_update();
-
-  return cache->last_known_property.AirPressure;
-}
-
-inline WeatherPrecision FGLocalWeatherDatabase::get_vapor_pressure() const
-{
-  check_cache_for_update();
-
-  return cache->last_known_property.VaporPressure;
-}
-
-inline WeatherPrecision FGLocalWeatherDatabase::get_air_density() const
-{
-  // check_for_update();
-  // not required, as the called functions will do that
-
-  return (get_air_pressure()*FG_WEATHER_DEFAULT_AIRDENSITY*FG_WEATHER_DEFAULT_TEMPERATURE) / 
-        (get_temperature()*FG_WEATHER_DEFAULT_AIRPRESSURE);
-}
-
-
-/****************************************************************************/
-#endif /*FGLocalWeatherDatabase_H*/
diff --git a/src/WeatherCM/FGPhysicalProperties.cpp b/src/WeatherCM/FGPhysicalProperties.cpp
deleted file mode 100644 (file)
index 636ff13..0000000
+++ /dev/null
@@ -1,322 +0,0 @@
-/*****************************************************************************
-
- Module:       FGPhysicalProperties.cpp
- Author:       Christian Mayer
- Date started: 28.05.99
- Called by:    main program
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Initialice the FGPhysicalProperties struct to something sensible(?)
-
-HISTORY
-------------------------------------------------------------------------------
-29.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-*****************************************************************************/
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include "FGPhysicalProperties.h"
-#include "FGWeatherDefs.h"
-
-#include "FGWeatherUtils.h"
-
-/****************************************************************************/
-/********************************** CODE ************************************/
-/****************************************************************************/
-FGPhysicalProperties::FGPhysicalProperties()
-{
-    sgVec3 zero;
-    sgZeroVec3( zero );
-    /************************************************************************/
-    /* This standart constructor fills the class with a standard weather    */
-    /************************************************************************/
-
-    Wind[-1000.0] = FGWindItem(zero);              //no Wind by default
-    Wind[10000.0] = FGWindItem(zero);              //no Wind by default
-
-    Turbulence[-1000.0] = FGTurbulenceItem(zero);   //no Turbulence by default
-    Turbulence[10000.0] = FGTurbulenceItem(zero);   //no Turbulence by default
-
-    //Initialice with the CINA atmosphere
-    Temperature[    0.0] = +15.0 + 273.16;  
-    Temperature[11000.0] = -56.5 + 273.16;                         
-    Temperature[20000.0] = -56.5 + 273.16;                         
-
-    AirPressure = FGAirPressureItem(101325.0); 
-
-    VaporPressure[-1000.0] = FG_WEATHER_DEFAULT_VAPORPRESSURE;   //in Pa (I *only* accept SI!)
-    VaporPressure[10000.0] = FG_WEATHER_DEFAULT_VAPORPRESSURE;   //in Pa (I *only* accept SI!)
-
-    //Clouds.insert(FGCloudItem())    => none
-    SnowRainIntensity = 0.0;     
-    snowRainType = Rain;           
-    LightningProbability = 0.0;
-}
-
-/*
-The Methods:
-
-    WeatherPrecision getWind_x( int number ) const;
-    WeatherPrecision getWind_y( int number ) const;
-    WeatherPrecision getWind_z( int number ) const;
-    WeatherPrecision getWind_a( int number ) const;
-    void setWind_x( int number, WeatherPrecision x);
-    void setWind_y( int number, WeatherPrecision y);
-    void setWind_z( int number, WeatherPrecision z);
-    void setWind_a( int number, WeatherPrecision a);
-    WeatherPrecision getTurbulence_x( int number ) const;
-    WeatherPrecision getTurbulence_y( int number ) const;
-    WeatherPrecision getTurbulence_z( int number ) const;
-    WeatherPrecision getTurbulence_a( int number ) const;
-    void setTurbulence_x( int number, WeatherPrecision x);
-    void setTurbulence_y( int number, WeatherPrecision y);
-    void setTurbulence_z( int number, WeatherPrecision z);
-    void setTurbulence_a( int number, WeatherPrecision a);
-    WeatherPrecision getTemperature_x( int number ) const;
-    WeatherPrecision getTemperature_a( int number ) const;
-    void setTemperature_x( int number, WeatherPrecision x);
-    void setTemperature_a( int number, WeatherPrecision a);
-    WeatherPrecision getVaporPressure_x( int number ) const;
-    WeatherPrecision getVaporPressure_a( int number ) const;
-    void setVaporPressure_x( int number, WeatherPrecision x);
-    void setVaporPressure_a( int number, WeatherPrecision a);
-
-are in the extra file FGPhysicalProperties_bind.cpp
-*/
-
-unsigned int FGPhysicalProperties::getNumberOfCloudLayers(void) const
-{
-    return Clouds.size();
-}
-
-FGCloudItem FGPhysicalProperties::getCloudLayer(unsigned int nr) const
-{
-    map<WeatherPrecision,FGCloudItem>::const_iterator CloudsIt = Clouds.begin();
-
-    //set the iterator to the 'nr'th entry
-    for (; nr > 0; nr--)
-       CloudsIt++;
-
-    return CloudsIt->second;
-}
-
-ostream& operator<< ( ostream& out, const FGPhysicalProperties2D& p )
-{
-    typedef map<FGPhysicalProperties::Altitude, FGWindItem      >::const_iterator wind_iterator;
-    typedef map<FGPhysicalProperties::Altitude, FGTurbulenceItem>::const_iterator turbulence_iterator;
-    typedef map<FGPhysicalProperties::Altitude, WeatherPrecision>::const_iterator scalar_iterator;
-
-    out << "Position: (" << p.p[0] << ", " << p.p[1] << ", " << p.p[2] << ")\n";
-    
-    out << "Stored Wind: ";
-    for (wind_iterator       WindIt = p.Wind.begin(); 
-                            WindIt != p.Wind.end(); 
-                            WindIt++)
-       out << "(" << WindIt->second.x() << ", " << WindIt->second.y() << ", " << WindIt->second.z() << ") m/s at (" << WindIt->first << ") m; ";
-    out << "\n";
-
-    out << "Stored Turbulence: ";
-    for (turbulence_iterator TurbulenceIt = p.Turbulence.begin(); 
-                            TurbulenceIt != p.Turbulence.end(); 
-                            TurbulenceIt++)
-       out << "(" << TurbulenceIt->second.x() << ", " << TurbulenceIt->second.y() << ", " << TurbulenceIt->second.z() << ") m/s at (" << TurbulenceIt->first << ") m; ";
-    out << "\n";
-
-    out << "Stored Temperature: ";
-    for (scalar_iterator     TemperatureIt = p.Temperature.begin(); 
-                            TemperatureIt != p.Temperature.end(); 
-                            TemperatureIt++)
-       out << Kelvin2Celsius(TemperatureIt->second) << " degC at " << TemperatureIt->first << "m; ";
-    out << "\n";
-
-    out << "Stored AirPressure: ";
-    out << p.AirPressure.getValue()/100.0 << " hPa at " << 0.0 << "m; ";
-    out << "\n";
-
-    out << "Stored VaporPressure: ";
-    for (scalar_iterator     VaporPressureIt = p.VaporPressure.begin(); 
-                            VaporPressureIt != p.VaporPressure.end(); 
-                            VaporPressureIt++)
-       out << VaporPressureIt->second/100.0 << " hPa at " << VaporPressureIt->first << "m; ";
-    out << "\n";
-
-    return out << "\n";
-}
-
-
-inline double F(const WeatherPrecision factor, const WeatherPrecision a, const WeatherPrecision b, const WeatherPrecision r, const WeatherPrecision x)
-{
-    const double c = 1.0 / (-b + a * r);
-    return factor * c * ( 1.0 / (r + x) + a * c * log(fabs((r + x) * (b + a * x))) );
-}
-
-WeatherPrecision FGPhysicalProperties::AirPressureAt(const WeatherPrecision x) const
-{
-    const double rho0 = (AirPressure.getValue()*FG_WEATHER_DEFAULT_AIRDENSITY*FG_WEATHER_DEFAULT_TEMPERATURE)/(TemperatureAt(0)*FG_WEATHER_DEFAULT_AIRPRESSURE);
-    const double G = 6.673e-11;    //Gravity; in m^3 kg^-1 s^-2
-    const double m = 5.977e24;     //mass of the earth in kg
-    const double r = 6368e3;       //radius of the earth in metres
-    const double factor = -(rho0 * TemperatureAt(0) * G * m) / AirPressure.getValue();
-
-    double a, b, FF = 0.0;
-
-    //ok, integrate from 0 to a now.
-    if (Temperature.size() < 2)
-    {  //take care of the case that there aren't enough points
-       //actually this should be impossible...
-
-       if (Temperature.size() == 0)
-       {
-           cerr << "ERROR in FGPhysicalProperties: Air pressure at " << x << " metres altiude requested,\n";
-           cerr << "      but there isn't enough data stored! No temperature is aviable!\n";
-           return FG_WEATHER_DEFAULT_AIRPRESSURE;
-       }
-
-       //ok, I've got only one point. So I'm assuming that that temperature is
-       //the same for all altitudes. 
-       a = 1;
-       b = TemperatureAt(0);
-       FF += F(factor, a, b, r, x  );
-       FF -= F(factor, a, b, r, 0.0);
-    }
-    else
-    {  //I've got at least two entries now
-       
-       //integrate 'backwards' by integrating the strip ]n,x] first, then ]n-1,n] ... to [0,n-m]
-       
-       if (x>=0.0)
-       {
-           map<WeatherPrecision, WeatherPrecision>::const_iterator temp2 = Temperature.upper_bound(x);
-           map<WeatherPrecision, WeatherPrecision>::const_iterator temp1 = temp2; temp1--;
-           
-           if (temp1->first == x)
-           {   //ignore that interval
-               temp1--; temp2--;
-           }
-
-           bool first_pass = true;
-           while(true)
-           {
-               if (temp2 == Temperature.end())
-               {
-                   //temp2 doesn't exist. So cheat by assuming that the slope is the
-                   //same as between the two earlier temperatures
-                   temp1--; temp2--;
-                   a = (temp2->second - temp1->second)/(temp2->first - temp1->first);
-                   b = temp1->second - a * temp1->first;
-                   temp1++; temp2++;
-               }
-               else
-               {
-                   a = (temp2->second - temp1->second)/(temp2->first - temp1->first);
-                   b = temp1->second - a * temp1->first;
-               }
-               
-               if (first_pass)
-               {
-                   
-                   FF += F(factor, a, b, r, x);
-                   first_pass = false;
-               }
-               else
-               {
-                   FF += F(factor, a, b, r, temp2->first);
-               }
-
-               if (temp1->first>0.0)
-               {
-                   FF -= F(factor, a, b, r, temp1->first);
-                   temp1--; temp2--;
-               }
-               else
-               {
-                   FF -= F(factor, a, b, r, 0.0);
-                   return AirPressure.getValue() * exp(FF);
-               }
-           }
-       }
-       else
-       {   //ok x is smaller than 0.0, so do everything in reverse
-           map<WeatherPrecision, WeatherPrecision>::const_iterator temp2 = Temperature.upper_bound(x);
-           map<WeatherPrecision, WeatherPrecision>::const_iterator temp1 = temp2; temp1--;
-           
-           bool first_pass = true;
-           while(true)
-           {
-               if (temp2 == Temperature.begin())
-               {
-                   //temp1 doesn't exist. So cheat by assuming that the slope is the
-                   //same as between the two earlier temperatures
-                   temp1 = Temperature.begin(); temp2++;
-                   a = (temp2->second - temp1->second)/(temp2->first - temp1->first);
-                   b = temp1->second - a * temp1->first;
-                   temp2--;
-               }
-               else
-               {
-                   a = (temp2->second - temp1->second)/(temp2->first - temp1->first);
-                   b = temp1->second - a * temp1->first;
-               }
-               
-               if (first_pass)
-               {
-                   
-                   FF += F(factor, a, b, r, x);
-                   first_pass = false;
-               }
-               else
-               {
-                   FF += F(factor, a, b, r, temp2->first);
-               }
-               
-               if (temp2->first<0.0)
-               {
-                   FF -= F(factor, a, b, r, temp1->first);
-                   
-                   if (temp2 == Temperature.begin())
-                   {
-                       temp1 = Temperature.begin(); temp2++;
-                   }
-                   else
-                   {
-                       temp1++; temp2++;
-                   }
-               }
-               else
-               {
-                   FF -= F(factor, a, b, r, 0.0);
-                   return AirPressure.getValue() * exp(FF);
-               }
-           }
-       }
-    }
-    
-    return AirPressure.getValue() * exp(FF);
-}
diff --git a/src/WeatherCM/FGPhysicalProperties.h b/src/WeatherCM/FGPhysicalProperties.h
deleted file mode 100644 (file)
index 2e39d5b..0000000
+++ /dev/null
@@ -1,416 +0,0 @@
-/*****************************************************************************
-
- Header:       FGPhysicalProperties.h  
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Define the simulated physical properties of the weather
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     Changed struct to class 
-20.06.1999 Christian Mayer     added lots of consts
-30.06.1999 Christian Mayer     STL portability
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-15.12.1999 Christian Mayer     changed the air pressure calculation to a much
-                               more realistic formula. But as I need for that
-                               the temperature I moved the code to 
-                               FGPhysicalProperties
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGPhysicalProperties_H
-#define FGPhysicalProperties_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <simgear/compiler.h>
-
-#ifdef HAVE_WINDOWS_H
-#  include <windows.h>
-#endif
-
-#include STL_IOSTREAM
-#include <vector>
-#include <map>
-
-#include <plib/sg.h>
-
-#include "FGWeatherDefs.h"
-
-#include "FGAirPressureItem.h"
-#include "FGWindItem.h"
-#include "FGTurbulenceItem.h"
-
-#include "FGCloudItem.h"
-#include "FGSnowRain.h"
-
-SG_USING_STD(vector);
-SG_USING_STD(map);
-SG_USING_NAMESPACE(std);
-
-/****************************************************************************/
-/* FOREWARD DEFINITIONS                                                            */
-/****************************************************************************/
-class FGPhysicalProperties2D;
-ostream& operator<< ( ostream& out, const FGPhysicalProperties2D& p );
-
-class FGPhysicalProperties
-{
-public:
-    typedef WeatherPrecision Altitude;  
-
-    map<Altitude,FGWindItem>       Wind;           //all Wind vectors
-    map<Altitude,FGTurbulenceItem> Turbulence;     //all Turbulence vectors
-    map<Altitude,WeatherPrecision> Temperature;            //in deg. Kelvin (I *only* accept SI!)
-    FGAirPressureItem              AirPressure;            //in Pascal (I *only* accept SI!)
-    map<Altitude,WeatherPrecision> VaporPressure;   //in Pascal (I *only* accept SI!)
-
-    map<Altitude,FGCloudItem>      Clouds;         //amount of covering and type
-
-    WeatherPrecision              SnowRainIntensity;       //this also stands for hail, snow,...
-    SnowRainType                  snowRainType;            
-    WeatherPrecision              LightningProbability;    //in lightnings per second   
-
-    FGPhysicalProperties();   //consructor to fill it with FG standart weather
-
-    //return values at specified altitudes
-    void            WindAt         (sgVec3 ret, const WeatherPrecision a) const;
-    void            TurbulenceAt   (sgVec3 ret, const WeatherPrecision a) const;
-    WeatherPrecision TemperatureAt  (const WeatherPrecision a) const;
-    WeatherPrecision AirPressureAt  (const WeatherPrecision x) const;  //x is used here instead of a on purpose
-    WeatherPrecision VaporPressureAt(const WeatherPrecision a) const;
-
-    //for easier access to the cloud stuff:
-    unsigned int getNumberOfCloudLayers(void) const;
-    FGCloudItem  getCloudLayer(unsigned int nr) const;
-    
-    FGPhysicalProperties& operator =  ( const FGPhysicalProperties& p ); 
-    FGPhysicalProperties& operator *= ( const WeatherPrecision      d ); 
-    FGPhysicalProperties& operator += ( const FGPhysicalProperties& p ); 
-    FGPhysicalProperties& operator -= ( const FGPhysicalProperties& p ); 
-
-    //for easy binding to the property system
-    WeatherPrecision getWind_x( int number ) const;
-    WeatherPrecision getWind_y( int number ) const;
-    WeatherPrecision getWind_z( int number ) const;
-    WeatherPrecision getWind_a( int number ) const;
-    void setWind_x( int number, WeatherPrecision x);
-    void setWind_y( int number, WeatherPrecision y);
-    void setWind_z( int number, WeatherPrecision z);
-    void setWind_a( int number, WeatherPrecision a);
-    WeatherPrecision getTurbulence_x( int number ) const;
-    WeatherPrecision getTurbulence_y( int number ) const;
-    WeatherPrecision getTurbulence_z( int number ) const;
-    WeatherPrecision getTurbulence_a( int number ) const;
-    void setTurbulence_x( int number, WeatherPrecision x);
-    void setTurbulence_y( int number, WeatherPrecision y);
-    void setTurbulence_z( int number, WeatherPrecision z);
-    void setTurbulence_a( int number, WeatherPrecision a);
-    WeatherPrecision getTemperature_x( int number ) const;
-    WeatherPrecision getTemperature_a( int number ) const;
-    void setTemperature_x( int number, WeatherPrecision x);
-    void setTemperature_a( int number, WeatherPrecision a);
-    WeatherPrecision getVaporPressure_x( int number ) const;
-    WeatherPrecision getVaporPressure_a( int number ) const;
-    void setVaporPressure_x( int number, WeatherPrecision x);
-    void setVaporPressure_a( int number, WeatherPrecision a);
-};
-
-class FGPhysicalProperties2D : public FGPhysicalProperties
-{
-public:
-    sgVec2 p;      //position of the property (lat/lon)
-    friend ostream& operator<< ( ostream& out, const FGPhysicalProperties2D& p );
-
-    FGPhysicalProperties2D() {}
-
-    FGPhysicalProperties2D(const FGPhysicalProperties& prop, const sgVec2& pos) 
-    {
-       Wind = prop.Wind; 
-       Turbulence = prop.Turbulence;
-       Temperature = prop.Temperature;
-       AirPressure = prop.AirPressure; 
-       VaporPressure = prop.VaporPressure; 
-       sgCopyVec2(p, pos);
-    }
-};
-
-typedef vector<FGPhysicalProperties>                 FGPhysicalPropertiesVector;
-typedef FGPhysicalPropertiesVector::iterator         FGPhysicalPropertiesVectorIt;
-typedef FGPhysicalPropertiesVector::const_iterator   FGPhysicalPropertiesVectorConstIt;
-
-typedef vector<FGPhysicalProperties2D>               FGPhysicalProperties2DVector;
-typedef FGPhysicalProperties2DVector::iterator       FGPhysicalProperties2DVectorIt;
-typedef FGPhysicalProperties2DVector::const_iterator FGPhysicalProperties2DVectorConstIt;
-
-
-
-inline FGPhysicalProperties& FGPhysicalProperties::operator = ( const FGPhysicalProperties& p )
-{
-    Wind          = p.Wind; 
-    Turbulence    = p.Turbulence; 
-    Temperature   = p.Temperature;
-    AirPressure   = p.AirPressure; 
-    VaporPressure = p.VaporPressure; 
-    return *this;
-}
-
-inline FGPhysicalProperties& FGPhysicalProperties::operator *= ( const WeatherPrecision d )
-{
-    typedef map<FGPhysicalProperties::Altitude, FGWindItem      >::iterator wind_iterator;
-    typedef map<FGPhysicalProperties::Altitude, FGTurbulenceItem>::iterator turbulence_iterator;
-    typedef map<FGPhysicalProperties::Altitude, WeatherPrecision>::iterator scalar_iterator;
-
-    for (wind_iterator       WindIt = Wind.begin(); 
-                            WindIt != Wind.end(); 
-                            WindIt++)
-       WindIt->second*= d;
-
-    for (turbulence_iterator TurbulenceIt = Turbulence.begin(); 
-                            TurbulenceIt != Turbulence.end(); 
-                            TurbulenceIt++)
-       TurbulenceIt->second *= d;
-
-    for (scalar_iterator     TemperatureIt = Temperature.begin(); 
-                             TemperatureIt != Temperature.end(); 
-                             TemperatureIt++)
-       TemperatureIt->second *= d;
-
-    AirPressure *= d;
-
-    for (scalar_iterator     VaporPressureIt = VaporPressure.begin(); 
-                             VaporPressureIt != VaporPressure.end(); 
-                             VaporPressureIt++)
-       VaporPressureIt->second *= d;
-
-    return *this;
-}
-
-inline FGPhysicalProperties& FGPhysicalProperties::operator += (const FGPhysicalProperties& p)
-{
-    typedef map<FGPhysicalProperties::Altitude, FGWindItem      >::const_iterator wind_iterator;
-    typedef map<FGPhysicalProperties::Altitude, FGTurbulenceItem>::const_iterator turbulence_iterator;
-    typedef map<FGPhysicalProperties::Altitude, WeatherPrecision>::const_iterator scalar_iterator;
-
-    for (wind_iterator       WindIt = p.Wind.begin(); 
-                            WindIt != p.Wind.end(); 
-                            WindIt++)
-       if (!Wind.insert(*WindIt).second)           //when it's not inserted => it's already existing
-           Wind[WindIt->first] += WindIt->second;  //=> add the value
-           
-    for (turbulence_iterator TurbulenceIt = p.Turbulence.begin(); 
-                            TurbulenceIt != p.Turbulence.end(); 
-                            TurbulenceIt++)
-       if (!Turbulence.insert(*TurbulenceIt).second)   
-           Turbulence[TurbulenceIt->first] += TurbulenceIt->second;
-
-    for (scalar_iterator     TemperatureIt = p.Temperature.begin(); 
-                             TemperatureIt != p.Temperature.end(); 
-                             TemperatureIt++)
-       if (!Temperature.insert(*TemperatureIt).second) 
-           Temperature[TemperatureIt->first] += TemperatureIt->second;
-           
-    AirPressure += p.AirPressure.getValue();
-           
-    for (scalar_iterator     VaporPressureIt = p.VaporPressure.begin(); 
-                             VaporPressureIt != p.VaporPressure.end(); 
-                             VaporPressureIt++)
-       if (!VaporPressure.insert(*VaporPressureIt).second)     
-           VaporPressure[VaporPressureIt->first] += VaporPressureIt->second;
-
-    return *this;
-}
-
-// slightly modified version that also makes the Mac happy
-inline FGPhysicalProperties& FGPhysicalProperties::operator -= (const FGPhysicalProperties& p)
-{
-    typedef map<FGPhysicalProperties::Altitude, FGWindItem>::const_iterator wind_iterator;
-    typedef map<FGPhysicalProperties::Altitude, FGTurbulenceItem>::const_iterator turbulence_iterator;
-    typedef map<FGPhysicalProperties::Altitude, WeatherPrecision>::const_iterator scalar_iterator;
-    
-    // types to replace make_pair
-    typedef map<FGPhysicalProperties::Altitude, FGWindItem>::value_type wind_type;
-    typedef map<FGPhysicalProperties::Altitude,        FGTurbulenceItem>::value_type turb_type;
-    typedef map<FGPhysicalProperties::Altitude,        WeatherPrecision>::value_type weather_type;
-    
-    for (wind_iterator WindIt = p.Wind.begin();
-        WindIt != p.Wind.end();
-        WindIt++)
-       if (!Wind.insert( wind_type(WindIt->first, -WindIt->second) ).second)
-           // when it's not inserted => it's already existing
-           Wind[WindIt->first] -= WindIt->second; //=> substract the value
-
-    for (turbulence_iterator TurbulenceIt = p.Turbulence.begin();
-        TurbulenceIt != p.Turbulence.end();
-        TurbulenceIt++)
-       if (!Turbulence.insert( turb_type(TurbulenceIt->first, -TurbulenceIt->second) ).second)
-           Turbulence[TurbulenceIt->first] -= TurbulenceIt->second;
-    
-    for (scalar_iterator TemperatureIt = p.Temperature.begin();
-        TemperatureIt != p.Temperature.end();
-        TemperatureIt++)
-       if (!Temperature.insert( weather_type(TemperatureIt->first, -TemperatureIt->second) ).second)
-           Temperature[TemperatureIt->first] -= TemperatureIt->second;
-    
-    AirPressure -= p.AirPressure.getValue();
-    
-    for (scalar_iterator VaporPressureIt = p.VaporPressure.begin();
-        VaporPressureIt != p.VaporPressure.end();
-        VaporPressureIt++)
-       if (!VaporPressure.insert( weather_type(VaporPressureIt->first, -VaporPressureIt->second) ).second)
-           VaporPressure[VaporPressureIt->first] -= VaporPressureIt->second;
-
-    return *this;
-}
-
-#if 0 // old version
-inline FGPhysicalProperties& FGPhysicalProperties::operator -= (const FGPhysicalProperties& p)
-{
-    typedef map<FGPhysicalProperties::Altitude, FGWindItem      >::const_iterator wind_iterator;
-    typedef map<FGPhysicalProperties::Altitude, FGTurbulenceItem>::const_iterator turbulence_iterator;
-    typedef map<FGPhysicalProperties::Altitude, WeatherPrecision>::const_iterator scalar_iterator;
-
-    for (wind_iterator       WindIt = p.Wind.begin(); 
-                            WindIt != p.Wind.end(); 
-                            WindIt++)
-       if (!Wind.insert( make_pair(WindIt->first, -WindIt->second) ).second)   //when it's not inserted => it's already existing
-           Wind[WindIt->first] -= WindIt->second;                              //=> substract the value
-           
-    for (turbulence_iterator TurbulenceIt = p.Turbulence.begin(); 
-                            TurbulenceIt != p.Turbulence.end(); 
-                            TurbulenceIt++)
-       if (!Turbulence.insert( make_pair(TurbulenceIt->first, -TurbulenceIt->second) ).second) 
-           Turbulence[TurbulenceIt->first] -= TurbulenceIt->second;
-           
-    for (scalar_iterator     TemperatureIt = p.Temperature.begin(); 
-                             TemperatureIt != p.Temperature.end(); 
-                             TemperatureIt++)
-       if (!Temperature.insert( make_pair(TemperatureIt->first, -TemperatureIt->second) ).second)      
-           Temperature[TemperatureIt->first] -= TemperatureIt->second;
-           
-    AirPressure -= p.AirPressure.getValue();
-           
-    for (scalar_iterator     VaporPressureIt = p.VaporPressure.begin(); 
-                             VaporPressureIt != p.VaporPressure.end(); 
-                             VaporPressureIt++)
-       if (!VaporPressure.insert( make_pair(VaporPressureIt->first, -VaporPressureIt->second) ).second)        
-           VaporPressure[VaporPressureIt->first] -= VaporPressureIt->second;
-
-
-    return *this;
-}
-#endif
-
-inline void FGPhysicalProperties::WindAt(sgVec3 ret, const WeatherPrecision a) const
-{
-    typedef map<FGPhysicalProperties::Altitude, FGWindItem>::const_iterator vector_iterator;
-
-    vector_iterator it = Wind.lower_bound(a);
-    vector_iterator it2 = it;
-    it--;
-
-    //now I've got it->alt < a < it2->alt so I can interpolate
-    sgSubVec3(ret, *it2->second.getValue(), *it->second.getValue());
-    sgScaleVec3(ret, (a - it2->first) / (it2->first - it->first));
-    sgAddVec3(ret, *it2->second.getValue());
-}
-
-inline void FGPhysicalProperties::TurbulenceAt(sgVec3 ret, const WeatherPrecision a) const
-{
-    typedef map<FGPhysicalProperties::Altitude, FGTurbulenceItem>::const_iterator vector_iterator;
-
-    vector_iterator it = Turbulence.lower_bound(a);
-    vector_iterator it2 = it;
-    it--;
-
-    //now I've got it->alt < a < it2->alt so I can interpolate
-    sgSubVec3(ret, *it2->second.getValue(), *it->second.getValue());
-    sgScaleVec3(ret, (a - it2->first) / (it2->first - it->first));
-    sgAddVec3(ret, *it2->second.getValue());
-}
-
-inline WeatherPrecision FGPhysicalProperties::TemperatureAt(const WeatherPrecision a) const
-{
-    typedef map<FGPhysicalProperties::Altitude, WeatherPrecision>::const_iterator scalar_iterator;
-
-    scalar_iterator it = Temperature.lower_bound(a);
-    scalar_iterator it2 = it;
-    it--;
-
-    //now I've got it->alt < a < it2->alt so I can interpolate
-    return ( (it2->second - it->second)/(it2->first - it->first) ) * (a - it2->first) + it2->second; 
-}
-
-//inline WeatherPrecision FGPhysicalProperties::AirPressureAt(const WeatherPrecision x) const
-//moved to FGPhysicalProperties.cpp as it got too complex to inline
-
-inline WeatherPrecision FGPhysicalProperties::VaporPressureAt(const WeatherPrecision a) const
-{
-    typedef map<FGPhysicalProperties::Altitude, WeatherPrecision>::const_iterator scalar_iterator;
-
-    scalar_iterator it = VaporPressure.lower_bound(a);
-    scalar_iterator it2 = it;
-    it--;
-
-    //now I've got it->alt < a < it2->alt so I can interpolate
-    return ( (it2->second - it->second)/(it2->first - it->first) ) * (a - it2->first) + it2->second; 
-}
-
-
-inline FGPhysicalProperties operator * (FGPhysicalProperties a, const WeatherPrecision b)
-{
-    return a *= b;
-}
-
-inline FGPhysicalProperties operator * (const WeatherPrecision b, FGPhysicalProperties a)
-{
-    return a *= b;
-}
-
-inline FGPhysicalProperties operator + (FGPhysicalProperties a, const FGPhysicalProperties& b)
-{
-    return a += b;
-}
-
-inline FGPhysicalProperties operator - (FGPhysicalProperties a, const FGPhysicalProperties& b)
-{
-    return a -= b;
-}
-
-/****************************************************************************/
-#endif /*FGPhysicalProperties_H*/
-
diff --git a/src/WeatherCM/FGPhysicalProperties_bind.cpp b/src/WeatherCM/FGPhysicalProperties_bind.cpp
deleted file mode 100644 (file)
index cd351c6..0000000
+++ /dev/null
@@ -1,480 +0,0 @@
-/*****************************************************************************
-
- Module:       FGPhysicalProperties_bind.cpp
- Author:       Christian Mayer
- Date started: 15.03.02
- Called by:    main program
-
- -------- Copyright (C) 2002 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Initialice the FGPhysicalProperties struct to something sensible(?)
-
-HISTORY
-------------------------------------------------------------------------------
-15.03.2002 Christian Mayer     Created
-*****************************************************************************/
-
-#include "FGPhysicalProperties.h"
-
-
-WeatherPrecision FGPhysicalProperties::getWind_x( int number ) const
-{
-    if (number >= Wind.size())
-    {
-      cerr << "Error: There are " << Wind.size() << " entries for wind, but number " << number << " got requested!\n";
-      return 0.0;
-    }
-
-    map<Altitude,FGWindItem>::const_iterator it = Wind.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    return it->second.x();
-}
-
-void FGPhysicalProperties::setWind_x( int number, WeatherPrecision x)
-{
-    if (number >= Wind.size())
-    {
-      cerr << "Error: There are " << Wind.size() << " entries for wind, but number " << number << " got requested!\n";
-    }
-
-    map<Altitude,FGWindItem>::iterator it = Wind.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    it->second.x( x );
-}
-
-WeatherPrecision FGPhysicalProperties::getWind_y( int number ) const
-{
-    if (number >= Wind.size())
-    {
-      cerr << "Error: There are " << Wind.size() << " entries for wind, but number " << number << " got requested!\n";
-      return 0.0;
-    }
-
-    map<Altitude,FGWindItem>::const_iterator it = Wind.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    return it->second.y();
-}
-
-void FGPhysicalProperties::setWind_y( int number, WeatherPrecision y)
-{
-    if (number >= Wind.size())
-    {
-      cerr << "Error: There are " << Wind.size() << " entries for wind, but number " << number << " got requested!\n";
-    }
-
-    map<Altitude,FGWindItem>::iterator it = Wind.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    it->second.y( y );
-}
-
-WeatherPrecision FGPhysicalProperties::getWind_z( int number ) const
-{
-    if (number >= Wind.size())
-    {
-      cerr << "Error: There are " << Wind.size() << " entries for wind, but number " << number << " got requested!\n";
-      return 0.0;
-    }
-
-    map<Altitude,FGWindItem>::const_iterator it = Wind.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    return it->second.z();
-}
-
-void FGPhysicalProperties::setWind_z( int number, WeatherPrecision z)
-{
-    if (number >= Wind.size())
-    {
-      cerr << "Error: There are " << Wind.size() << " entries for wind, but number " << number << " got requested!\n";
-    }
-
-    map<Altitude,FGWindItem>::iterator it = Wind.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    it->second.z( z );
-}
-
-WeatherPrecision FGPhysicalProperties::getWind_a( int number ) const
-{
-    if (number >= Wind.size())
-    {
-      cerr << "Error: There are " << Wind.size() << " entries for wind, but number " << number << " got requested!\n";
-      return 0.0;
-    }
-
-    map<Altitude,FGWindItem>::const_iterator it = Wind.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    return it->first;
-}
-
-void FGPhysicalProperties::setWind_a( int number, WeatherPrecision a)
-{
-    if (number >= Wind.size())
-    {
-      cerr << "Error: There are " << Wind.size() << " entries for wind, but number " << number << " got requested!\n";
-    }
-
-    map<Altitude,FGWindItem>::iterator it = Wind.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    it->first;
-}
-
-WeatherPrecision FGPhysicalProperties::getTurbulence_x( int number ) const
-{
-    if (number >= Turbulence.size())
-    {
-      cerr << "Error: There are " << Turbulence.size() << " entries for Turbulence, but number " << number << " got requested!\n";
-      return 0.0;
-    }
-
-    map<Altitude,FGTurbulenceItem>::const_iterator it = Turbulence.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    return it->second.x();
-}
-
-void FGPhysicalProperties::setTurbulence_x( int number, WeatherPrecision x)
-{
-    if (number >= Turbulence.size())
-    {
-      cerr << "Error: There are " << Turbulence.size() << " entries for Turbulence, but number " << number << " got requested!\n";
-    }
-
-    map<Altitude,FGTurbulenceItem>::iterator it = Turbulence.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    it->second.x( x );
-}
-
-WeatherPrecision FGPhysicalProperties::getTurbulence_y( int number ) const
-{
-    if (number >= Turbulence.size())
-    {
-      cerr << "Error: There are " << Turbulence.size() << " entries for Turbulence, but number " << number << " got requested!\n";
-      return 0.0;
-    }
-
-    map<Altitude,FGTurbulenceItem>::const_iterator it = Turbulence.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    return it->second.y();
-}
-
-void FGPhysicalProperties::setTurbulence_y( int number, WeatherPrecision y)
-{
-    if (number >= Turbulence.size())
-    {
-      cerr << "Error: There are " << Turbulence.size() << " entries for Turbulence, but number " << number << " got requested!\n";
-    }
-
-    map<Altitude,FGTurbulenceItem>::iterator it = Turbulence.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    it->second.y( y );
-}
-
-WeatherPrecision FGPhysicalProperties::getTurbulence_z( int number ) const
-{
-    if (number >= Turbulence.size())
-    {
-      cerr << "Error: There are " << Turbulence.size() << " entries for Turbulence, but number " << number << " got requested!\n";
-      return 0.0;
-    }
-
-    map<Altitude,FGTurbulenceItem>::const_iterator it = Turbulence.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    return it->second.z();
-}
-
-void FGPhysicalProperties::setTurbulence_z( int number, WeatherPrecision z)
-{
-    if (number >= Turbulence.size())
-    {
-      cerr << "Error: There are " << Turbulence.size() << " entries for Turbulence, but number " << number << " got requested!\n";
-    }
-
-    map<Altitude,FGTurbulenceItem>::iterator it = Turbulence.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    it->second.z( z );
-}
-
-WeatherPrecision FGPhysicalProperties::getTurbulence_a( int number ) const
-{
-    if (number >= Turbulence.size())
-    {
-      cerr << "Error: There are " << Turbulence.size() << " entries for Turbulence, but number " << number << " got requested!\n";
-      return 0.0;
-    }
-
-    map<Altitude,FGTurbulenceItem>::const_iterator it = Turbulence.begin(); 
-
-    while( number > 0)
-    { 
-      it++;
-      number--;
-    }
-
-    return it->first;
-}
-
-void FGPhysicalProperties::setTurbulence_a( int number, WeatherPrecision a)
-{
-    if (number >= Turbulence.size())
-    {
-      cerr << "Error: There are " << Turbulence.size() << " entries for Turbulence, but number " << number << " got requested!\n";
-    }
-
-    map<Altitude,FGTurbulenceItem>::iterator it = Turbulence.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    it->first;
-}
-
-WeatherPrecision FGPhysicalProperties::getTemperature_x( int number ) const
-{
-    if (number >= Temperature.size())
-    {
-      cerr << "Error: There are " << Temperature.size() << " entries for Temperature, but number " << number << " got requested!\n";
-      return 0.0;
-    }
-
-    map<Altitude,WeatherPrecision>::const_iterator it = Temperature.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    return it->second;
-}
-
-void FGPhysicalProperties::setTemperature_x( int number, WeatherPrecision x)
-{
-    if (number >= Temperature.size())
-    {
-      cerr << "Error: There are " << Temperature.size() << " entries for Temperature, but number " << number << " got requested!\n";
-    }
-
-    map<Altitude,WeatherPrecision>::iterator it = Temperature.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    it->second = x;
-}
-
-WeatherPrecision FGPhysicalProperties::getTemperature_a( int number ) const
-{
-    if (number >= Temperature.size())
-    {
-      cerr << "Error: There are " << Temperature.size() << " entries for Temperature, but number " << number << " got requested!\n";
-      return 0.0;
-    }
-
-    map<Altitude,WeatherPrecision>::const_iterator it = Temperature.begin(); 
-
-    while( number > 0)
-    { 
-      it++;
-      number--;
-    }
-
-    return it->first;
-}
-
-void FGPhysicalProperties::setTemperature_a( int number, WeatherPrecision a)
-{
-    if (number >= Temperature.size())
-    {
-      cerr << "Error: There are " << Temperature.size() << " entries for Temperature, but number " << number << " got requested!\n";
-    }
-
-    map<Altitude,WeatherPrecision>::iterator it = Temperature.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    it->first;
-}
-WeatherPrecision FGPhysicalProperties::getVaporPressure_x( int number ) const
-{
-    if (number >= VaporPressure.size())
-    {
-      cerr << "Error: There are " << VaporPressure.size() << " entries for VaporPressure, but number " << number << " got requested!\n";
-      return 0.0;
-    }
-
-    map<Altitude,WeatherPrecision>::const_iterator it = VaporPressure.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    return it->second;
-}
-
-void FGPhysicalProperties::setVaporPressure_x( int number, WeatherPrecision x)
-{
-    if (number >= VaporPressure.size())
-    {
-      cerr << "Error: There are " << Temperature.size() << " entries for VaporPressure, but number " << number << " got requested!\n";
-    }
-
-    map<Altitude,WeatherPrecision>::iterator it = VaporPressure.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    it->second = x;
-}
-
-WeatherPrecision FGPhysicalProperties::getVaporPressure_a( int number ) const
-{
-    if (number >= VaporPressure.size())
-    {
-      cerr << "Error: There are " << VaporPressure.size() << " entries for VaporPressure, but number " << number << " got requested!\n";
-      return 0.0;
-    }
-
-    map<Altitude,WeatherPrecision>::const_iterator it = VaporPressure.begin(); 
-
-    while( number > 0)
-    { 
-      it++;
-      number--;
-    }
-
-    return it->first;
-}
-
-void FGPhysicalProperties::setVaporPressure_a( int number, WeatherPrecision a)
-{
-    if (number >= VaporPressure.size())
-    {
-      cerr << "Error: There are " << VaporPressure.size() << " entries for VaporPressure, but number " << number << " got requested!\n";
-    }
-
-    map<Altitude,WeatherPrecision>::iterator it = VaporPressure.begin(); 
-
-    while( number > 0)
-    {
-      it++;
-      number--;
-    }
-
-    it->first;
-}
diff --git a/src/WeatherCM/FGPhysicalProperty.cpp b/src/WeatherCM/FGPhysicalProperty.cpp
deleted file mode 100644 (file)
index 54c4a48..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*****************************************************************************
-
- Module:       FGPhysicalProperty.cpp
- Author:       Christian Mayer
- Date started: 28.05.99
- Called by:    main program
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Initialice the FGPhysicalProperty struct to something sensible(?)
-
-HISTORY
-------------------------------------------------------------------------------
-29.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-*****************************************************************************/
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include "FGWeatherDefs.h"
-#include "FGPhysicalProperty.h"
-
-/****************************************************************************/
-/********************************** CODE ************************************/
-/****************************************************************************/
-FGPhysicalProperty::FGPhysicalProperty()
-{
-    sgZeroVec3(Wind);          //Wind vector
-
-    sgZeroVec3(Turbulence);    //Turbulence vector
-
-    Temperature = FG_WEATHER_DEFAULT_TEMPERATURE;      //a nice warm day
-    AirPressure = FG_WEATHER_DEFAULT_AIRPRESSURE;      //mbar, that's ground level
-    VaporPressure = FG_WEATHER_DEFAULT_VAPORPRESSURE;  //that gives about 50% relatvie humidity
-}
-
-FGPhysicalProperty::FGPhysicalProperty(const FGPhysicalProperties& p, const WeatherPrecision altitude)
-{
-    p.WindAt(Wind, altitude);
-    p.TurbulenceAt(Turbulence, altitude);
-    Temperature = p.TemperatureAt(altitude);
-    AirPressure = p.AirPressureAt(altitude);
-    VaporPressure = p.VaporPressureAt(altitude);
-}
-
-
diff --git a/src/WeatherCM/FGPhysicalProperty.h b/src/WeatherCM/FGPhysicalProperty.h
deleted file mode 100644 (file)
index 23689b6..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-/*****************************************************************************
-
- Header:       FGPhysicalProperty.h    
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Define the simulated physical property of the weather in one point
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer      Changed struct to class
-20.06.1999 Christian Mayer     added lots of consts
-30.06.1999 Christian Mayer     STL portability
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGPhysicalProperty_H
-#define FGPhysicalProperty_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <simgear/compiler.h>
-
-#ifdef HAVE_WINDOWS_H
-#  include <windows.h>
-#endif
-
-#include <vector>
-
-#include <plib/sg.h>
-
-#include "FGWeatherDefs.h"
-#include "FGPhysicalProperties.h"
-
-SG_USING_STD(vector);
-SG_USING_NAMESPACE(std);
-
-/****************************************************************************/
-/* used for output:                                                        */
-/****************************************************************************/
-class FGPhysicalProperty;
-bool operator == (const FGPhysicalProperty& a, const FGPhysicalProperty& b);  // p1 == p2?
-
-class FGPhysicalProperty
-{
-private:
-protected:
-public:
-    sgVec3           Wind;             //Wind vector
-    sgVec3           Turbulence;       //Turbulence vector
-    WeatherPrecision Temperature;      //in deg. Kelvin (I *only* accept SI!)
-    WeatherPrecision AirPressure;      //in Pascal (I *only* accept SI!)
-    WeatherPrecision VaporPressure;    //in Pascal (I *only* accept SI!)
-
-    FGPhysicalProperty();   //consructor to fill it with FG standart weather
-    FGPhysicalProperty(const FGPhysicalProperties& p, const WeatherPrecision altitude);
-
-    //allow calculations for easier handling such as interpolating
-    FGPhysicalProperty& operator =  ( const FGPhysicalProperty& p );   // assignment of a FGPhysicalProperty
-    FGPhysicalProperty& operator += ( const FGPhysicalProperty& p );   // incrementation by a FGPhysicalProperty
-    FGPhysicalProperty& operator -= ( const FGPhysicalProperty& p );   // decrementation by a FGPhysicalProperty
-    FGPhysicalProperty& operator *= ( const double d );                        // multiplication by a constant
-    FGPhysicalProperty& operator /= ( const double d );                        // division by a constant
-
-    friend FGPhysicalProperty operator - (const FGPhysicalProperty& p);                        // -p1
-    friend bool operator == (const FGPhysicalProperty& a, const FGPhysicalProperty& b);        // p1 == p2?
-};
-
-class FGPhysicalProperty3D : public FGPhysicalProperty
-{
-private:
-protected:
-public:
-    sgVec3 p;      //position of the property (lat/lon/alt)
-};
-
-typedef vector<FGPhysicalProperty>               FGPhysicalPropertyVector;
-typedef FGPhysicalPropertyVector::iterator       FGPhysicalPropertyVectorIt;
-typedef FGPhysicalPropertyVector::const_iterator FGPhysicalPropertyVectorConstIt;
-
-typedef vector<FGPhysicalProperty3D>               FGPhysicalProperty3DVector;
-typedef FGPhysicalProperty3DVector::iterator       FGPhysicalProperty3DVectorIt;
-typedef FGPhysicalProperty3DVector::const_iterator FGPhysicalProperty3DVectorConstIt;
-
-inline FGPhysicalProperty& FGPhysicalProperty::operator = ( const FGPhysicalProperty& p )
-{
-    sgCopyVec3(Wind, p.Wind); 
-    sgCopyVec3(Turbulence, p.Turbulence); 
-    Temperature = p.Temperature; 
-    AirPressure = p.AirPressure; 
-    VaporPressure = p.VaporPressure; 
-    return *this;
-}
-
-inline FGPhysicalProperty& FGPhysicalProperty::operator += ( const FGPhysicalProperty& p )
-{
-    sgAddVec3(Wind, p.Wind); 
-    sgAddVec3(Turbulence, p.Turbulence); 
-    Temperature += p.Temperature; 
-    AirPressure += p.AirPressure; 
-    VaporPressure += p.VaporPressure; 
-    return *this;
-}
-
-inline FGPhysicalProperty& FGPhysicalProperty::operator -= ( const FGPhysicalProperty& p )
-{
-    sgSubVec3(Wind, p.Wind); 
-    sgSubVec3(Turbulence, p.Turbulence); 
-    Temperature -= p.Temperature; 
-    AirPressure -= p.AirPressure; 
-    VaporPressure -= p.VaporPressure; 
-    return *this;
-}
-
-inline FGPhysicalProperty& FGPhysicalProperty::operator *= ( const double d )
-{
-    sgScaleVec3(Wind, d); 
-    sgScaleVec3(Turbulence, d); 
-    Temperature *= d; 
-    AirPressure *= d; 
-    VaporPressure *= d; 
-    return *this;
-}
-
-inline FGPhysicalProperty& FGPhysicalProperty::operator /= ( const double d )
-{
-    sgScaleVec3(Wind, 1.0 / d); 
-    sgScaleVec3(Turbulence, 1.0 / d); 
-    Temperature /= d; 
-    AirPressure /= d; 
-    VaporPressure /= d; 
-    return *this;
-}
-
-inline  FGPhysicalProperty operator - (const FGPhysicalProperty& p)
-{
-    FGPhysicalProperty x;
-    sgNegateVec3(x.Wind, p.Wind); 
-    sgNegateVec3(x.Turbulence, p.Turbulence); 
-    x.Temperature = -p.Temperature; 
-    x.AirPressure = -p.AirPressure; 
-    x.VaporPressure = -p.VaporPressure; 
-    return x;
-}
-
-inline bool operator == (const FGPhysicalProperty& a, const FGPhysicalProperty& b)
-{
-    return (
-    sgEqualVec3(a.Wind, b.Wind) &&
-    sgEqualVec3(a.Turbulence, b.Turbulence) && 
-    (a.Temperature == b.Temperature) && 
-    (a.AirPressure == b.AirPressure) && 
-    (a.VaporPressure == b.VaporPressure)); 
-}
-
-inline bool operator != (const FGPhysicalProperty& a, const FGPhysicalProperty& b)
-{
-    return !(a == b);
-}
-
-inline FGPhysicalProperty operator + (const FGPhysicalProperty& a, const FGPhysicalProperty& b)
-{
-    return FGPhysicalProperty(a) += b;
-}
-
-inline FGPhysicalProperty operator - (const FGPhysicalProperty& a, const FGPhysicalProperty& b)
-{
-    return FGPhysicalProperty(a) -= b;
-}
-
-inline FGPhysicalProperty operator * (const FGPhysicalProperty& a, const WeatherPrecision b)
-{
-    return FGPhysicalProperty(a) *= b;
-}
-
-inline FGPhysicalProperty operator * (const WeatherPrecision b, const FGPhysicalProperty& a)
-{
-    return FGPhysicalProperty(a) *= b;
-}
-
-inline FGPhysicalProperty operator / (const FGPhysicalProperty& a, const WeatherPrecision b)
-{
-    return FGPhysicalProperty(a) *= (1.0/b);
-}
-
-/****************************************************************************/
-#endif /*FGPhysicalProperty_H*/
diff --git a/src/WeatherCM/FGSnowRain.h b/src/WeatherCM/FGSnowRain.h
deleted file mode 100644 (file)
index ba940cd..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*****************************************************************************
-
- Header:       FGSnowRain.h    
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Header for the rain/snow/hail/... class
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGSnowRain_H
-#define FGSnowRain_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include "FGWeatherFeature.h"
-               
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-enum SnowRainType
-{
-    Rain,
-    Snow,
-    Hail,
-
-    usedRainSnowTypes
-};
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/****************************************************************************/
-class FGSnowRain:FGWeatherFeature
-{
-private:
-protected:
-public:
-};
-
-/****************************************************************************/
-#endif /*FGSnowRain_H*/
diff --git a/src/WeatherCM/FGTemperatureItem.cpp b/src/WeatherCM/FGTemperatureItem.cpp
deleted file mode 100644 (file)
index f754023..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/*****************************************************************************
-
- Module:       FGTemperatureItem.cpp
- Author:       Christian Mayer
- Date started: 28.05.99
- Called by:    FGMicroWeather
-
- ---------- Copyright (C) 1999  Christian Mayer (vader@t-online.de) ----------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Operator< definition for the item
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-*****************************************************************************/
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include "FGTemperatureItem.h"
-
-/****************************************************************************/
-/********************************** CODE ************************************/
-/****************************************************************************/
-bool operator<(const FGTemperatureItem& arg1, const FGTemperatureItem& arg2 )
-{
-    return arg1.alt < arg2.alt;
-}
-
diff --git a/src/WeatherCM/FGTemperatureItem.h b/src/WeatherCM/FGTemperatureItem.h
deleted file mode 100644 (file)
index f6cc5e0..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*****************************************************************************
-
- Header:       FGTemperatureItem.h     
- Author:       Christian Mayer
- Date started: 28.05.99
-
- ---------- Copyright (C) 1999  Christian Mayer (vader@t-online.de) ----------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Temperature item that is stored in the micro weather class
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-10.10.1999 Christian Mayer     added mutable for gcc 2.95 portability
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGTemperatureItem_H
-#define FGTemperatureItem_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include "FGWeatherDefs.h"
-
-// for the case that mutable isn't supported:
-#include <simgear/compiler.h>
-               
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-class FGTemperatureItem;
-FGTemperatureItem operator-(const FGTemperatureItem& arg);
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/****************************************************************************/
-class FGTemperatureItem
-{
-private:
-    mutable WeatherPrecision value;
-    WeatherPrecision alt;
-
-protected:
-public:
-
-    FGTemperatureItem(const WeatherPrecision& a, const WeatherPrecision& v) {alt = a; value = v;}
-    FGTemperatureItem(const WeatherPrecision& v)                           {alt = 0.0; value = v;}
-    FGTemperatureItem()                                                            {alt = 0.0; value = (WeatherPrecision)FG_WEATHER_DEFAULT_TEMPERATURE;}
-
-    WeatherPrecision getValue() const { return value; };
-    WeatherPrecision getAlt()   const { return alt;   };  
-
-    void setAlt  (WeatherPrecision x) { alt   = x; }
-    void setValue(WeatherPrecision x) { value = x; }
-
-    FGTemperatureItem& operator*= (const WeatherPrecision& arg);
-    FGTemperatureItem& operator+= (const FGTemperatureItem& arg);
-    FGTemperatureItem& operator-= (const FGTemperatureItem& arg);
-
-    friend bool operator<(const FGTemperatureItem& arg1, const FGTemperatureItem& arg2 );
-    friend FGTemperatureItem operator-(const FGTemperatureItem& arg);
-    
-};
-
-inline FGTemperatureItem& FGTemperatureItem::operator*= (const WeatherPrecision& arg)
-{
-  value *= arg;
-  return *this;
-}
-
-inline FGTemperatureItem& FGTemperatureItem::operator+= (const FGTemperatureItem& arg)
-{
-  value += arg.value;
-  return *this;
-}
-inline FGTemperatureItem& FGTemperatureItem::operator-= (const FGTemperatureItem& arg)
-{
-  value -= arg.value;
-  return *this;
-}
-
-
-inline FGTemperatureItem operator-(const FGTemperatureItem& arg)
-{
-    return FGTemperatureItem(arg.alt, -arg.value);
-}
-
-
-
-
-/****************************************************************************/
-#endif /*FGTemperatureItem_H*/
diff --git a/src/WeatherCM/FGThunderstorm.cpp b/src/WeatherCM/FGThunderstorm.cpp
deleted file mode 100644 (file)
index 51a5c1c..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/*****************************************************************************
-
- Module:       FGThunderstorm.cpp
- Author:       Christian Mayer
- Date started: 02.11.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Function that calls other parts of fg when a lightning has happened
-
-HISTORY
-------------------------------------------------------------------------------
-02.11.1999 Christian Mayer     Created
-*****************************************************************************/
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <simgear/compiler.h>
-
-#include <stdlib.h>
-#include <time.h>
-
-#include <plib/sg.h>
-
-#include "FGThunderstorm.h"
-
-/****************************************************************************/
-/********************************** CODE ************************************/
-/****************************************************************************/
-FGThunderstorm::FGThunderstorm(const float n, const float e, const float s, const float w, const float p, const unsigned int seed)
-{
-    northBorder = n;
-    eastBorder  = e;
-    southBorder = s;
-    westBorder  = w;
-
-    lightningProbability = p;
-    currentProbability = 0.0;
-
-    switch(seed)
-    {
-    case 0:
-       //a seed of 0 means that I have to initialize the seed myself
-       srand( (unsigned)time( NULL ) );
-       break;
-
-    case 1:
-       //a seed of 1 means that I must not initialize the seed
-       break;
-
-    default:
-       //any other seed means that I have to initialize with that seed
-       srand( seed );
-    }
-}
-
-FGThunderstorm::~FGThunderstorm(void)
-{
-    //I don't need to do anything
-}
-
-void FGThunderstorm::update(const float dt)
-{
-    //increase currentProbability by a value x that's 0.5 dt <= x <= 1.5 dt
-    currentProbability += dt * ( 0.5 - (float(rand())/RAND_MAX) );
-
-    if (currentProbability > lightningProbability)
-    {  //ok, I've got a lightning now
-
-       //figure out where the lightning is:
-       sgVec2 lightningPosition;
-       sgSetVec2( 
-           lightningPosition, 
-           southBorder + (northBorder - southBorder)*(float(rand())/RAND_MAX), 
-           westBorder  + (eastBorder  - westBorder )*(float(rand())/RAND_MAX)
-       );
-
-       //call OpenGl:
-       /* ... */
-
-       //call Sound:
-       /* ... */
-
-       //call Radio module:
-       /* ... */
-
-       currentProbability = 0.0;   //and begin again
-    }
-}
-
-
-
-
diff --git a/src/WeatherCM/FGThunderstorm.h b/src/WeatherCM/FGThunderstorm.h
deleted file mode 100644 (file)
index d2299be..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*****************************************************************************
-
- Header:       FGThunderstorm.h        
- Author:       Christian Mayer
- Date started: 02.11.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Header for the thunderstom class
-
-HISTORY
-------------------------------------------------------------------------------
-02.11.1999 Christian Mayer     Created
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGThunderstorm_H
-#define FGThunderstorm_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-               
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/****************************************************************************/
-class FGThunderstorm
-{
-private:
-protected:
-    float northBorder;
-    float eastBorder;
-    float southBorder;
-    float westBorder;
-
-    float lightningProbability;        //in lightnings per second
-    float currentProbability;  //=0.0 directly after a lightning stroke and
-                               //gets increased over the time until it's
-                                //bigger than lightningProbability. When that
-                               //happens we've got a new lightning
-
-public:
-    FGThunderstorm(const float n, const float e, const float s, const float w, const float p, const unsigned int seed = 0);
-    ~FGThunderstorm(void);
-
-    void update(const float dt);
-};
-
-/****************************************************************************/
-#endif /*FGThunderstorm_H*/
-
-
-
-
-
-
diff --git a/src/WeatherCM/FGTurbulenceItem.cpp b/src/WeatherCM/FGTurbulenceItem.cpp
deleted file mode 100644 (file)
index 0b66fd3..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*****************************************************************************
-
- Module:       FGTurbulenceItem.cpp
- Author:       Christian Mayer
- Date started: 28.05.99
- Called by:    FGMicroWeather
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Operator< definition for the item
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-*****************************************************************************/
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include "FGTurbulenceItem.h"
-
-/****************************************************************************/
-/********************************** CODE ************************************/
-/****************************************************************************/
-
diff --git a/src/WeatherCM/FGTurbulenceItem.h b/src/WeatherCM/FGTurbulenceItem.h
deleted file mode 100644 (file)
index 1afabd9..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/*****************************************************************************
-
- Header:       FGTurbulenceItem.h      
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-turbulence item that gets stored in the micro weather class
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-21.12.1999 Christian Mayer     Added a fix for compatibility to gcc 2.8 which
-                               suggested by Oliver Delise
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGTurbulenceItem_H
-#define FGTurbulenceItem_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <simgear/compiler.h>
-
-#ifdef HAVE_WINDOWS_H
-#  include <windows.h>
-#endif
-
-#include <plib/sg.h>
-
-#include "FGWeatherDefs.h"
-
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-class FGTurbulenceItem;
-FGTurbulenceItem operator-(const FGTurbulenceItem& arg);
-
-#if ( __GNU_C__ == 2 && __GNU_MAJOR__ < 9 )
-#  define const_sgVec3 const sgVec3
-#else
-#  define const_sgVec3 const sgVec3&
-#endif
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/****************************************************************************/
-class FGTurbulenceItem
-{
-private:
-    sgVec3 value;
-
-protected:
-public:
-    FGTurbulenceItem(const_sgVec3 v)   { sgCopyVec3(value, v);}
-    FGTurbulenceItem()                 { sgZeroVec3(value);   }
-
-    void          getValue(sgVec3 ret) const { sgCopyVec3(ret, value); };
-    const sgVec3* getValue(void)       const { return &value; };
-
-    WeatherPrecision x(void) const { return value[0]; };
-    WeatherPrecision y(void) const { return value[1]; };
-    WeatherPrecision z(void) const { return value[2]; };
-
-    void x(const WeatherPrecision x) { value[0] = x; };
-    void y(const WeatherPrecision y) { value[1] = y; };
-    void z(const WeatherPrecision z) { value[2] = z; };
-
-    FGTurbulenceItem& operator*= (const WeatherPrecision  arg);
-    FGTurbulenceItem& operator+= (const FGTurbulenceItem& arg);
-    FGTurbulenceItem& operator-= (const FGTurbulenceItem& arg);
-
-    friend FGTurbulenceItem operator-(const FGTurbulenceItem& arg);
-};
-
-inline FGTurbulenceItem& FGTurbulenceItem::operator*= (const WeatherPrecision arg)
-{
-  sgScaleVec3(value, arg);
-  return *this;
-}
-
-inline FGTurbulenceItem& FGTurbulenceItem::operator+= (const FGTurbulenceItem& arg)
-{
-  sgAddVec3(value, *arg.getValue());
-  return *this;
-}
-
-inline FGTurbulenceItem& FGTurbulenceItem::operator-= (const FGTurbulenceItem& arg)
-{
-  sgSubVec3(value, *arg.getValue());
-  return *this;
-}
-
-inline FGTurbulenceItem operator-(const FGTurbulenceItem& arg)
-{
-    sgVec3 temp;
-
-    sgNegateVec3(temp, *arg.getValue());
-
-    return FGTurbulenceItem(temp);
-}
-
-/****************************************************************************/
-#endif /*FGTurbulenceItem_H*/
-
-
-
-
diff --git a/src/WeatherCM/FGVaporPressureItem.cpp b/src/WeatherCM/FGVaporPressureItem.cpp
deleted file mode 100644 (file)
index 7ebd36f..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*****************************************************************************
-
- Module:       FGVaporPressureItem.cpp
- Author:       Christian Mayer
- Date started: 28.05.99
- Called by:    FGMicroWeather
-
- ---------- Copyright (C) 1999  Christian Mayer (vader@t-online.de) ----------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Operator< definition for the item
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-*****************************************************************************/
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include "FGVaporPressureItem.h"
-
-/****************************************************************************/
-/********************************** CODE ************************************/
-/****************************************************************************/
-bool operator<(const FGVaporPressureItem& arg1, const FGVaporPressureItem& arg2 )
-{
-    return arg1.alt < arg2.alt;
-}
diff --git a/src/WeatherCM/FGVaporPressureItem.h b/src/WeatherCM/FGVaporPressureItem.h
deleted file mode 100644 (file)
index b04c80b..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/*****************************************************************************
-
- Header:       FGVaporPressureItem.h   
- Author:       Christian Mayer
- Date started: 28.05.99
-
- ---------- Copyright (C) 1999  Christian Mayer (vader@t-online.de) ----------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Vapor pressure item that is stored in the micro weather class
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-10.10.1999 Christian Mayer     added mutable for gcc 2.95 portability
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGVaporPressureItem_H
-#define FGVaporPressureItem_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include "FGWeatherDefs.h"
-
-//for the case that mutable isn't supported:
-#include <simgear/compiler.h>
-               
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-class FGVaporPressureItem;
-FGVaporPressureItem operator-(const FGVaporPressureItem& arg);
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/****************************************************************************/
-class FGVaporPressureItem
-{
-private:
-    mutable WeatherPrecision value;
-    WeatherPrecision alt;
-
-protected:
-public:
-
-    FGVaporPressureItem(const WeatherPrecision& a, const WeatherPrecision& v)  {alt = a; value = v;}
-    FGVaporPressureItem(const WeatherPrecision& v)                             {alt = 0.0; value = v;}
-    FGVaporPressureItem()                                                      {alt = 0.0; value = FG_WEATHER_DEFAULT_VAPORPRESSURE;}
-
-    WeatherPrecision getValue() const { return value; };
-    WeatherPrecision getAlt()   const { return alt;   };
-
-    FGVaporPressureItem& operator*= (const WeatherPrecision& arg);
-    FGVaporPressureItem& operator+= (const FGVaporPressureItem& arg);
-    FGVaporPressureItem& operator-= (const FGVaporPressureItem& arg);
-
-    friend bool operator<(const FGVaporPressureItem& arg1, const FGVaporPressureItem& arg2 );
-    friend FGVaporPressureItem operator-(const FGVaporPressureItem& arg);
-
-};
-
-inline FGVaporPressureItem& FGVaporPressureItem::operator*= (const WeatherPrecision& arg)
-{
-  value *= arg;
-  return *this;
-}
-inline FGVaporPressureItem& FGVaporPressureItem::operator+= (const FGVaporPressureItem& arg)
-{
-  value += arg.value;
-  return *this;
-}
-
-inline FGVaporPressureItem& FGVaporPressureItem::operator-= (const FGVaporPressureItem& arg)
-{
-  value -= arg.value;
-  return *this;
-}
-
-inline FGVaporPressureItem operator-(const FGVaporPressureItem& arg)
-{
-    return FGVaporPressureItem(arg.alt, -arg.value);
-}
-
-/****************************************************************************/
-#endif /*FGVaporPressureItem_H*/
diff --git a/src/WeatherCM/FGWeatherDefs.h b/src/WeatherCM/FGWeatherDefs.h
deleted file mode 100644 (file)
index 77f6c3a..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-/*****************************************************************************
-
- Header:       FGWeatherDefs.h 
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-definitions uses in most weather classes
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGWeatherDefs_H
-#define FGWeatherDefs_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-               
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-typedef double WeatherPrecision;
-
-//set the minimum visibility to get a at least half way realistic weather
-#define MINIMUM_WEATHER_VISIBILITY 10.0    /* metres */
-#define DEFAULT_WEATHER_VISIBILITY 32000.0 /* metres */
-//prefered way the database is working
-#define PREFERED_WORKING_TYPE default_mode
-// #define PREFERED_WORKING_TYPE use_internet
-
-#define FG_WEATHER_DEFAULT_TEMPERATURE   (15.0+273.16)     /*15°C or 288.16°K*/
-#define FG_WEATHER_DEFAULT_VAPORPRESSURE (0.0)             /*in Pascal 1 Pa = N/m^2*/
-#define FG_WEATHER_DEFAULT_AIRPRESSURE   (1013.25*100.0)    /*in Pascal 1 Pa = N/m^2*/
-#define FG_WEATHER_DEFAULT_AIRDENSITY    (1.22501)         /*in kg/m^3*/
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/****************************************************************************/
-
-/****************************************************************************/
-#endif /*FGWeatherDefs_H*/
diff --git a/src/WeatherCM/FGWeatherFeature.h b/src/WeatherCM/FGWeatherFeature.h
deleted file mode 100644 (file)
index 74d7e10..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*****************************************************************************
-
- Header:       FGWeatherFeature.h      
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Abstract class that every weather feature, such as wind layers, are derivated
-from
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-30.06.1999 Christian Mayer     STL portability
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGWeatherFeature_H
-#define FGWeatherFeature_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include <simgear/compiler.h>
-
-#include <plib/sg.h>
-
-#include "FGWeatherDefs.h"
-               
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-enum LayerType {
-    fgWind,
-    fgTurbulence,
-    fgTemperature,
-    fgAirDensity,
-    fgCloud,
-    fgRain
-};
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/****************************************************************************/
-class FGWeatherFeature
-{
-private:
-protected:
-    sgVec3 position;               //middle of the feature in lat/lon/alt
-    WeatherPrecision minSize;      //smalest size of the feature
-                                   //=> a disk is specifies
-
-    LayerType FeatureType; 
-
-public:
-    LayerType getFeature(void)         const { return FeatureType; }
-    bool isFeature(const LayerType& f) const { return (f == FeatureType); }
-};
-
-/****************************************************************************/
-#endif /*FGWeatherFeature_H*/
diff --git a/src/WeatherCM/FGWeatherParse.cpp b/src/WeatherCM/FGWeatherParse.cpp
deleted file mode 100644 (file)
index 2172ab8..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/*****************************************************************************
-
- Module:       FGWeatherParse.cpp
- Author:       Christian Mayer
- Date started: 28.05.99
- Called by:    FGMicroWeather
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Parse the weather that can be downloaded from 
-
-    http://129.13.102.67/out/flight/yymmddhhdata.txt.gz
-
-where yy stands for the year, mm for the month, dd for the day and hh for the
-hour.
-The columns are explained at
-
-    http://129.13.102.67/out/flight/kopf.txt
-
-and a list of the stations can be found at
-
-    http://129.13.102.67/out/flight/wmoconv.txt.gz
-
-Many thanks to Georg Mueller (Georg.Mueller@imk.fzk.de) of the 
-
-    Institut fuer Meteorologie und Klimaforschung, Universitaet Karlsruhe
-
-for makeking such a service aviable. 
-You can also visit his homepage at http://www.wetterzentrale.de
-
-HISTORY
-------------------------------------------------------------------------------
-18.10.1999 Christian Mayer     Created
-14.12.1999 Christian Mayer     minor internal changes
-*****************************************************************************/
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include <simgear/constants.h>
-
-#include "FGWeatherParse.h"
-#include "FGWeatherUtils.h"
-
-/****************************************************************************/
-/********************************** CODE ************************************/
-/****************************************************************************/
-
-FGWeatherParse::FGWeatherParse()
-{
-}
-
-FGWeatherParse::~FGWeatherParse()
-{
-}
-
-void FGWeatherParse::input(const char *file)
-{
-    unsigned int nr = 0;
-
-    sg_gzifstream in;
-
-    cerr << "Parsing \"" << file << "\" for weather datas:\n";
-    
-    in.open( file );
-    
-    if (! in.is_open() )
-    {
-       cerr << "Couldn't find that file!\nExiting...\n";
-       exit(-1);
-    }
-    else
-    {
-       bool skip = false;
-       while ( in )
-       {
-           entry temp;
-           
-           in >> temp.year; 
-           in >> temp.month; 
-           in >> temp.day; 
-           in >> temp.hour; 
-           in >> temp.station_number; 
-           in >> temp.lat; 
-           in >> temp.lon; 
-           in >> temp.x_wind; 
-           in >> temp.y_wind; 
-           in >> temp.temperature; 
-           in >> temp.dewpoint; 
-           in >> temp.airpressure; 
-           in >> temp.airpressure_history[0]; 
-           in >> temp.airpressure_history[1]; 
-           in >> temp.airpressure_history[2]; 
-           in >> temp.airpressure_history[3]; 
-           
-           for (unsigned int i = 0; i < weather_station.size(); i++)
-           {
-               if ((weather_station[i].lat == temp.lat) && (weather_station[i].lon == temp.lon))
-               {
-                       // Two weatherstations are at the same positon 
-                       //   => averageing both
-
-                       // just taking care of the stuff that metters for us
-                       weather_station[i].x_wind      += temp.x_wind;      weather_station[i].x_wind      *= 0.5;
-                       weather_station[i].y_wind      += temp.y_wind;      weather_station[i].y_wind      *= 0.5;
-                       weather_station[i].temperature += temp.temperature; weather_station[i].temperature *= 0.5;
-                       weather_station[i].dewpoint    += temp.dewpoint;    weather_station[i].dewpoint    *= 0.5;
-                       weather_station[i].airpressure += temp.airpressure; weather_station[i].airpressure *= 0.5;
-
-                       skip = true;
-               }
-           }
-           
-           if (skip == false)
-               weather_station.push_back( temp );
-           
-           skip = false;
-           
-           // output a point to ease the waiting
-           if ( ((nr++)%100) == 0 )
-               cerr << ".";
-       }
-       
-       cerr << "\n" << nr << " stations read\n";
-    }
-}
-
-FGPhysicalProperties FGWeatherParse::getFGPhysicalProperties(const unsigned int nr) const
-{
-    FGPhysicalProperties ret_val;
-
-    //chache this entry
-    entry this_entry = weather_station[nr];
-    
-    ret_val.Wind[-1000.0]          = FGWindItem(this_entry.x_wind, this_entry.y_wind, 0.0);
-    ret_val.Wind[10000.0]          = FGWindItem(this_entry.x_wind, this_entry.y_wind, 0.0);
-    ret_val.Temperature[0.0]       = Celsius( this_entry.temperature );
-    ret_val.AirPressure            = FGAirPressureItem( this_entry.airpressure * 10.0 );    //*10 to go from 10 hPa to Pa
-
-    //I have the dewpoint and the temperature, so I can get the vapor pressure
-    ret_val.VaporPressure[-1000.0] = sat_vp( this_entry.dewpoint );
-    ret_val.VaporPressure[10000.0] = sat_vp( this_entry.dewpoint );
-
-    //I've got no ideas about clouds...
-    //ret_val.Clouds[0]              = 0.0;
-    
-    return ret_val;
-}
-
-void FGWeatherParse::getPosition(const unsigned int nr, sgVec2 pos) const
-{
-    //set the position of the station
-    sgSetVec2( pos, weather_station[nr].lat * SGD_DEGREES_TO_RADIANS, weather_station[nr].lon * SGD_DEGREES_TO_RADIANS ); 
-}
-
diff --git a/src/WeatherCM/FGWeatherParse.h b/src/WeatherCM/FGWeatherParse.h
deleted file mode 100644 (file)
index 5b51681..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-/*****************************************************************************
-
- Header:       FGWeatherParse.h        
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Parse the weather that can be downloaded from 
-
-    http://129.13.102.67/out/flight/yymmddhhdata.txt.gz
-
-where yy stands for the year, mm for the month, dd for the day and hh for the
-hour.
-The columns are explained at
-
-    http://129.13.102.67/out/flight/kopf.txt
-
-and a list of the stations can be found at
-
-    http://129.13.102.67/out/flight/wmoconv.txt.gz
-
-Many thanks to Georg Mueller (Georg.Mueller@imk.fzk.de) of the 
-
-    Institut fuer Meteorologie und Klimaforschung, Universitaet Karlsruhe
-
-for makeking such a service aviable. 
-You can also visit his homepage at http://www.wetterzentrale.de
-
-HISTORY
-------------------------------------------------------------------------------
-18.10.1999 Christian Mayer     Created
-14.12.1999 Christian Mayer     minor internal changes
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGWeatherParse_H
-#define FGWeatherParse_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <simgear/compiler.h>
-#include <vector>
-
-#include <simgear/misc/sgstream.hxx>
-
-#include "FGPhysicalProperties.h"
-
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-SG_USING_STD(vector);
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/****************************************************************************/
-class FGWeatherParse
-{
-public:
-    struct entry;
-
-private:
-    vector<entry> weather_station;
-
-protected:
-public:
-    /************************************************************************/
-    /* A line (i.e. entry) in the data file looks like:                            */
-    /*  yyyy mm dd hh XXXXX BBBBB LLLLLL UUUUU VVVVV TTTTT DDDDD PPPPP pppp */
-    /************************************************************************/
-    struct entry
-    {
-       int year;                       // The yyyy
-       int month;                      // The mm
-       int day;                        // The dd
-       int hour;                       // The hh
-       unsigned int station_number;    // The XXXXX
-       float lat;                      // The BBBBBB   negative = south
-       float lon;                      // The LLLLLLL  negative = west 
-       float x_wind;                   // The UUUUU    negative = to the weat
-       float y_wind;                   // The VVVVV    negative = to the south
-       float temperature;              // The TTTTT    in degC
-       float dewpoint;                 // The DDDDD    in degC
-       float airpressure;              // The PPPPP    in hPa
-       float airpressure_history[4];   // The pppp     in hPa
-    };
-
-    FGWeatherParse();
-    ~FGWeatherParse();
-
-    void input(const char *file);
-
-    unsigned int stored_stations(void) const
-    {
-       return weather_station.size();
-    }
-
-    entry getEntry(const unsigned int nr) const
-    {
-       return weather_station[nr];
-    }
-
-    FGPhysicalProperties getFGPhysicalProperties(const unsigned int nr) const;
-    void getPosition(const unsigned int nr, sgVec2 pos) const;
-};
-
-/****************************************************************************/
-#endif /*FGWeatherParse_H*/
diff --git a/src/WeatherCM/FGWeatherUtils.h b/src/WeatherCM/FGWeatherUtils.h
deleted file mode 100644 (file)
index 505fcdc..0000000
+++ /dev/null
@@ -1,224 +0,0 @@
-/*****************************************************************************
-
- Header:       FGWeatherUtils.h        
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Utilities for the weather calculation like converting formulas
-
-HISTORY
-------------------------------------------------------------------------------
-02.06.1999 Christian Mayer      Created
-08.06.1999 Christian Mayer      Changed sat_vp
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-17.01.2000 Christian Mayer     Added conversion routines make it easier for
-                               JSBsim to use the weather database.
-18.05.2000 Christian Mayer      Added function for geting the density when
-                                temperature and pressure are given
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGWeatherUtils_H
-#define FGWeatherUtils_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include <math.h>
-               
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-
-/****************************************************************************/
-/*assuming as given:                                                       */
-/*                                                                         */
-/* t:      temperature in Â°C                                               */
-/* p:      preasure in mbar                                                */
-/* //abs_hum: absoloute humidity in g/m^3,                                 */
-/* act_vp:  actual vapor pressure pascal                                   */
-/*                                                                         */
-/* Calculated vaues:                                                       */
-/* //max_hum: maximum of humidity in g/m^3,                                */
-/* sat_vp:  saturated vapor pressure in pascal                             */
-/* rel_hum: relative humidity in %                                         */
-/* dp:     dew point in Â°C                                                 */
-/* wb:     approximate wetbulp in Â°C                                       */
-/*                                                                         */
-/* NOTE: Pascal is the SI unit for pressure and is defined as Pa = N/m^2    */
-/*       1 mbar = 1 hPa = 100 Pa                                           */
-/* NOTE: Â°C isn't a SI unit, so I should use Â°K instead. But as all        */
-/*       formulas are given in Â°C and the weather database only uses       */
-/*       'normal' temperatures, I've kept it in Â°C                         */
-/****************************************************************************/
-
-#define SAT_VP_CONST1 610.483125
-#define SAT_VP_CONST2 7.444072452
-#define SAT_VP_CONST3 235.3120919
-
-inline WeatherPrecision sat_vp(const WeatherPrecision temp)
-{
-    //old:
-    //return 6.112 * pow( 10, (7.5*dp)/(237.7+dp) );    //in mbar
-
-    //new:
-    //advantages: return the result as SI unit pascal and the constants
-    //are choosen that the correct results are returned for 0°C, 20°C and
-    //100°C. By 100°C I'm now returning a preasure of 1013.25 hPa
-    return SAT_VP_CONST1 * pow( 10, (SAT_VP_CONST2*temp)/(SAT_VP_CONST3+temp) );    //in pascal
-}
-
-inline WeatherPrecision rel_hum(const WeatherPrecision act_vp, const WeatherPrecision sat_vp)
-{
-    return (act_vp / sat_vp) * 100;    //in %
-}
-
-inline WeatherPrecision dp(const WeatherPrecision sat_vp)
-{
-    return (SAT_VP_CONST3*log10(sat_vp/SAT_VP_CONST1))/(SAT_VP_CONST2-log10(sat_vp/SAT_VP_CONST1)); //in Â°C 
-}
-
-inline WeatherPrecision wb(const WeatherPrecision t, const WeatherPrecision p, const WeatherPrecision dp)
-{
-    WeatherPrecision e = sat_vp(dp); 
-    WeatherPrecision tcur, tcvp, peq, diff;
-    WeatherPrecision tmin, tmax;
-
-    if (t > dp)
-    {
-       tmax = t;
-       tmin = dp;
-    }
-    else
-    {
-       tmax = dp;
-       tmin = t;
-    }
-
-    while (true) 
-    { 
-       tcur=(tmax+tmin)/2;
-       tcvp=sat_vp(tcur);
-       
-       peq = 0.000660*(1+0.00155*tcur)*p*(t-tcur);
-       
-       diff = peq-tcvp+e;
-       
-       if (fabs(diff) < 0.01) 
-           return tcur;        //in Â°C
-       
-       if (diff < 0) 
-           tmax=tcur; 
-       else 
-           tmin=tcur; 
-    }; 
-
-}
-
-// Assume that we've got an ideal gas in normal altitudes
-inline WeatherPrecision Density(const WeatherPrecision AirPressure, const WeatherPrecision Temperature )
-{
-    const float rho0 = 1.293; /*density for air in normal altitudes at 0°C and 1013 mbar*/
-
-    return rho0 * 273.15 * AirPressure / (101300.0 * Temperature);
-}
-
-inline WeatherPrecision Celsius                    (const WeatherPrecision celsius)
-{
-    return celsius + 273.15;                           //Kelvin
-}
-
-inline WeatherPrecision Fahrenheit         (const WeatherPrecision fahrenheit)
-{
-    return (fahrenheit * 9.0 / 5.0) + 32.0 + 273.15;   //Kelvin
-}
-
-inline WeatherPrecision Kelvin2Celsius     (const WeatherPrecision kelvin)
-{
-    return kelvin - 273.15;                            //Celsius
-}
-
-inline WeatherPrecision Kelvin2Fahrenheit   (const WeatherPrecision kelvin)
-{
-    return ((kelvin - 273.15) * 9.0 / 5.0) + 32.0;     //Fahrenheit
-}
-
-inline WeatherPrecision Celsius2Fahrenheit  (const WeatherPrecision celsius)
-{
-    return (celsius * 9.0 / 5.0) + 32.0;               //Fahrenheit
-}
-
-inline WeatherPrecision Fahrenheit2Celsius  (const WeatherPrecision fahrenheit)
-{
-    return (fahrenheit - 32.0) * 5.0 / 9.0;            //Celsius
-}
-
-inline WeatherPrecision Torr2Pascal        (const WeatherPrecision torr)
-{
-    return (101325.0/760.0)*torr;                      //Pascal
-}
-
-inline WeatherPrecision Rankine2Kelvin     (const WeatherPrecision Rankine)
-{
-    return (5.0 / 9.0) * Rankine;                      //Kelvin
-}
-
-inline WeatherPrecision JSBsim2SIdensity    (const WeatherPrecision JSBsim)
-{
-    return JSBsim / 0.0019403203;                      //kg / cubic metres
-}
-
-inline WeatherPrecision psf2Pascal         (const WeatherPrecision psf)
-{
-    return psf / 0.020885434;                          //lbs / square foot (used in JSBsim)
-}
-
-inline WeatherPrecision Kelvin2Rankine     (const WeatherPrecision kelvin)
-{
-    return (9.0 / 5.0) * kelvin;                       //Rankine (used in JSBsim)
-}
-
-inline WeatherPrecision SIdensity2JSBsim    (const WeatherPrecision SIdensity)
-{
-    return 0.0019403203 * SIdensity;                   //slug / cubic feet (used in JSBsim)
-}
-
-inline WeatherPrecision Pascal2psf         (const WeatherPrecision Pascal)
-{
-    return 0.020885434 * Pascal;                       //lbs / square feet (used in JSBsim)
-}
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/****************************************************************************/
-
-/****************************************************************************/
-#endif /*FGWeatherUtils_H*/
diff --git a/src/WeatherCM/FGWeatherVectorWrap.h b/src/WeatherCM/FGWeatherVectorWrap.h
deleted file mode 100644 (file)
index 68f47fc..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*****************************************************************************
-
- Header:       FGWeatherVectorWrap.h   
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-make a wraper for an sgVec2 vector so that it can be used in a STL container
-
-HISTORY
-------------------------------------------------------------------------------
-18.10.1999 Christian Mayer     Created
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-21.12.1999 Christian Mayer     Added a fix for compatibility to gcc 2.8 which
-                               suggested by Oliver Delise
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGWeatherVectorWrap_H
-#define FGWeatherVectorWrap_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include <sg.h>
-               
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-#if ( __GNU_C__ == 2 && __GNU_MAJOR__ < 9 )
-#  define const_sgVec2 const sgVec2
-#else
-#  define const_sgVec2 const sgVec2&
-#endif
-
-struct sgVec2Wrap
-{
-    sgVec2 p;
-
-    sgVec2Wrap();
-    sgVec2Wrap( const_sgVec2 src ) { sgCopyVec2( p, src ); }
-};
-
-#endif /*FGWeatherVectorWrap_H*/
diff --git a/src/WeatherCM/FGWindItem.cpp b/src/WeatherCM/FGWindItem.cpp
deleted file mode 100644 (file)
index 88d0134..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*****************************************************************************
-
- Module:       FGWindItem.cpp
- Author:       Christian Mayer
- Date started: 28.05.99
- Called by:    FGMicroWeather
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-Operator< definition for the item
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-*****************************************************************************/
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-#include "FGWindItem.h"
-
-/****************************************************************************/
-/********************************** CODE ************************************/
-/****************************************************************************/
-
diff --git a/src/WeatherCM/FGWindItem.h b/src/WeatherCM/FGWindItem.h
deleted file mode 100644 (file)
index 9aa6ab3..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/*****************************************************************************
-
- Header:       FGWindItem.h    
- Author:       Christian Mayer
- Date started: 28.05.99
-
- -------- Copyright (C) 1999 Christian Mayer (fgfs@christianmayer.de) --------
-
- This program is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free Software
- Foundation; either version 2 of the License, or (at your option) any later
- version.
-
- This program is distributed in the hope that it will be useful, but WITHOUT
- ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- details.
-
- You should have received a copy of the GNU General Public License along with
- this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- Place - Suite 330, Boston, MA  02111-1307, USA.
-
- Further information about the GNU General Public License can also be found on
- the world wide web at http://www.gnu.org.
-
-FUNCTIONAL DESCRIPTION
-------------------------------------------------------------------------------
-wind item that gets stored in the micro weather class
-
-HISTORY
-------------------------------------------------------------------------------
-28.05.1999 Christian Mayer     Created
-16.06.1999 Durk Talsma         Portability for Linux
-20.06.1999 Christian Mayer     added lots of consts
-11.10.1999 Christian Mayer     changed set<> to map<> on Bernie Bright's 
-                               suggestion
-19.10.1999 Christian Mayer     change to use PLIB's sg instead of Point[2/3]D
-                               and lots of wee code cleaning
-21.12.1999 Christian Mayer     Added a fix for compatibility to gcc 2.8 which
-                               suggested by Oliver Delise
-*****************************************************************************/
-
-/****************************************************************************/
-/* SENTRY                                                                   */
-/****************************************************************************/
-#ifndef FGWindItem_H
-#define FGWindItem_H
-
-/****************************************************************************/
-/* INCLUDES                                                                */
-/****************************************************************************/
-
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <simgear/compiler.h>
-
-#ifdef HAVE_WINDOWS_H
-#  include <windows.h>
-#endif
-
-#include <plib/sg.h>
-
-#include "FGWeatherDefs.h"
-
-/****************************************************************************/
-/* DEFINES                                                                 */
-/****************************************************************************/
-class FGWindItem;
-FGWindItem operator-(const FGWindItem& arg);
-
-#if ( __GNU_C__ == 2 && __GNU_MAJOR__ < 9 )
-#  define const_sgVec3 const sgVec3
-#else
-#  define const_sgVec3 const sgVec3&
-#endif
-
-/****************************************************************************/
-/* CLASS DECLARATION                                                       */
-/****************************************************************************/
-class FGWindItem
-{
-private:
-    sgVec3 value;
-
-protected:
-public:
-
-    FGWindItem(const_sgVec3 v) { sgCopyVec3(value, v); }
-    FGWindItem(const WeatherPrecision x, const WeatherPrecision y, const WeatherPrecision z)   
-                               { sgSetVec3 (value, x, y, z); }
-    FGWindItem()               { sgZeroVec3(value);    }
-
-    void          getValue(sgVec3 ret) const { sgCopyVec3(ret, value); };
-    const sgVec3* getValue(void)       const { return &value;          };
-
-    WeatherPrecision x(void) const { return value[0]; };
-    WeatherPrecision y(void) const { return value[1]; };
-    WeatherPrecision z(void) const { return value[2]; };
-
-    void x(const WeatherPrecision x) { value[0] = x; };
-    void y(const WeatherPrecision y) { value[1] = y; };
-    void z(const WeatherPrecision z) { value[2] = z; };
-
-    FGWindItem& operator*= (const WeatherPrecision arg);
-    FGWindItem& operator+= (const FGWindItem&      arg);
-    FGWindItem& operator-= (const FGWindItem&      arg);
-
-    friend FGWindItem operator-(const FGWindItem& arg);
-};
-
-inline FGWindItem& FGWindItem::operator*= (const WeatherPrecision arg)
-{
-  sgScaleVec3(value, arg);
-  return *this;
-}
-
-inline FGWindItem& FGWindItem::operator+= (const FGWindItem& arg)
-{
-  sgAddVec3(value, *arg.getValue());
-  return *this;
-}
-
-inline FGWindItem& FGWindItem::operator-= (const FGWindItem& arg)
-{
-  sgSubVec3(value, *arg.getValue());
-  return *this;
-}
-
-
-inline FGWindItem operator-(const FGWindItem& arg)
-{
-    sgVec3 temp;
-
-    sgNegateVec3(temp, *arg.getValue());
-
-    return FGWindItem(temp);
-}
-
-/****************************************************************************/
-#endif /*FGWindItem_H*/
diff --git a/src/WeatherCM/Makefile.am b/src/WeatherCM/Makefile.am
deleted file mode 100644 (file)
index a88b0c2..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-noinst_LIBRARIES = libWeatherCM.a
-
-libWeatherCM_a_SOURCES = \
-       FGAirPressureItem.cpp FGAirPressureItem.h \
-       FGCloud.h FGCloudItem.cpp FGCloudItem.h \
-       FGLocalWeatherDatabase.cpp FGLocalWeatherDatabase.h \
-       FGPhysicalProperties.cpp FGPhysicalProperties.h \
-       FGPhysicalProperties_bind.cpp \
-       FGPhysicalProperty.cpp FGPhysicalProperty.h \
-       FGSnowRain.h \
-       FGTemperatureItem.cpp FGTemperatureItem.h \
-       FGThunderstorm.cpp FGThunderstorm.h \
-       FGTurbulenceItem.cpp FGTurbulenceItem.h \
-       FGVaporPressureItem.cpp FGVaporPressureItem.h \
-       FGWeatherDefs.h FGWeatherFeature.h FGWeatherUtils.h \
-       FGWeatherParse.cpp FGWeatherParse.h \
-       FGWeatherVectorWrap.h \
-       FGWindItem.cpp FGWindItem.h \
-        linintp2.cpp linintp2.h \
-        sphrintp.cpp sphrintp.h
-
-INCLUDES = -I$(top_srcdir) -I$(top_srcdir)/src
diff --git a/src/WeatherCM/air-pressure-explanation.txt b/src/WeatherCM/air-pressure-explanation.txt
deleted file mode 100644 (file)
index b26f118..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-The formula p(x) for calculating the air pressure at a given altitude
----------------------------------------------------------------------
-
-Well known is the baromertic(?) formula
-
-                   rho0
-                  ------ * g * x
-                    p0
-    p(x) = p0 * e
-
-with p0 being the airpressure and rho0 being the air density at an altitude of
-0 metres above sea level and g being the gravity constant of 9.81 m/sq. sec
-
-This formula can easily be derivated when you know, that:
-
- * the pressure difference is
-
-    dp = - rho * g * dx
-
- * Boyle-Mariotte says:
-
-    p0 : p = rho0 : rho
-
-Combinig the terms and changing them around I get:
-
-    dp                 [  rho0         ]
-       -- = - rho * g = - [ ------ * p(x) ] * g
-       dx                 [   p0          ]
-
-               rho0
-       p'(x) = - ------ * p(x) * g
-                   p0
-
-Solving that differential equation and knowing that p(0) = p0 I get:
-
-                     rho0
-                  - ------ * g * x
-                      p0
-    p(x) = p0 * e
-
-q.e.d.
-
--------------------------------------------------------------------------------
-
-The problem with that equation is that it doesn't take different temperatures
-at different altitudes into account. And the inaccuracies due to it are huge.
-That's why this formula is only used in very low altitudes.
-
-So to get a usefull formula for FlightGear I need to extend it. And as I'm
-already 'recreating' that formula I'm taking the change in g into account, too.
-This doesn't make such a dramatic difference to the result as the inclusion of
-temperature change does, but it doesn't complicate the final formula too much.
-
-So I get three formulas that I'm combining in the end:
-
- * the change of g with the altitude:
-
-               G * m
-     g(x) = -----------
-             (x + r)^2
-    G is the universal gravity constant(?) and is 6.673e-11 m^3 kg^-1 s^-2
-       m is the mass of the earth and is             5.977e24 kg
-       r is the radius of the earth and is           6368 km
-
- * The pressure difference stays the same:
-
-    dp = - rho * g(x) * dx
-
- * If I combine Boyle-Mariotte with Gay-Lussac I get:
-
-           rho0 * T0     p
-    rho = ----------- * ---
-               p0        T
-
-Combining the terms again I get this time:
-
-    dp                    [  rho0 * T0     p(x)  ]
-       -- = - rho * g(x) = - [ ----------- * ------ ] * g(x)
-       dx                    [      p0        T(x)  ]
-
-               rho0 * T0     p(x) * g(x)
-       p'(x) = - ----------- * -------------
-                      p0           T(x)
-
-This DE isn't that easy to solve as the one above, it by looking into the right
-books you'll see the general solution for:
-
-    y' + f(x)*y = 0
-
-is
-                 x
-                 /\
-              -  |  f(x) dx
-                \/
-                 n
-    y = m * e 
-
-and P(m,n) will be a point on the graph.
-
-For q = n = 0 metres altitude we get y = m. As y is p(x) we know that m has to
-be p0.
-
-So our final formuala is
-
-              ho0 * T0     g(x)
-       f1(x) = ----------- * ------
-                    p0        T(x)
-
-
-                     x                     x
-                     /\                    /\
-                  -  |  f1(x) dx           |  f(x) dx
-                    \/                    \/
-                     0                     0                   F(x) - F(0)
-    p(x) = p0 * e                = p0 * e             = p0 * e
-
-The only disturbing thing we've got left is the integral. Luckily there is a
-great service at http://integrals.wolfram.com/ that helps me doing it :-)
-
-But the f(x) is still too general so I'm substituting:
-
-                rho0 * T0 * G * m
-       f(x) = - -----------------------
-                 p0 * (x + r)^2 * T(x)
-
-but even that isn't good enough. But as I'm linearily interpolating between
-two different temperatures I can say that T(x) = a*x + b for the x inbetween 
-two different stored temperatures. So I just need to integrate every pice
-independandly. But anyway, I get:
-   
-                    rho0 * T0 * G * m
-       f(x) = - ------------------------------
-                 p0 * (x + r)^2 * (a * x + b)
-
-Integrating that I get:
-
-              rho0 * T0 * G * m    [            1
-    F(x) = - ------------------- * [ ------------------------ -
-                         p0           [  (-b + a * r) * (r + x) 
-
-
-                                          a * log|r + x|     a * log|b + a * x|  ]
-                                         ---------------- + -------------------- ]
-                                          (b - a * r)^2        (b - a * r)^2     ]
-
-To lower the computional cost I can transfere the equation.
-
- * I'm defining
-
-                rho0 * T0 * G * m    
-    factor = - ------------------- 
-                           p0 
-               1
-       c = --------------
-            (-b + a * r)
-
- * now I can write
-
-                    [     c                                                 ]
-       F(x) = factor * [ --------- - a * c * c * [log|r + x| + log|b + a * x|] ]
-                       [  (r + x)                                              ]
-
- * and simplyfy it to
-
-                        [     1                                          ]
-       F(x) = factor * c * [ --------- - a * c * log|(r + x) * (b + a * x)| ]
-                           [  (r + x)                                       ]
-
--------------------------------------------------------------------------------
-The following table shows quite nicely how accurate my formula is:
-
- Altitude[m] | Airpressure [hPa]             | Error [%]
-             |    Official   |   My formula  |
- ------------+---------------+---------------+---------------
-      -200   | 1037.51       | 1037.24       |  0.0260     
-      -100   | 1025.32       | 1025.19       |  0.0127    
-         0   | 1013.25       | 1013.25       |  0.0   
-       500   |  954.59       |  955.224      |  0.0664     
-      1000   |  898.70       |  899.912      |  0.1349     
-      2000   |  794.88       |  797.042      |  0.2720     
-      3000   |  700.99       |  703.885      |  0.4130     
-      4000   |  616.28       |  619.727      |  0.5593     
-      5000   |  540.07       |  543.89       |  0.7073    
-      6000   |  471.67       |  475.731      |  0.8610     
-      7000   |  410.46       |  414.643      |  1.0191     
-      8000   |  355.84       |  360.054      |  1.1842     
-      9000   |  307.27       |  311.422      |  1.3513     
-     10000   |  264.21       |  268.238      |  1.5245     
-     20000   |   54.670/55.3 |   55.7971     |  2.0616/0.8989      
-     30000   |   11.8        |   11.3149     |  1.5441      
-     40000   |    3.0        |    2.74665    | 18.9703       
-     50000   |    0.88       |    0.753043   | 41.9183
-     60000   |    0.257      |    0.221907   | 57.9802
-     70000   |    0.0602     |    0.0530785  | 61.9153
-     80000   |    0.0101     |    0.00905461 | 51.5725
-    100000   |    2.14e-4    |    2.03984e-4 |  5.5131
-
-The official values are from the CINA atmosphere which assumes a air pressure
-of 1013.25 hPa and a temperature of 15 degC at sea level and a temperature
-gradient of -6.5 deg/km. The CINA atmosphere gives only values for altiudes 
-up to 20 km. The values for 20 km and above are from the 1959 ARDC atmosphere.
-That's why I've got two values at 20000 metres.
-The temperature changes dramtically in the altitudes over 20 km which I didn't
-take care of in my calculations which explains the huge errors at that altitude
-range. But you can see nicely that the values are at least quite close to the
-official values.
-Using a better temperature model for the altitudes above 20 km should
-dramatically increase the accuracy there.
-
-
-
-
diff --git a/src/WeatherCM/linintp2.cpp b/src/WeatherCM/linintp2.cpp
deleted file mode 100644 (file)
index 41a43da..0000000
+++ /dev/null
@@ -1,549 +0,0 @@
-/*
-  WARNING - Do not remove this header.
-
-  This code is a templated version of the 'magic-software' spherical
-  interpolation code by Dave Eberly. The original (un-hacked) code can be
-  obtained from here: http://www.magic-software.com/gr_appr.htm
-  This code is derived from linintp2.h/cpp and sphrintp.h/cpp.
-
-  Dave Eberly says that the conditions for use are:
-
-  * You may distribute the original source code to others at no charge.
-
-  * You may modify the original source code and distribute it to others at
-    no charge. The modified code must be documented to indicate that it is
-    not part of the original package.
-
-  * You may use this code for non-commercial purposes. You may also
-    incorporate this code into commercial packages. However, you may not
-    sell any of your source code which contains my original and/or modified
-    source code. In such a case, you need to factor out my code and freely
-    distribute it.
-
-  * The original code comes with absolutely no warranty and no guarantee is
-    made that the code is bug-free.
-
-  This does not seem incompatible with GPL - so this modified version
-  is hereby placed under GPL along with the rest of FlightGear.
-
-                              Christian Mayer
-*/
-
-#include <simgear/compiler.h>
-#include STL_IOSTREAM
-#include <simgear/debug/logstream.hxx>
-
-#include <float.h>
-#include <math.h>
-#include <stdlib.h>
-#include "linintp2.h"
-
-SG_USING_NAMESPACE(std);
-SG_USING_STD(cout);
-
-//---------------------------------------------------------------------------
-mgcLinInterp2D::mgcLinInterp2D (int _numPoints, double* x, double* y, 
-                                   unsigned int* _f)
-{
-    if ( (numPoints = _numPoints) < 3 )
-    {
-        point = 0;
-        edge = 0;
-        triangle = 0;
-        numTriangles = 0;
-        return;
-    }
-
-    SG_LOG(SG_MATH, SG_DEBUG, "[ 20%] allocating memory");
-
-    point = new double*[numPoints];
-    tmppoint = new double*[numPoints+3];
-    f = new unsigned int[numPoints];
-    int i;
-    for (i = 0; i < numPoints; i++)
-        point[i] = new double[2];
-    for (i = 0; i < numPoints+3; i++)
-        tmppoint[i] = new double[2];
-    for (i = 0; i < numPoints; i++)
-    {
-        point[i][0] = tmppoint[i][0] = x[i];
-        point[i][1] = tmppoint[i][1] = y[i];
-
-       f[i] = _f[i];
-    }
-
-    SG_LOG(SG_MATH, SG_DEBUG, "[ 30%] creating delaunay diagram");
-
-    Delaunay2D();
-}
-//---------------------------------------------------------------------------
-mgcLinInterp2D::~mgcLinInterp2D ()
-{
-    if ( numPoints < 3 )
-        return;
-
-    int i;
-
-    if ( point )
-    {
-        for (i = 0; i < numPoints; i++)
-            delete[] point[i];
-        delete[] point;
-    }
-    if ( tmppoint )
-    {
-        for (i = 0; i < numPoints+3; i++)
-            delete[] tmppoint[i];
-        delete[] tmppoint;
-    }
-
-    delete[] f;
-    delete[] edge;
-    delete[] triangle;
-}
-//---------------------------------------------------------------------------
-void mgcLinInterp2D::ComputeBarycenter (Vertex& v0, Vertex& v1, Vertex& v2, 
-                                           Vertex& ver, double c[3])
-{
-    double a0 = v0.x-v2.x;
-    double b0 = v0.y-v2.y;
-    double a1 = v1.x-v2.x;
-    double b1 = v1.y-v2.y;
-    double a2 = ver.x-v2.x;
-    double b2 = ver.y-v2.y;
-
-    double m00 = a0*a0+b0*b0;
-    double m01 = a0*a1+b0*b1;
-    double m11 = a1*a1+b1*b1;
-    double r0 = a2*a0+b2*b0;
-    double r1 = a2*a1+b2*b1;
-    double det = m00*m11-m01*m01;
-
-    c[0] = (m11*r0-m01*r1)/det;
-    c[1] = (m00*r1-m01*r0)/det;
-    c[2] = 1-c[0]-c[1];
-}
-//---------------------------------------------------------------------------
-int mgcLinInterp2D::InTriangle (Vertex& v0, Vertex& v1, Vertex& v2, 
-                                   Vertex& test)
-{
-    const double eps = 1e-08;
-    double tx, ty, nx, ny;
-
-    // test against normal to first edge
-    tx = test.x - v0.x;
-    ty = test.y - v0.y;
-    nx = v0.y - v1.y;
-    ny = v1.x - v0.x;
-    if ( tx*nx + ty*ny < -eps )
-        return 0;
-
-    // test against normal to second edge
-    tx = test.x - v1.x;
-    ty = test.y - v1.y;
-    nx = v1.y - v2.y;
-    ny = v2.x - v1.x;
-    if ( tx*nx + ty*ny < -eps )
-        return 0;
-
-    // test against normal to third edge
-    tx = test.x - v2.x;
-    ty = test.y - v2.y;
-    nx = v2.y - v0.y;
-    ny = v0.x - v2.x;
-    if ( tx*nx + ty*ny < -eps )
-        return 0;
-
-    return 1;
-}
-//---------------------------------------------------------------------------
-int mgcLinInterp2D::Evaluate (double x, double y, EvaluateData& F)
-{
-    Vertex ver = { x, y };
-    // determine which triangle contains the target point
-
-    int i; 
-    Vertex v0, v1, v2;
-    for (i = 0; i < numTriangles; i++)
-    {
-        Triangle& t = triangle[i];
-        v0.x = point[t.vertex[0]][0];
-        v0.y = point[t.vertex[0]][1];
-        v1.x = point[t.vertex[1]][0];
-        v1.y = point[t.vertex[1]][1];
-        v2.x = point[t.vertex[2]][0];
-        v2.y = point[t.vertex[2]][1];
-
-        if ( InTriangle(v0,v1,v2,ver) )
-            break;
-    }
-
-    if ( i == numTriangles )  // point is outside interpolation region
-    {
-       return 0;
-    }
-
-    Triangle& t = triangle[i];  // (x,y) is in this triangle
-
-    // compute barycentric coordinates with respect to subtriangle
-    double bary[3];
-    ComputeBarycenter(v0,v1,v2,ver,bary);
-
-    // compute barycentric combination of function values at vertices
-    F.index[0] = f[t.vertex[0]];
-    F.index[1] = f[t.vertex[1]];
-    F.index[2] = f[t.vertex[2]];
-    F.percentage[0] = bary[0];
-    F.percentage[1] = bary[1];
-    F.percentage[2] = bary[2];
-
-    return 1;
-}
-//---------------------------------------------------------------------------
-int mgcLinInterp2D::Delaunay2D ()
-{
-    int result;
-
-    const double EPSILON = 1e-12;
-    const int TSIZE = 75;
-    const double RANGE = 10.0;
-
-    xmin = tmppoint[0][0];
-    xmax = xmin;
-    ymin = tmppoint[0][1];
-    ymax = ymin;
-
-    int i;
-    for (i = 0; i < numPoints; i++)
-    {
-        double value = tmppoint[i][0];
-        if ( xmax < value )
-            xmax = value;
-        if ( xmin > value )
-            xmin = value;
-
-        value = tmppoint[i][1];
-        if ( ymax < value )
-            ymax = value;
-        if ( ymin > value )
-            ymin = value;
-    }
-
-    double xrange = xmax-xmin, yrange = ymax-ymin;
-    double maxrange = xrange;
-    if ( maxrange < yrange )
-        maxrange = yrange;
-
-    // need to scale the data later to do a correct triangle count
-    double maxrange2 = maxrange*maxrange;
-
-    // tweak the points by very small random numbers
-    double bgs = EPSILON*maxrange;
-    srand(367);   
-    for (i = 0; i < numPoints; i++) 
-    {
-        tmppoint[i][0] += bgs*(0.5 - rand()/double(RAND_MAX));
-        tmppoint[i][1] += bgs*(0.5 - rand()/double(RAND_MAX));
-    }
-
-    double wrk[2][3] =
-    {
-        { 5*RANGE, -RANGE, -RANGE },
-        { -RANGE, 5*RANGE, -RANGE }
-    };
-    for (i = 0; i < 3; i++)
-    {
-        tmppoint[numPoints+i][0] = xmin+xrange*wrk[0][i];
-        tmppoint[numPoints+i][1] = ymin+yrange*wrk[1][i];
-    }
-
-    int i0, i1, i2, i3, i4, i5, i6, i7, i8, i9, i11;
-    int nts, ii[3];
-    double xx;
-
-    int tsz = 2*TSIZE;
-    int** tmp = new int*[tsz+1];
-    tmp[0] = new int[2*(tsz+1)];
-    for (i0 = 1; i0 < tsz+1; i0++)
-        tmp[i0] = tmp[0] + 2*i0;
-    i1 = 2*(numPoints + 2);
-
-    int* id = new int[i1];
-    for (i0 = 0; i0 < i1; i0++) 
-        id[i0] = i0; 
-
-    int** a3s = new int*[i1];
-    a3s[0] = new int[3*i1];
-    for (i0 = 1; i0 < i1; i0++)
-        a3s[i0] = a3s[0] + 3*i0;
-    a3s[0][0] = numPoints;
-    a3s[0][1] = numPoints+1;
-    a3s[0][2] = numPoints+2;
-
-    double** ccr = new double*[i1];  // circumscribed centers and radii
-    ccr[0] = new double[3*i1];
-    for (i0 = 1; i0 < i1; i0++)
-        ccr[i0] = ccr[0] + 3*i0;
-    ccr[0][0] = 0.0;
-    ccr[0][1] = 0.0;
-    ccr[0][2] = FLT_MAX;
-
-    nts = 1;  // number of triangles
-    i4 = 1;
-
-    SG_LOG(SG_MATH, SG_DEBUG, "[ 40%] create triangulation");
-
-    // compute triangulation
-    for (i0 = 0; i0 < numPoints; i0++)
-    {  
-        i1 = i7 = -1;
-        i9 = 0;
-        for (i11 = 0; i11 < nts; i11++)
-        {
-            i1++;
-            while ( a3s[i1][0] < 0 ) 
-                i1++;
-            xx = ccr[i1][2];
-            for (i2 = 0; i2 < 2; i2++)
-            {  
-                double z = tmppoint[i0][i2]-ccr[i1][i2];
-                xx -= z*z;
-                if ( xx < 0 ) 
-                    goto Corner3;
-            }
-            i9--;
-            i4--;
-            id[i4] = i1;
-            for (i2 = 0; i2 < 3; i2++)
-            {  
-                ii[0] = 0;
-                if (ii[0] == i2) 
-                    ii[0]++;
-                for (i3 = 1; i3 < 2; i3++)
-                {  
-                    ii[i3] = ii[i3-1] + 1;
-                    if (ii[i3] == i2) 
-                        ii[i3]++;
-                }
-                if ( i7 > 1 )
-                {  
-                    i8 = i7;
-                    for (i3 = 0; i3 <= i8; i3++)
-                    {  
-                        for (i5 = 0; i5 < 2; i5++) 
-                            if ( a3s[i1][ii[i5]] != tmp[i3][i5] ) 
-                                goto Corner1;
-                        for (i6 = 0; i6 < 2; i6++) 
-                            tmp[i3][i6] = tmp[i8][i6];
-                        i7--;
-                        goto Corner2;
-Corner1:;
-                    }
-                }
-                if ( ++i7 > tsz )
-                {
-                    // temporary storage exceeded, increase TSIZE
-                    result = 0;
-                    goto ExitDelaunay;
-                }
-                for (i3 = 0; i3 < 2; i3++) 
-                    tmp[i7][i3] = a3s[i1][ii[i3]];
-Corner2:;
-            }
-            a3s[i1][0] = -1;
-Corner3:;
-        }
-
-        for (i1 = 0; i1 <= i7; i1++)
-        {  
-            for (i2 = 0; i2 < 2; i2++)
-                for (wrk[i2][2] = 0, i3 = 0; i3 < 2; i3++)
-                {  
-                    wrk[i2][i3] = tmppoint[tmp[i1][i2]][i3]-tmppoint[i0][i3];
-                    wrk[i2][2] += 
-                        0.5*wrk[i2][i3]*(tmppoint[tmp[i1][i2]][i3]+
-                        tmppoint[i0][i3]);
-                }
-
-            xx = wrk[0][0]*wrk[1][1]-wrk[1][0]*wrk[0][1];
-            ccr[id[i4]][0] = (wrk[0][2]*wrk[1][1]-wrk[1][2]*wrk[0][1])/xx;
-            ccr[id[i4]][1] = (wrk[0][0]*wrk[1][2]-wrk[1][0]*wrk[0][2])/xx;
-
-            for (ccr[id[i4]][2] = 0, i2 = 0; i2 < 2; i2++) 
-            {  
-                double z = tmppoint[i0][i2]-ccr[id[i4]][i2];
-                ccr[id[i4]][2] += z*z;
-                a3s[id[i4]][i2] = tmp[i1][i2];
-            }
-
-            a3s[id[i4]][2] = i0;
-            i4++;
-            i9++;
-        }
-        nts += i9;
-    }
-
-    // count the number of triangles
-    SG_LOG(SG_MATH, SG_DEBUG, "[ 50%] count the number of triangles");
-
-    numTriangles = 0;
-    i0 = -1;
-    for (i11 = 0; i11 < nts; i11++)
-    {  
-        i0++;
-        while ( a3s[i0][0] < 0 ) 
-            i0++;
-        if ( a3s[i0][0] < numPoints )
-        {  
-            for (i1 = 0; i1 < 2; i1++) 
-                for (i2 = 0; i2 < 2; i2++) 
-                    wrk[i1][i2] = 
-                        tmppoint[a3s[i0][i1]][i2]-tmppoint[a3s[i0][2]][i2];
-
-            if ( fabs(wrk[0][0]*wrk[1][1]-wrk[0][1]*wrk[1][0]) > EPSILON*maxrange2 )
-                numTriangles++;
-        }
-    }
-
-    // create the triangles
-    SG_LOG(SG_MATH, SG_DEBUG, "[ 60%] create the triangles");
-
-    triangle = new Triangle[numTriangles];
-
-    numTriangles = 0;
-    i0 = -1;
-    for (i11 = 0; i11 < nts; i11++)
-    {  
-        i0++;
-        while ( a3s[i0][0] < 0 ) 
-            i0++;
-        if ( a3s[i0][0] < numPoints )
-        {  
-            for (i1 = 0; i1 < 2; i1++) 
-                for (i2 = 0; i2 < 2; i2++) 
-                    wrk[i1][i2] = 
-                        tmppoint[a3s[i0][i1]][i2]-tmppoint[a3s[i0][2]][i2];
-            xx = wrk[0][0]*wrk[1][1]-wrk[0][1]*wrk[1][0];
-            if ( fabs(xx) > EPSILON*maxrange2 )
-            {  
-                int delta = xx < 0 ? 1 : 0;
-                Triangle& tri = triangle[numTriangles];
-                tri.vertex[0] = a3s[i0][0];
-                tri.vertex[1] = a3s[i0][1+delta];
-                tri.vertex[2] = a3s[i0][2-delta];
-                tri.adj[0] = -1;
-                tri.adj[1] = -1;
-                tri.adj[2] = -1;
-                numTriangles++;
-            }
-        }
-    }
-
-    // build edge table
-    SG_LOG(SG_MATH, SG_DEBUG, "[ 70%] build the edge table");
-
-    numEdges = 0;
-    edge = new Edge[3*numTriangles];
-
-    int j, j0, j1;
-    for (i = 0; i < numTriangles; i++)
-    {
-       if ( (i%500) == 0)
-           SG_LOG(SG_MATH, SG_BULK, "[ 7" << 10*i/numTriangles << "%] build the edge table");
-
-        Triangle& t = triangle[i];
-
-        for (j0 = 0, j1 = 1; j0 < 3; j0++, j1 = (j1+1)%3)
-        {
-            for (j = 0; j < numEdges; j++)
-            {
-                Edge& e = edge[j];
-                if ( (t.vertex[j0] == e.vertex[0] 
-                   && t.vertex[j1] == e.vertex[1])
-                ||   (t.vertex[j0] == e.vertex[1] 
-                   && t.vertex[j1] == e.vertex[0]) )
-                    break;
-            }
-            if ( j == numEdges )  // add edge to table
-            {
-                edge[j].vertex[0] = t.vertex[j0];
-                edge[j].vertex[1] = t.vertex[j1];
-                edge[j].triangle[0] = i;
-                edge[j].index[0] = j0;
-                edge[j].triangle[1] = -1;
-                numEdges++;
-            }
-            else  // edge already exists, add triangle to table
-            {
-                edge[j].triangle[1] = i;
-                edge[j].index[1] = j0;
-            }
-        }
-    }
-
-    // establish links between adjacent triangles
-    SG_LOG(SG_MATH, SG_DEBUG, "[ 80%] establishing links between adjacent triangles");
-
-    for (i = 0; i < numEdges; i++)
-    {
-        if ( edge[i].triangle[1] != -1 )
-        {
-            j0 = edge[i].triangle[0];
-            j1 = edge[i].triangle[1];
-            triangle[j0].adj[edge[i].index[0]] = j1;
-            triangle[j1].adj[edge[i].index[1]] = j0;
-        }
-    }
-
-    result = 1;
-
-ExitDelaunay:;
-    delete[] tmp[0];
-    delete[] tmp;
-    delete[] id;
-    delete[] a3s[0];
-    delete[] a3s;
-    delete[] ccr[0];
-    delete[] ccr;
-
-    SG_LOG(SG_MATH, SG_DEBUG, "[ 90%] finsishes delauney triangulation");
-
-    return result;
-}
-//---------------------------------------------------------------------------
-void mgcLinInterp2D::GetPoint (int i, double& x, double& y)
-{
-    // assumes i is valid [can use PointCount() before passing i]
-    x = point[i][0];
-    y = point[i][1];
-}
-//---------------------------------------------------------------------------
-void mgcLinInterp2D::GetEdge (int i, double& x0, double& y0, double& x1,
-                                 double& y1)
-{
-    // assumes i is valid [can use EdgeCount() before passing i]
-    int v0 = edge[i].vertex[0], v1 = edge[i].vertex[1];
-
-    x0 = point[v0][0];
-    y0 = point[v0][1];
-    x1 = point[v1][0];
-    y1 = point[v1][1];
-}
-//---------------------------------------------------------------------------
-void mgcLinInterp2D::GetTriangle (int i, double& x0, double& y0, double& x1,
-                                     double& y1, double& x2, double& y2)
-{
-    // assumes i is valid [can use TriangleCount() before passing i]
-    int v0 = triangle[i].vertex[0];
-    int v1 = triangle[i].vertex[1];
-    int v2 = triangle[i].vertex[2];
-
-    x0 = point[v0][0];
-    y0 = point[v0][1];
-    x1 = point[v1][0];
-    y1 = point[v1][1];
-    x2 = point[v2][0];
-    y2 = point[v2][1];
-}
-//---------------------------------------------------------------------------
-
diff --git a/src/WeatherCM/linintp2.h b/src/WeatherCM/linintp2.h
deleted file mode 100644 (file)
index c0925b4..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
-  WARNING - Do not remove this header.
-
-  This code is a templated version of the 'magic-software' spherical
-  interpolation code by Dave Eberly. The original (un-hacked) code can be
-  obtained from here: http://www.magic-software.com/gr_appr.htm
-  This code is derived from linintp2.h/cpp and sphrintp.h/cpp.
-
-  Dave Eberly says that the conditions for use are:
-
-  * You may distribute the original source code to others at no charge.
-
-  * You may modify the original source code and distribute it to others at
-    no charge. The modified code must be documented to indicate that it is
-    not part of the original package.
-
-  * You may use this code for non-commercial purposes. You may also
-    incorporate this code into commercial packages. However, you may not
-    sell any of your source code which contains my original and/or modified
-    source code. In such a case, you need to factor out my code and freely
-    distribute it.
-
-  * The original code comes with absolutely no warranty and no guarantee is
-    made that the code is bug-free.
-
-  This does not seem incompatible with GPL - so this modified version
-  is hereby placed under GPL along with the rest of FlightGear.
-
-                              Christian Mayer
-*/
-
-#ifndef LININTP2_H
-#define LININTP2_H
-
-struct EvaluateData
-{
-    unsigned int index[3];
-    double percentage[3];
-};
-
-class mgcLinInterp2D
-{
-public:
-    mgcLinInterp2D (int _numPoints, double* x, double* y, unsigned int* _f);
-
-    ~mgcLinInterp2D ();
-
-    double XMin () { return xmin; }
-    double XMax () { return xmax; }
-    double XRange () { return xmax-xmin; }
-    double YMin () { return ymin; }
-    double YMax () { return ymax; }
-    double YRange () { return ymax-ymin; }
-
-    int PointCount () { return numPoints; }
-    void GetPoint (int i, double& x, double& y);
-
-    int EdgeCount () { return numEdges; }
-    void GetEdge (int i, double& x0, double& y0, double& x1, double& y1);
-
-    int TriangleCount () { return numTriangles; }
-    void GetTriangle (int i, double& x0, double& y0, double& x1, double& y1,
-        double& x2, double& y2);
-
-    int Evaluate (double x, double y, EvaluateData& F);
-    
-private:
-    typedef struct
-    {
-        double x, y;
-    }
-    Vertex;
-
-    typedef struct
-    {
-        int vertex[3];  // listed in counterclockwise order
-
-        int adj[3];
-            // adj[0] points to triangle sharing edge (vertex[0],vertex[1])
-            // adj[1] points to triangle sharing edge (vertex[1],vertex[2])
-            // adj[2] points to triangle sharing edge (vertex[2],vertex[0])
-    }
-    Triangle;
-
-    typedef struct 
-    {
-        int vertex[2];
-        int triangle[2];
-        int index[2];
-    } 
-    Edge;
-
-    int numPoints;
-    double** point;
-    double** tmppoint;
-    unsigned int* f;
-
-    double xmin, xmax, ymin, ymax;
-
-
-    int numEdges;
-    Edge* edge;
-
-    int numTriangles;
-    Triangle* triangle;
-
-    int Delaunay2D ();
-    void ComputeBarycenter (Vertex& v0, Vertex& v1, Vertex& v2, Vertex& ver, 
-                            double c[3]);
-    int InTriangle (Vertex& v0, Vertex& v1, Vertex& v2, Vertex& test);
-};
-
-#endif
diff --git a/src/WeatherCM/sphrintp.cpp b/src/WeatherCM/sphrintp.cpp
deleted file mode 100644 (file)
index 52b43db..0000000
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
-  WARNING - Do not remove this header.
-
-  This code is a templated version of the 'magic-software' spherical
-  interpolation code by Dave Eberly. The original (un-hacked) code can be
-  obtained from here: http://www.magic-software.com/gr_appr.htm
-  This code is derived from linintp2.h/cpp and sphrintp.h/cpp.
-
-  Dave Eberly says that the conditions for use are:
-
-  * You may distribute the original source code to others at no charge.
-
-  * You may modify the original source code and distribute it to others at
-    no charge. The modified code must be documented to indicate that it is
-    not part of the original package.
-
-  * You may use this code for non-commercial purposes. You may also
-    incorporate this code into commercial packages. However, you may not
-    sell any of your source code which contains my original and/or modified
-    source code. In such a case, you need to factor out my code and freely
-    distribute it.
-
-  * The original code comes with absolutely no warranty and no guarantee is
-    made that the code is bug-free.
-
-  This does not seem incompatible with GPL - so this modified version
-  is hereby placed under GPL along with the rest of FlightGear.
-
-                              Christian Mayer
-*/
-
-#include <simgear/compiler.h>
-#include STL_IOSTREAM
-#include <simgear/debug/logstream.hxx>
-
-#include <math.h>
-#include "sphrintp.h"
-
-SG_USING_NAMESPACE(std);
-SG_USING_STD(cout);
-
-
-static const double PI = 4.0*atan(1.0);
-static const double TWOPI = 2.0*PI;
-
-//---------------------------------------------------------------------------
-SphereInterpolate::SphereInterpolate (int n, const double* x,
-                                        const double* y, const double* z,
-                                        const unsigned int* f)
-{
-    // Assumes (x[i],y[i],z[i]) is unit length for all 0 <= i < n.
-    // For complete spherical coverage, include the two antipodal points
-    // (0,0,1,f(0,0,1)) and (0,0,-1,f(0,0,-1)) in the data set.
-    
-    SG_LOG(SG_MATH, SG_DEBUG, "Initialising spherical interpolator.");
-    SG_LOG(SG_MATH, SG_DEBUG, "[  0%] Allocating memory");
-
-    theta = new double[3*n];
-    phi = new double[3*n];
-    func = new unsigned int[3*n];
-    
-    // convert data to spherical coordinates
-    int i;
-
-    for (i = 0; i < n; i++)
-    {
-       GetSphericalCoords(x[i],y[i],z[i],theta[i],phi[i]);
-       func[i] = f[i];
-    }
-    
-    // use periodicity to get wrap-around in the Delaunay triangulation
-    SG_LOG(SG_MATH, SG_DEBUG, "[ 10%] copying vertices for wrap-aroundr");
-    int j, k;
-    for (i = 0, j = n, k = 2*n; i < n; i++, j++, k++)
-    {
-       theta[j] = theta[i]+TWOPI;
-       theta[k] = theta[i]-TWOPI;
-       phi[j] = phi[i];
-       phi[k] = phi[i];
-       func[j] = func[i];
-       func[k] = func[i];
-    }
-    
-    pInterp = new mgcLinInterp2D(3*n,theta,phi,func);
-
-    SG_LOG(SG_MATH, SG_DEBUG, "[100%] Finished initialising spherical interpolator.");
-}
-
-SphereInterpolate::SphereInterpolate (int n, const sgVec2* p, const unsigned int* f)
-{
-    // Assumes (x[i],y[i],z[i]) is unit length for all 0 <= i < n.
-    // For complete spherical coverage, include the two antipodal points
-    // (0,0,1,f(0,0,1)) and (0,0,-1,f(0,0,-1)) in the data set.
-    SG_LOG(SG_MATH, SG_DEBUG, "Initialising spherical interpolator.");
-    SG_LOG(SG_MATH, SG_DEBUG, "[  0%] Allocating memory");
-
-    theta = new double[3*n];
-    phi = new double[3*n];
-    func = new unsigned int[3*n];
-
-    // convert data to spherical coordinates
-    SG_LOG(SG_MATH, SG_DEBUG, "[ 10%] copying vertices for wrap-around");
-
-    int i, j, k;
-    for (i = 0, j = n, k = 2*n; i < n; i++, j++, k++)
-    {
-       phi[i] = p[i][0];
-       theta[i] = p[i][1];
-       func[i] = f[i];
-
-       // use periodicity to get wrap-around in the Delaunay triangulation
-       phi[j] = phi[i];
-       phi[k] = phi[i];
-       theta[j] = theta[i]+TWOPI;
-       theta[k] = theta[i]-TWOPI;
-       func[j] = func[i];
-       func[k] = func[i];
-    }
-    
-    pInterp = new mgcLinInterp2D(3*n,theta,phi,func);
-
-    SG_LOG(SG_MATH, SG_DEBUG, "[100%] Finished initialising spherical interpolator.");
-}
-//---------------------------------------------------------------------------
-SphereInterpolate::~SphereInterpolate ()
-{
-    delete pInterp;
-    delete[] theta;
-    delete[] phi;
-    delete[] func;
-}
-//---------------------------------------------------------------------------
-void SphereInterpolate::GetSphericalCoords (const double x, const double y, const double z,
-                                              double& thetaAngle,
-                                              double& phiAngle) const
-{
-    // Assumes (x,y,z) is unit length.  Returns -PI <= thetaAngle <= PI
-    // and 0 <= phiAngle <= PI.
-    
-    if ( z < 1.0f )
-    {
-       if ( z > -1.0f )
-       {
-           thetaAngle = atan2(y,x);
-           phiAngle = acos(z);
-       }
-       else
-       {
-           thetaAngle = -PI;
-           phiAngle = PI;
-       }
-    }
-    else
-    {
-       thetaAngle = -PI;
-       phiAngle = 0.0f;
-    }
-}
-//---------------------------------------------------------------------------
-int SphereInterpolate::Evaluate (const double x, const double y, const double z, EvaluateData& f) const 
-{
-    // assumes (x,y,z) is unit length
-    
-    double thetaAngle, phiAngle;
-    GetSphericalCoords(x,y,z,thetaAngle,phiAngle);
-    return pInterp->Evaluate(thetaAngle,phiAngle,f);
-}
-//---------------------------------------------------------------------------
-int SphereInterpolate::Evaluate (const double thetaAngle, const double phiAngle, EvaluateData& f) const 
-{
-    return pInterp->Evaluate(thetaAngle,phiAngle,f);
-}
-//---------------------------------------------------------------------------
diff --git a/src/WeatherCM/sphrintp.h b/src/WeatherCM/sphrintp.h
deleted file mode 100644 (file)
index 6083fc1..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-  WARNING - Do not remove this header.
-
-  This code is a templated version of the 'magic-software' spherical
-  interpolation code by Dave Eberly. The original (un-hacked) code can be
-  obtained from here: http://www.magic-software.com/gr_appr.htm
-  This code is derived from linintp2.h/cpp and sphrintp.h/cpp.
-
-  Dave Eberly says that the conditions for use are:
-
-  * You may distribute the original source code to others at no charge.
-
-  * You may modify the original source code and distribute it to others at
-    no charge. The modified code must be documented to indicate that it is
-    not part of the original package.
-
-  * You may use this code for non-commercial purposes. You may also
-    incorporate this code into commercial packages. However, you may not
-    sell any of your source code which contains my original and/or modified
-    source code. In such a case, you need to factor out my code and freely
-    distribute it.
-
-  * The original code comes with absolutely no warranty and no guarantee is
-    made that the code is bug-free.
-
-  This does not seem incompatible with GPL - so this modified version
-  is hereby placed under GPL along with the rest of FlightGear.
-
-                              Christian Mayer
-*/
-
-#ifndef SPHRINTP_H
-#define SPHRINTP_H
-
-#include <simgear/compiler.h>
-#include STL_IOSTREAM
-
-#include "linintp2.h"
-#include <plib/sg.h>
-
-SG_USING_NAMESPACE(std);
-SG_USING_STD(cout);
-
-
-class SphereInterpolate
-{
-public:
-    SphereInterpolate (int n, const double* x, const double* y,
-       const double* z, const unsigned int* f);
-    SphereInterpolate (int n, const sgVec2* p, const unsigned int* f);
-   
-    ~SphereInterpolate ();
-    
-    void GetSphericalCoords (const double x, const double y, const double z,
-       double& thetaAngle, double& phiAngle) const;
-    
-    int Evaluate (const double x, const double y, const double z, EvaluateData& f) const;
-    int Evaluate (const double thetaAngle, const double phiAngle, EvaluateData& f) const;
-
-#ifndef macintosh
-    // CodeWarrior doesn't know the differece between sgVec2 and
-    // sgVec3, so I commented this out for Mac builds. This change is
-    // related to a similar change in FGLocalWeatherDatabase module.
-     
-    EvaluateData Evaluate(const sgVec2& p) const
-    {
-       EvaluateData retval;
-       Evaluate(p[1], p[0], retval);
-       return retval;
-    }
-#endif
-
-    EvaluateData Evaluate(const sgVec3& p) const
-    {
-       EvaluateData retval;
-       if (!Evaluate(p[1], p[0], retval))
-        {
-          cout << "Error during spherical interpolation. Point (" 
-               << p[0] << "/" << p[1] << "/" << p[2] << ") was in no triangle\n";
-          retval.index[0] = 0;  //fake something
-          retval.index[1] = 0;
-          retval.index[2] = 0;
-          retval.percentage[0] = 1.0;
-          retval.percentage[1] = 0.0;
-          retval.percentage[2] = 0.0;
-        }
-       return retval;
-    }
-
-protected:
-    int numPoints;
-    double* theta;
-    double* phi;
-    unsigned int* func;
-    mgcLinInterp2D* pInterp;
-};
-
-#endif