]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/JSBSim/models/propulsion/FGForce.h
Merge branch 'next' into durk-atc
[flightgear.git] / src / FDM / JSBSim / models / propulsion / FGForce.h
index 767e269417b968f04ff91f1456f56bde4464eade..9ec0d30649ab725e0904bdadaceee545e9e7ea85 100644 (file)
@@ -57,16 +57,16 @@ SENTRY
 INCLUDES
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
-#include <FGFDMExec.h>
-#include <FGJSBBase.h>
-#include <math/FGMatrix33.h>
-#include <math/FGColumnVector3.h>
+#include "FGFDMExec.h"
+#include "FGJSBBase.h"
+#include "math/FGMatrix33.h"
+#include "math/FGColumnVector3.h"
 
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 DEFINITIONS
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
-#define ID_FORCE "$Id$"
+#define ID_FORCE "$Id: FGForce.h,v 1.13 2009/10/05 04:48:03 jberndt Exp $"
 
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 FORWARD DECLARATIONS
@@ -151,7 +151,7 @@ can now be retrieved by calling:</p>
 
 <p>This method is where the bulk of the work gets done so calling it more than
 once for the same set of native forces and moments should probably be avoided.
-Note that the moment calculations are done here as well so they should not be
+Note that the moment calculations are done here as well so they should be
 retrieved after calling the GetBodyForces() method:</p>
 
 <p><tt>vM=fgf.GetMoments();</tt> </p>
@@ -195,7 +195,7 @@ other hand, will require it to be be called only once.</p>
 
 <p>Retrieval of the computed forces and moments is done as detailed above.</p>
 <br>
-<blockquote>
+<pre>
     <p><i>CAVEAT: If the custom system is used to compute
     the wind-to-body transform, then the sign of the sideslip
     angle must be reversed when calling SetAnglesToBody().
@@ -203,8 +203,8 @@ other hand, will require it to be be called only once.</p>
     hand rule. Using the custom transform type this way
     should not be necessary, as it is already provided as a built
     in type (and the sign differences are correctly accounted for).</i>
-    <br></p>
-</blockquote>
+    </p>
+</pre>
 
 <h4>Use as a Base Type</h4>
 
@@ -215,7 +215,7 @@ and vMn, the moments, can be made directly. Otherwise, the usage is similar.<br>
 <br><br></p>
 
     @author Tony Peden
-    @version $Id$
+    @version $Id: FGForce.h,v 1.13 2009/10/05 04:48:03 jberndt Exp $
 */
 
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -227,30 +227,22 @@ class FGForce : public FGJSBBase
 public:
   /// Constructor
   FGForce(FGFDMExec *FDMExec);
+  FGForce(const FGForce& force) {
+    vFn = force.vFn;
+    vXYZn = force.vXYZn;
+    ttype = force.ttype;
+    fdmex = force.fdmex;
+  }
   /// Destructor
   ~FGForce();
 
-  enum TransformType { tNone, tWindBody, tLocalBody, tCustom } ttype;
-
-  inline void SetNativeForces(double Fnx, double Fny, double Fnz) {
-    vFn(1)=Fnx;
-    vFn(2)=Fny;
-    vFn(3)=Fnz;
-  }
-  inline void SetNativeForces(FGColumnVector3 vv) { vFn = vv; };
-
-  inline void SetNativeMoments(double Ln,double Mn, double Nn) {
-    vMn(1)=Ln;
-    vMn(2)=Mn;
-    vMn(3)=Nn;
-  }
-  inline void SetNativeMoments(FGColumnVector3 vv) { vMn = vv; }
-
-  inline FGColumnVector3& GetNativeForces(void) { return vFn; }
-  inline FGColumnVector3& GetNativeMoments(void) { return vMn; }
+  enum TransformType { tNone, tWindBody, tLocalBody, tCustom };
 
-  FGColumnVector3& GetBodyForces(void);
+  virtual FGColumnVector3& GetBodyForces(void);
 
+  inline double GetBodyXForce(void) const { return vFb(eX); }
+  inline double GetBodyYForce(void) const { return vFb(eY); }
+  inline double GetBodyZForce(void) const { return vFb(eZ); }
   inline FGColumnVector3& GetMoments(void) { return vM; }
 
   // Normal point of application, JSBsim structural coords
@@ -284,12 +276,12 @@ public:
   inline void SetLocation(FGColumnVector3 vv) { vXYZn = vv; SetActingLocation(vv);}
   inline void SetActingLocation(FGColumnVector3 vv) { vActingXYZn = vv; }
 
-  inline double GetLocationX( void ) { return vXYZn(eX);}
-  inline double GetLocationY( void ) { return vXYZn(eY);}
-  inline double GetLocationZ( void ) { return vXYZn(eZ);}
-  inline double GetActingLocationX( void ) { return vActingXYZn(eX);}
-  inline double GetActingLocationY( void ) { return vActingXYZn(eY);}
-  inline double GetActingLocationZ( void ) { return vActingXYZn(eZ);}
+  inline double GetLocationX( void ) const { return vXYZn(eX);}
+  inline double GetLocationY( void ) const { return vXYZn(eY);}
+  inline double GetLocationZ( void ) const { return vXYZn(eZ);}
+  inline double GetActingLocationX( void ) const { return vActingXYZn(eX);}
+  inline double GetActingLocationY( void ) const { return vActingXYZn(eY);}
+  inline double GetActingLocationZ( void ) const { return vActingXYZn(eZ);}
   FGColumnVector3& GetLocation(void) { return vXYZn; }
   FGColumnVector3& GetActingLocation(void) { return vActingXYZn; }
 
@@ -305,21 +297,18 @@ public:
     SetAnglesToBody(vv(eRoll), vv(ePitch), vv(eYaw));
   }
 
-  void SetPitch(double pitch) {vOrient(ePitch) = pitch;}
-  void SetYaw(double yaw) {vOrient(eYaw) = yaw;}
+  void UpdateCustomTransformMatrix(void);
+  void SetPitch(double pitch) {vOrient(ePitch) = pitch; UpdateCustomTransformMatrix();}
+  void SetYaw(double yaw) {vOrient(eYaw) = yaw; UpdateCustomTransformMatrix();}
 
   double GetPitch(void) const {return vOrient(ePitch);}
   double GetYaw(void) const {return vOrient(eYaw);}
 
-  inline void SetSense(double x, double y, double z) { vSense(eX)=x, vSense(eY)=y, vSense(eZ)=z; }
-  inline void SetSense(FGColumnVector3 vv) { vSense=vv; }
-
   inline FGColumnVector3& GetAnglesToBody(void) {return vOrient;}
-  inline double GetAnglesToBody(int axis) {return vOrient(axis);}
-  inline FGColumnVector3& GetSense(void) { return vSense; }
+  inline double GetAnglesToBody(int axis) const {return vOrient(axis);}
 
   inline void SetTransformType(TransformType ii) { ttype=ii; }
-  inline TransformType GetTransformType(void) { return ttype; }
+  inline TransformType GetTransformType(void) const { return ttype; }
 
   FGMatrix33 Transform(void);
 
@@ -329,14 +318,14 @@ protected:
   FGColumnVector3 vMn;
   FGColumnVector3 vH;
   FGColumnVector3 vOrient;
+  TransformType ttype;
+  FGColumnVector3 vXYZn;
+  FGColumnVector3 vActingXYZn;
 
 private:
   FGColumnVector3 vFb;
   FGColumnVector3 vM;
-  FGColumnVector3 vXYZn;
-  FGColumnVector3 vActingXYZn;
   FGColumnVector3 vDXYZ;
-  FGColumnVector3 vSense;
 
   FGMatrix33 mT;