X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FJSBSim%2Fmodels%2FFGMassBalance.h;h=c7468c5dbe0e9b6c0cda14945f7abc0d60cf53de;hb=53e8fbfcbb3ddac0dc261043fea7bd24dfa6e62d;hp=c49fe2904ec0e4dfa338aca4e9f20763b98fb99f;hpb=a61f34667fdb43198f707e719f56f5bbaf2fb7b5;p=flightgear.git diff --git a/src/FDM/JSBSim/models/FGMassBalance.h b/src/FDM/JSBSim/models/FGMassBalance.h index c49fe2904..c7468c5db 100644 --- a/src/FDM/JSBSim/models/FGMassBalance.h +++ b/src/FDM/JSBSim/models/FGMassBalance.h @@ -49,7 +49,7 @@ INCLUDES DEFINITIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#define ID_MASSBALANCE "$Id: FGMassBalance.h,v 1.20 2010/02/04 13:09:26 jberndt Exp $" +#define ID_MASSBALANCE "$Id: FGMassBalance.h,v 1.22 2010/11/18 12:38:06 jberndt Exp $" /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FORWARD DECLARATIONSS @@ -65,7 +65,11 @@ CLASS DOCUMENTATION /** Models weight, balance and moment of inertia information. Maintains a vector of point masses. Sums the contribution of all, and provides this to FGPropagate. - Loads the \ section of the aircraft configuration file. + Loads the \ section of the aircraft configuration file. There + can be any number of . Each can also have a shape which - if + present - causes an associated moment of inertia to be calculated based on + the shape. Note that a cylinder is solid, a tube is hollow, a ball is solid + and a sphere is hollow.

Configuration File Format:

@code @@ -77,20 +81,24 @@ CLASS DOCUMENTATION {number} {number} {number} - + {number} {number} {number} - + [ +
+ {number} + {number} +
{number} - + {number} {number} {number}
- ... other point masses ... + ... other point masses ...]
@endcode */ @@ -152,15 +160,15 @@ public: */ FGColumnVector3 StructuralToBody(const FGColumnVector3& r) const; - inline void SetEmptyWeight(double EW) { EmptyWeight = EW;} - inline void SetBaseCG(const FGColumnVector3& CG) {vbaseXYZcg = vXYZcg = CG;} + void SetEmptyWeight(double EW) { EmptyWeight = EW;} + void SetBaseCG(const FGColumnVector3& CG) {vbaseXYZcg = vXYZcg = CG;} void AddPointMass(Element* el); double GetTotalPointMassWeight(void); FGColumnVector3& GetPointMassMoment(void); - FGMatrix33& GetJ(void) {return mJ;} - FGMatrix33& GetJinv(void) {return mJinv;} + const FGMatrix33& GetJ(void) const {return mJ;} + const FGMatrix33& GetJinv(void) const {return mJinv;} void SetAircraftBaseInertias(FGMatrix33 BaseJ) {baseJ = BaseJ;} void GetMassPropertiesReport(void) const; @@ -197,21 +205,30 @@ private: void CalculateShapeInertia(void) { switch(eShapeType) { case esTube: - mPMInertia(1,1) = (Weight/(32.16))*Radius*Radius; // mr^2 - mPMInertia(2,2) = (Weight/(32.16*12))*(6*Radius*Radius + Length*Length); + mPMInertia(1,1) = (Weight/(slugtolb))*Radius*Radius; // mr^2 + mPMInertia(2,2) = (Weight/(slugtolb*12))*(6*Radius*Radius + Length*Length); mPMInertia(3,3) = mPMInertia(2,2); break; case esCylinder: - mPMInertia(1,1) = (Weight/(32.16*2))*Radius*Radius; // 0.5*mr^2 - mPMInertia(2,2) = (Weight/(32.16*12))*(3*Radius*Radius + Length*Length); + mPMInertia(1,1) = (Weight/(slugtolb*2))*Radius*Radius; // 0.5*mr^2 + mPMInertia(2,2) = (Weight/(slugtolb*12))*(3*Radius*Radius + Length*Length); mPMInertia(3,3) = mPMInertia(2,2); break; + case esSphere: + mPMInertia(1,1) = (Weight/(slugtolb*3))*Radius*Radius*2; // (2mr^2)/3 + mPMInertia(2,2) = mPMInertia(1,1); + mPMInertia(3,3) = mPMInertia(1,1); + case esBall: + mPMInertia(1,1) = (Weight/(slugtolb*5))*Radius*Radius*2; // (2mr^2)/5 + mPMInertia(2,2) = mPMInertia(1,1); + mPMInertia(3,3) = mPMInertia(1,1); + break; default: break; } } - enum esShape {esUnspecified, esTube, esCylinder, esSphere} eShapeType; + enum esShape {esUnspecified, esTube, esCylinder, esSphere, esBall} eShapeType; FGColumnVector3 Location; double Weight; /// Weight in pounds. double Radius; /// Radius in feet.