static const char *IdSrc = "$Id$";
static const char *IdHdr = ID_GROUNDREACTIONS;
+#if defined (__APPLE__)
+/* Not all systems have the gcvt function */
+inline char* gcvt (double value, int ndigits, char *buf) {
+ /* note that this is not exactly what gcvt is supposed to do! */
+ snprintf (buf, ndigits+1, "%f", value);
+ return buf;
+}
+#endif
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS IMPLEMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
GroundReactionStrings += (lGear[i].GetName() + "_strokeVel, ");
GroundReactionStrings += (lGear[i].GetName() + "_CompressForce, ");
GroundReactionStrings += (lGear[i].GetName() + "_WhlSideForce, ");
+ GroundReactionStrings += (lGear[i].GetName() + "_WhlVelVecX, ");
+ GroundReactionStrings += (lGear[i].GetName() + "_WhlVelVecY, ");
GroundReactionStrings += (lGear[i].GetName() + "_WhlRollForce, ");
GroundReactionStrings += (lGear[i].GetName() + "_BodyXForce, ");
GroundReactionStrings += (lGear[i].GetName() + "_BodyYForce, ");
firstime = false;
}
+ GroundReactionStrings += ", TotalGearForce_X, ";
+ GroundReactionStrings += "TotalGearForce_Y, ";
+ GroundReactionStrings += "TotalGearForce_Z, ";
+ GroundReactionStrings += "TotalGearMoment_L, ";
+ GroundReactionStrings += "TotalGearMoment_M, ";
+ GroundReactionStrings += "TotalGearMoment_N";
+
return GroundReactionStrings;
}
GroundReactionValues += (string(gcvt(lGear[i].GetCompLen(), 5, buff)) + ", ");
GroundReactionValues += (string(gcvt(lGear[i].GetCompVel(), 6, buff)) + ", ");
GroundReactionValues += (string(gcvt(lGear[i].GetCompForce(), 10, buff)) + ", ");
+ GroundReactionValues += (string(gcvt(lGear[i].GetWheelVel(eX), 6, buff)) + ", ");
+ GroundReactionValues += (string(gcvt(lGear[i].GetWheelVel(eY), 6, buff)) + ", ");
GroundReactionValues += (string(gcvt(lGear[i].GetWheelSideForce(), 6, buff)) + ", ");
GroundReactionValues += (string(gcvt(lGear[i].GetWheelRollForce(), 6, buff)) + ", ");
GroundReactionValues += (string(gcvt(lGear[i].GetBodyXForce(), 6, buff)) + ", ");
firstime = false;
}
+ GroundReactionValues += (", " + string(gcvt(vForces(eX), 6, buff)) + ", ");
+ GroundReactionValues += (string(gcvt(vForces(eY), 6, buff)) + ", ");
+ GroundReactionValues += (string(gcvt(vForces(eZ), 6, buff)) + ", ");
+ GroundReactionValues += (string(gcvt(vMoments(eX), 6, buff)) + ", ");
+ GroundReactionValues += (string(gcvt(vMoments(eY), 6, buff)) + ", ");
+ GroundReactionValues += (string(gcvt(vMoments(eZ), 6, buff)));
+
return GroundReactionValues;
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGGroundReactions::bind(void)
-{
+{
+ typedef double (FGGroundReactions::*PMF)(int) const;
PropertyManager->Tie("gear/num-units", this,
&FGGroundReactions::GetNumGearUnits);
PropertyManager->Tie("moments/l-gear-lbsft", this,1,
- &FGGroundReactions::GetMoments);
+ (PMF)&FGGroundReactions::GetMoments);
PropertyManager->Tie("moments/m-gear-lbsft", this,2,
- &FGGroundReactions::GetMoments);
+ (PMF)&FGGroundReactions::GetMoments);
PropertyManager->Tie("moments/n-gear-lbsft", this,3,
- &FGGroundReactions::GetMoments);
+ (PMF)&FGGroundReactions::GetMoments);
PropertyManager->Tie("forces/fbx-gear-lbs", this,1,
- &FGGroundReactions::GetForces);
+ (PMF)&FGGroundReactions::GetForces);
PropertyManager->Tie("forces/fby-gear-lbs", this,2,
- &FGGroundReactions::GetForces);
+ (PMF)&FGGroundReactions::GetForces);
PropertyManager->Tie("forces/fbz-gear-lbs", this,3,
- &FGGroundReactions::GetForces);
+ (PMF)&FGGroundReactions::GetForces);
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%