]> git.mxchange.org Git - flightgear.git/commitdiff
Tweaks to the LaRCsim interface to get wind working.
authorcurt <curt>
Mon, 8 Jan 2001 17:59:54 +0000 (17:59 +0000)
committercurt <curt>
Mon, 8 Jan 2001 17:59:54 +0000 (17:59 +0000)
Corresponding tweaks to bfi.[ch]xx and options.cxx.

FlightGear.dsp
src/FDM/LaRCsim.cxx
src/Main/bfi.cxx
src/Main/bfi.hxx
src/Main/options.cxx

index d027ba067c5c282c265df2ea70c8179ad5c88c33..c7da4d2967299aa04064695d0697c8eff16d0aeb 100644 (file)
@@ -2193,7 +2193,7 @@ SOURCE=.\src\Main\fg_io.cxx
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=.\src\Main\globals.cxx\r
+SOURCE=.\src\Main\fg_props.cxx\r
 \r
 !IF  "$(CFG)" == "FlightGear - Win32 Release"\r
 \r
@@ -2208,7 +2208,7 @@ SOURCE=.\src\Main\globals.cxx
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=.\src\Main\keyboard.cxx\r
+SOURCE=.\src\Main\fgfs.cxx\r
 \r
 !IF  "$(CFG)" == "FlightGear - Win32 Release"\r
 \r
@@ -2223,7 +2223,22 @@ SOURCE=.\src\Main\keyboard.cxx
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=.\src\Main\options.cxx\r
+SOURCE=.\src\Main\globals.cxx\r
+\r
+!IF  "$(CFG)" == "FlightGear - Win32 Release"\r
+\r
+# PROP Intermediate_Dir "Release\main"\r
+\r
+!ELSEIF  "$(CFG)" == "FlightGear - Win32 Debug"\r
+\r
+# PROP Intermediate_Dir "Debug\main"\r
+\r
+!ENDIF \r
+\r
+# End Source File\r
+# Begin Source File\r
+\r
+SOURCE=.\src\Main\keyboard.cxx\r
 \r
 !IF  "$(CFG)" == "FlightGear - Win32 Release"\r
 \r
@@ -2238,7 +2253,7 @@ SOURCE=.\src\Main\options.cxx
 # End Source File\r
 # Begin Source File\r
 \r
-SOURCE=.\src\Main\save.cxx\r
+SOURCE=.\src\Main\options.cxx\r
 \r
 !IF  "$(CFG)" == "FlightGear - Win32 Release"\r
 \r
index 856c104ffaf19c7b500a2b600e1af13dbea44a4d..47c6bfa93079a73b4cb050749a872e9635185469 100644 (file)
@@ -426,8 +426,8 @@ bool FGLaRCsim::copy_from_LaRCsim() {
     _set_Velocities_Local( V_north, V_east, V_down );
     // set_Velocities_Ground( V_north_rel_ground, V_east_rel_ground, 
     //                      V_down_rel_ground );
-    // set_Velocities_Local_Airmass( V_north_airmass, V_east_airmass,
-    //                             V_down_airmass );
+    _set_Velocities_Local_Airmass( V_north_airmass, V_east_airmass,
+                                  V_down_airmass );
     // set_Velocities_Local_Rel_Airmass( V_north_rel_airmass, 
     //                          V_east_rel_airmass, V_down_rel_airmass );
     // set_Velocities_Gust( U_gust, V_gust, W_gust );
index 96a34c7b96e670528db958ea7451b5955b65ec74..df341f056fad3c959be1289251b3001926ce42da 100644 (file)
@@ -315,9 +315,9 @@ FGBFI::init ()
 
                                // Weather
   fgTie("/environment/visibility", getVisibility, setVisibility);
-  fgTie("/environment/wind-north", getWindNorth);
-  fgTie("/environment/wind-east", getWindEast);
-  fgTie("/environment/wind-down", getWindDown);
+  fgTie("/environment/wind-north", getWindNorth, setWindNorth);
+  fgTie("/environment/wind-east", getWindEast, setWindEast);
+  fgTie("/environment/wind-down", getWindDown, setWindDown);
 
                                // View
   fgTie("/sim/view/axes/long", (double(*)())0, setViewAxisLong);
@@ -1721,7 +1721,7 @@ FGBFI::setGPSTargetLongitude (double longitude)
 
 
 /**
- * Get the current visible (units??).
+ * Get the current visibility (meters).
  */
 double
 FGBFI::getVisibility ()
@@ -1735,7 +1735,7 @@ FGBFI::getVisibility ()
 
 
 /**
- * Set the current visibility (units??).
+ * Set the current visibility (meters).
  */
 void
 FGBFI::setVisibility (double visibility)
@@ -1749,7 +1749,7 @@ FGBFI::setVisibility (double visibility)
 
 
 /**
- * Get the current wind north velocity.
+ * Get the current wind north velocity (feet/second).
  */
 double
 FGBFI::getWindNorth ()
@@ -1759,7 +1759,19 @@ FGBFI::getWindNorth ()
 
 
 /**
- * Get the current wind east velocity.
+ * Set the current wind north velocity (feet/second).
+ */
+void
+FGBFI::setWindNorth (double speed)
+{
+  current_aircraft.fdm_state->set_Velocities_Local_Airmass(speed,
+                                                          getWindEast(),
+                                                          getWindDown());
+}
+
+
+/**
+ * Get the current wind east velocity (feet/second).
  */
 double
 FGBFI::getWindEast ()
@@ -1769,7 +1781,20 @@ FGBFI::getWindEast ()
 
 
 /**
- * Get the current wind down velocity.
+ * Set the current wind east velocity (feet/second).
+ */
+void
+FGBFI::setWindEast (double speed)
+{
+  cout << "Set wind-east to " << speed << endl;
+  current_aircraft.fdm_state->set_Velocities_Local_Airmass(getWindNorth(),
+                                                          speed,
+                                                          getWindDown());
+}
+
+
+/**
+ * Get the current wind down velocity (feet/second).
  */
 double
 FGBFI::getWindDown ()
@@ -1778,6 +1803,18 @@ FGBFI::getWindDown ()
 }
 
 
+/**
+ * Set the current wind down velocity (feet/second).
+ */
+void
+FGBFI::setWindDown (double speed)
+{
+  current_aircraft.fdm_state->set_Velocities_Local_Airmass(getWindNorth(),
+                                                          getWindEast(),
+                                                          speed);
+}
+
+
 \f
 ////////////////////////////////////////////////////////////////////////
 // View.
index 48681cbbc46020f496b1cc0855a8dfad66c17319..16f345ef473e64a400da08a843bae7bd8312990d 100644 (file)
@@ -64,8 +64,8 @@ public:
 
 //   static time_t getTimeGMT ();
 //   static void setTimeGMT (time_t time);
-  static string getDateString ();
-  static void setDateString (string time_string);
+  static string getDateString ();// ISO 8601 subset
+  static void setDateString (string time_string); // ISO 8601 subset
 
                                // deprecated
   static string getGMTString ();
@@ -76,59 +76,59 @@ public:
   static bool getPanelVisible ();
   static void setPanelVisible (bool panelVisible);
 
-  static int getPanelXOffset ();
-  static void setPanelXOffset (int i);
+  static int getPanelXOffset (); // pixels
+  static void setPanelXOffset (int i); // pixels
 
-  static int getPanelYOffset ();
-  static void setPanelYOffset (int i);
+  static int getPanelYOffset (); // pixels
+  static void setPanelYOffset (int i); // pixels
 
 
                                // Position
-  static double getLatitude ();
-  static void setLatitude (double latitude);
+  static double getLatitude ();        // degrees
+  static void setLatitude (double latitude); // degrees
 
-  static double getLongitude ();
-  static void setLongitude (double longitude);
+  static double getLongitude (); // degrees
+  static void setLongitude (double longitude); // degrees
 
-  static double getAltitude ();
-  static void setAltitude (double altitude);
+  static double getAltitude ();        // feet
+  static void setAltitude (double altitude); // feet
 
-  static double getAGL ();
+  static double getAGL ();     // feet
 
 
                                // Attitude
-  static double getHeading ();   // true heading
-  static void setHeading (double heading);
+  static double getHeading ();   // degrees
+  static void setHeading (double heading); // degrees
 
-  static double getHeadingMag (); // exact magnetic heading
+  static double getHeadingMag (); // degrees
 
-  static double getPitch ();
-  static void setPitch (double pitch);
+  static double getPitch ();   // degrees
+  static void setPitch (double pitch); // degrees
 
-  static double getRoll ();
-  static void setRoll (double roll);
+  static double getRoll ();    // degrees
+  static void setRoll (double roll); // degrees
 
                                // Engine
-  static double getRPM ();
-  static void setRPM ( double rpm );
+  static double getRPM ();     // revolutions/minute
+  static void setRPM ( double rpm ); // revolutions/minute
 
-  static double getEGT ();
-  static double getCHT ();
-  static double getMP ();
+  static double getEGT ();     // [unit??]
+  static double getCHT ();     // [unit??]
+  static double getMP ();      // [unit??]
 
                                // Velocities
-  static double getAirspeed ();
-  static void setAirspeed (double speed);
+  static double getAirspeed ();        // knots
+  static void setAirspeed (double speed); // knots
 
-  static double getSideSlip ();
+  static double getSideSlip ();        // [unit??]
 
-  static double getVerticalSpeed ();
+  static double getVerticalSpeed (); // feet/second
 
-  static double getSpeedNorth ();
+  static double getSpeedNorth (); // feet/second
 
-  static double getSpeedEast ();
+  static double getSpeedEast (); // feet/second
 
-  static double getSpeedDown ();
+  static double getSpeedDown (); // feet/second
 
 //   static void setSpeedNorth (double speed);
 //   static void setSpeedEast (double speed);
@@ -136,58 +136,58 @@ public:
 
 
                                // Controls
-  static double getThrottle ();
-  static void setThrottle (double throttle);
+  static double getThrottle ();        // 0.0:1.0
+  static void setThrottle (double throttle); // 0.0:1.0
 
-  static double getMixture ();
-  static void setMixture (double mixture);
+  static double getMixture (); // 0.0:1.0
+  static void setMixture (double mixture); // 0.0:1.0
 
-  static double getPropAdvance ();
-  static void setPropAdvance (double pitch);
+  static double getPropAdvance (); // 0.0:1.0
+  static void setPropAdvance (double pitch); // 0.0:1.0
 
-  static double getFlaps ();
-  static void setFlaps (double flaps);
+  static double getFlaps ();   // 0.0:1.0
+  static void setFlaps (double flaps); // 0.0:1.0
 
-  static double getAileron ();
-  static void setAileron (double aileron);
+  static double getAileron (); // -1.0:1.0
+  static void setAileron (double aileron); // -1.0:1.0
 
-  static double getRudder ();
-  static void setRudder (double rudder);
+  static double getRudder ();  // -1.0:1.0
+  static void setRudder (double rudder); // -1.0:1.0
 
-  static double getElevator ();
-  static void setElevator (double elevator);
+  static double getElevator ();        // -1.0:1.0
+  static void setElevator (double elevator); // -1.0:1.0
 
-  static double getElevatorTrim ();
-  static void setElevatorTrim (double trim);
+  static double getElevatorTrim (); // -1.0:1.0
+  static void setElevatorTrim (double trim); // -1.0:1.0
 
-  static double getBrakes ();
-  static void setBrakes (double brake);
+  static double getBrakes ();  // 0.0:1.0
+  static void setBrakes (double brake);        // 0.0:1.0
 
-  static double getLeftBrake ();
-  static void setLeftBrake (double brake);
+  static double getLeftBrake (); // 0.0:1.0
+  static void setLeftBrake (double brake); // 0.0:1.0
 
-  static double getRightBrake ();
-  static void setRightBrake (double brake);
+  static double getRightBrake (); // 0.0:1.0
+  static void setRightBrake (double brake); // 0.0:1.0
 
-  static double getCenterBrake ();
-  static void setCenterBrake (double brake);
+  static double getCenterBrake (); // 0.0:1.0
+  static void setCenterBrake (double brake); // 0.0:1.0
 
 
                                // Autopilot
   static bool getAPAltitudeLock ();
   static void setAPAltitudeLock (bool lock);
 
-  static double getAPAltitude ();
-  static void setAPAltitude (double altitude);
+  static double getAPAltitude (); // feet
+  static void setAPAltitude (double altitude); // feet
 
   static bool getAPHeadingLock ();
   static void setAPHeadingLock (bool lock);
 
-  static double getAPHeading ();
-  static void setAPHeading (double heading);
+  static double getAPHeading (); // degrees
+  static void setAPHeading (double heading); // degrees
 
-  static double getAPHeadingMag ();
-  static void setAPHeadingMag (double heading);
+  static double getAPHeadingMag (); // degrees
+  static void setAPHeadingMag (double heading);        // degrees
 
   static bool getAPNAV1Lock ();
   static void setAPNAV1Lock (bool lock);
@@ -199,12 +199,12 @@ public:
   static double getNAV1AltFreq ();
   static void setNAV1AltFreq (double freq);
 
-  static double getNAV1Radial ();
+  static double getNAV1Radial (); // degrees
 
-  static double getNAV1SelRadial ();
-  static void setNAV1SelRadial (double radial);
+  static double getNAV1SelRadial (); // degrees
+  static void setNAV1SelRadial (double radial);        // degrees
 
-  static double getNAV1DistDME ();
+  static double getNAV1DistDME (); // nautical miles
 
   static bool getNAV1TO ();
 
@@ -220,12 +220,12 @@ public:
   static double getNAV2AltFreq ();
   static void setNAV2AltFreq (double freq);
 
-  static double getNAV2Radial ();
+  static double getNAV2Radial (); // degrees
 
-  static double getNAV2SelRadial ();
-  static void setNAV2SelRadial (double radial);
+  static double getNAV2SelRadial (); // degrees
+  static void setNAV2SelRadial (double radial);        // degrees
 
-  static double getNAV2DistDME ();
+  static double getNAV2DistDME (); // nautical miles
 
   static bool getNAV2TO ();
 
@@ -241,8 +241,8 @@ public:
   static double getADFAltFreq ();
   static void setADFAltFreq (double freq);
 
-  static double getADFRotation ();
-  static void setADFRotation (double rot);
+  static double getADFRotation (); // degrees
+  static void setADFRotation (double rot); // degrees
 
                                // GPS
   static string getTargetAirport ();
@@ -251,26 +251,29 @@ public:
   static bool getGPSLock ();
   static void setGPSLock (bool lock);
 
-  static double getGPSTargetLatitude ();
+  static double getGPSTargetLatitude (); // degrees
 
-  static double getGPSTargetLongitude ();
+  static double getGPSTargetLongitude (); // degrees
 
 
                                // Weather
-  static double getVisibility ();
-  static void setVisibility (double visiblity);
-  static double getWindNorth ();
-  static double getWindEast ();
-  static double getWindDown ();
+  static double getVisibility ();// meters
+  static void setVisibility (double visiblity);        // meters
+  static double getWindNorth (); // feet/second
+  static void setWindNorth (double speed); // feet/second
+  static double getWindEast ();        // feet/second
+  static void setWindEast (double speed); // feet/second
+  static double getWindDown ();        // feet/second
+  static void setWindDown (double speed); // feet/second
 
                                // View
-  static void setViewAxisLong (double axis);
-  static void setViewAxisLat (double axis);
+  static void setViewAxisLong (double axis);// -1.0:1.0
+  static void setViewAxisLat (double axis); // -1.0:1.0
 
 
                                 // Time (this varies with time) huh, huh
-  static double getMagVar (); 
-  static double getMagDip (); 
+  static double getMagVar ();  // degrees
+  static double getMagDip ();  // degrees
 
 
 private:
index b45633b11545ffbeadc2d36739cbc1bcbb641e03..5ef61b76501cfe09ea23d4cf3781d3f353682e0b 100644 (file)
@@ -734,7 +734,6 @@ int FGOptions::parse_option( const string& arg ) {
        } else {
            vNorth = atof( arg.substr(9) ) * FEET_TO_METER;
        }
-       globals->get_props()->setDoubleValue("/velocities/speed-north", vNorth);
     } else if ( arg.find( "--vEast=" ) != string::npos ) {
        speedset = FG_VTNED;
        if ( units == FG_UNITS_FEET ) {
@@ -742,7 +741,6 @@ int FGOptions::parse_option( const string& arg ) {
        } else {
            vEast = atof( arg.substr(8) ) * FEET_TO_METER;
        }
-       globals->get_props()->setDoubleValue("/velocities/speed-east", vEast);
     } else if ( arg.find( "--vDown=" ) != string::npos ) {
        speedset = FG_VTNED;
        if ( units == FG_UNITS_FEET ) {
@@ -750,11 +748,11 @@ int FGOptions::parse_option( const string& arg ) {
        } else {
            vDown = atof( arg.substr(8) ) * FEET_TO_METER;
        }
-       globals->get_props()->setDoubleValue("/velocities/speed-down", vDown);
     } else if ( arg.find( "--vc=" ) != string::npos) {
        speedset = FG_VC;
        vkcas=atof( arg.substr(5) );
        cout << "Got vc: " << vkcas << endl;
+       globals->get_props()->setDoubleValue("/velocities/airspeed", vkcas);
     } else if ( arg.find( "--mach=" ) != string::npos) {
        speedset = FG_MACH;
        mach=atof( arg.substr(7) );
@@ -952,6 +950,27 @@ int FGOptions::parse_option( const string& arg ) {
        visibility = atof( arg.substr( 19 ) ) * 5280.0 * FEET_TO_METER;
        globals->get_props()->setDoubleValue("/environment/visibility",
                                             visibility);
+    } else if ( arg.find( "--wind=" ) == 0 ) {
+        string val = arg.substr(7);
+       int pos = val.find('@');
+       if (pos == string::npos) {
+         FG_LOG(FG_GENERAL, FG_ALERT, "bad wind value " << val);
+         return FG_OPTIONS_ERROR;
+       }
+       double dir = atof(val.substr(0,pos).c_str());
+       double speed = atof(val.substr(pos+1).c_str());
+       FG_LOG(FG_GENERAL, FG_INFO, "WIND: " << dir << '@' << 
+              speed << " knots" << endl);
+                               // convert to fps
+       speed *= NM_TO_METER * METER_TO_FEET * (1.0/3600);
+       dir += 180;
+       if (dir >= 360)
+         dir -= 360;
+       dir *= DEG_TO_RAD;
+       globals->get_props()->setDoubleValue("/environment/wind-north",
+                                            speed * cos(dir));
+       globals->get_props()->setDoubleValue("/environment/wind-east",
+                                            speed * sin(dir));
     } else if ( arg.find( "--wp=" ) != string::npos ) {
        parse_wp( arg.substr( 5 ) );
     } else if ( arg.find( "--flight-plan=") != string::npos) {
@@ -1133,6 +1152,7 @@ void FGOptions::usage ( void ) {
         << endl;
     cout << "\t--speed=n:  run the FDM this much faster than real time" << endl;
     cout << "\t--notrim:  Do NOT attempt to trim the model when initializing JSBsim" << endl;
+    cout << "\t--wind=degrees@knots:  specify a wind component." << endl;
     cout << endl;
     //(UIUC)
     cout <<"Aircraft model directory:" << endl;