X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FJSBSim%2FJSBSim.hxx;h=a01146bcc0447aa5e06b744707553081e9cb7dd7;hb=b649f97b19b60ae273bf18e25b9539363b3d1c9a;hp=04a10b29934c7e481ec84d21a2dbc656a890bb87;hpb=c3cefaf883ddadb467c0e5da7f966558cbc2355b;p=flightgear.git diff --git a/src/FDM/JSBSim/JSBSim.hxx b/src/FDM/JSBSim/JSBSim.hxx index 04a10b299..a01146bcc 100644 --- a/src/FDM/JSBSim/JSBSim.hxx +++ b/src/FDM/JSBSim/JSBSim.hxx @@ -8,16 +8,16 @@ ------ Copyright (C) 1999 - 2000 Curtis L. Olson (curt@flightgear.org) ------ This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as + modify it under the terms of the GNU Lesser 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. + Lesser General Public License for more details. - You should have received a copy of the GNU General Public License + You should have received a copy of the GNU Lesser General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. @@ -38,7 +38,7 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #undef MAX_ENGINES -#include +#include "math/FGColumnVector3.h" /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -53,12 +53,11 @@ DEFINITIONS FORWARD DECLARATIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#include +#include #include namespace JSBSim { -class FGState; class FGAtmosphere; class FGFCS; class FGPropulsion; @@ -66,19 +65,14 @@ class FGMassBalance; class FGAerodynamics; class FGInertial; class FGAircraft; -class FGTranslation; -class FGRotation; -class FGPosition; +class FGPropagate; class FGAuxiliary; class FGOutput; class FGInitialCondition; } -using namespace JSBSim; - -/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -COMMENTS, REFERENCES, and NOTES [use "class documentation" below for API docs] -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +// Adding it here will cause a namespace clash in FlightGear -EMH- +// using namespace JSBSim; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION @@ -91,12 +85,8 @@ CLASS DOCUMENTATION documentation for main for direction on running JSBSim apart from FlightGear. @author Curtis L. Olson (original) @author Tony Peden (Maintained and refined) - @version $Id$ + @version $Id: JSBSim.hxx,v 1.15 2010/10/07 03:45:40 jberndt Exp $ @see main in file JSBSim.cpp (use main() wrapper for standalone usage) - @see - Header File - @see - Source File */ /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -120,21 +110,24 @@ public: /// Reset flight params to a specific position void init(); + /// Unbind properties + void unbind(); + /// @name Position Parameter Set //@{ /** Set geocentric latitude @param lat latitude in radians measured from the 0 meridian where - the westerly direction is positive and east is negative */ + the westerly direction is positive and east is negative */ void set_Latitude(double lat); // geocentric /** Set longitude @param lon longitude in radians measured from the equator where - the northerly direction is positive and south is negative */ + the northerly direction is positive and south is negative */ void set_Longitude(double lon); /** Set altitude Note: this triggers a recalculation of AGL altitude - @param alt altitude in feet */ + @param alt altitude in feet */ void set_Altitude(double alt); // triggers re-calc of AGL altitude //@} @@ -144,33 +137,33 @@ public: //@{ /** Sets calibrated airspeed Setting this will trigger a recalc of the other velocity terms. - @param vc Calibrated airspeed in ft/sec */ + @param vc Calibrated airspeed in ft/sec */ void set_V_calibrated_kts(double vc); /** Sets Mach number. Setting this will trigger a recalc of the other velocity terms. - @param mach Mach number */ + @param mach Mach number */ void set_Mach_number(double mach); /** Sets velocity in N-E-D coordinates. Setting this will trigger a recalc of the other velocity terms. - @param north velocity northward in ft/sec - @param east velocity eastward in ft/sec - @param down velocity downward in ft/sec */ + @param north velocity northward in ft/sec + @param east velocity eastward in ft/sec + @param down velocity downward in ft/sec */ void set_Velocities_Local( double north, double east, double down ); /** Sets aircraft velocity in stability frame. Setting this will trigger a recalc of the other velocity terms. - @param u X velocity in ft/sec - @param v Y velocity in ft/sec - @param w Z velocity in ft/sec */ + @param u X velocity in ft/sec + @param v Y velocity in ft/sec + @param w Z velocity in ft/sec */ void set_Velocities_Wind_Body( double u, double v, double w); //@} /** Euler Angle Parameter Set @param phi roll angle in radians - @param theta pitch angle in radians - @param psi heading angle in radians */ + @param theta pitch angle in radians + @param psi heading angle in radians */ void set_Euler_Angles( double phi, double theta, double psi ); /// @name Flight Path Parameter Set @@ -215,65 +208,84 @@ public: void do_trim(void); void update_ic(void); + bool get_agl_ft(double t, const double pt[3], double alt_off, + double contact[3], double normal[3], double vel[3], + double angularVel[3], double *agl); private: - FGFDMExec *fdmex; - FGInitialCondition *fgic; + JSBSim::FGFDMExec *fdmex; + JSBSim::FGInitialCondition *fgic; bool needTrim; - FGState* State; - FGAtmosphere* Atmosphere; - FGFCS* FCS; - FGPropulsion* Propulsion; - FGMassBalance* MassBalance; - FGAircraft* Aircraft; - FGTranslation* Translation; - FGRotation* Rotation; - FGPosition* Position; - FGAuxiliary* Auxiliary; - FGAerodynamics* Aerodynamics; - FGGroundReactions *GroundReactions; + JSBSim::FGAtmosphere* Atmosphere; + JSBSim::FGFCS* FCS; + JSBSim::FGPropulsion* Propulsion; + JSBSim::FGMassBalance* MassBalance; + JSBSim::FGAircraft* Aircraft; + JSBSim::FGPropagate* Propagate; + JSBSim::FGAuxiliary* Auxiliary; + JSBSim::FGAerodynamics* Aerodynamics; + JSBSim::FGGroundReactions* GroundReactions; + JSBSim::FGInertial* Inertial; int runcount; - float trim_elev; - float trim_throttle; - - SGPropertyNode *startup_trim; - SGPropertyNode *trimmed; - SGPropertyNode *pitch_trim; - SGPropertyNode *throttle_trim; - SGPropertyNode *aileron_trim; - SGPropertyNode *rudder_trim; - SGPropertyNode *stall_warning; + double trim_elev; + double trim_throttle; + + SGPropertyNode_ptr startup_trim; + SGPropertyNode_ptr trimmed; + SGPropertyNode_ptr pitch_trim; + SGPropertyNode_ptr throttle_trim; + SGPropertyNode_ptr aileron_trim; + SGPropertyNode_ptr rudder_trim; + SGPropertyNode_ptr stall_warning; + + /* SGPropertyNode_ptr elevator_pos_deg; + SGPropertyNode_ptr left_aileron_pos_deg; + SGPropertyNode_ptr right_aileron_pos_deg; + SGPropertyNode_ptr rudder_pos_deg; + SGPropertyNode_ptr flap_pos_deg; */ + + + SGPropertyNode_ptr elevator_pos_pct; + SGPropertyNode_ptr left_aileron_pos_pct; + SGPropertyNode_ptr right_aileron_pos_pct; + SGPropertyNode_ptr rudder_pos_pct; + SGPropertyNode_ptr flap_pos_pct; + SGPropertyNode_ptr speedbrake_pos_pct; + SGPropertyNode_ptr spoilers_pos_pct; + + SGPropertyNode_ptr ab_brake_engaged; + SGPropertyNode_ptr ab_brake_left_pct; + SGPropertyNode_ptr ab_brake_right_pct; - /* SGPropertyNode *elevator_pos_deg; - SGPropertyNode *left_aileron_pos_deg; - SGPropertyNode *right_aileron_pos_deg; - SGPropertyNode *rudder_pos_deg; - SGPropertyNode *flap_pos_deg; */ + SGPropertyNode_ptr gear_pos_pct; + SGPropertyNode_ptr wing_fold_pos_pct; + SGPropertyNode_ptr tailhook_pos_pct; + + SGPropertyNode_ptr temperature; + SGPropertyNode_ptr pressure; + SGPropertyNode_ptr density; + SGPropertyNode_ptr turbulence_gain; + SGPropertyNode_ptr turbulence_rate; + + SGPropertyNode_ptr wind_from_north; + SGPropertyNode_ptr wind_from_east; + SGPropertyNode_ptr wind_from_down; + + SGPropertyNode_ptr slaved; + + double last_hook_tip[3]; + double last_hook_root[3]; + JSBSim::FGColumnVector3 hook_root_struct; + double hook_length; + bool got_wire; + + bool crashed; - - SGPropertyNode *elevator_pos_pct; - SGPropertyNode *left_aileron_pos_pct; - SGPropertyNode *right_aileron_pos_pct; - SGPropertyNode *rudder_pos_pct; - SGPropertyNode *flap_pos_pct; - SGPropertyNode *speedbrake_pos_pct; - SGPropertyNode *spoilers_pos_pct; - - SGPropertyNode *gear_pos_pct; - - SGPropertyNode *temperature; - SGPropertyNode *pressure; - SGPropertyNode *density; - SGPropertyNode *turbulence; - - SGPropertyNode *wind_from_north; - SGPropertyNode *wind_from_east; - SGPropertyNode *wind_from_down; - void init_gear(void); void update_gear(void); - + + void update_external_forces(double t_off); };