#include "FGPosition.h"
#include "FGAuxiliary.h"
#include "FGOutput.h"
+#include "FGPropertyManager.h"
+
static const char *IdSrc = "$Id$";
static const char *IdHdr = ID_ROTATION;
Name = "FGRotation";
cTht=cPhi=cPsi=1.0;
sTht=sPhi=sPsi=0.0;
-
+
+ bind();
+
Debug(0);
}
FGRotation::~FGRotation()
{
+ unbind();
Debug(1);
}
Ixz = MassBalance->GetIxz();
}
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+void FGRotation::bind(void)
+{
+ typedef double (FGRotation::*PMF)(int) const;
+ PropertyManager->Tie("velocities/p-rad_sec", this,1,
+ (PMF)&FGRotation::GetPQR);
+ PropertyManager->Tie("velocities/q-rad_sec", this,2,
+ (PMF)&FGRotation::GetPQR);
+ PropertyManager->Tie("velocities/r-rad_sec", this,3,
+ (PMF)&FGRotation::GetPQR);
+ PropertyManager->Tie("velocities/p-aero-rad_sec", this,1,
+ (PMF)&FGRotation::GetAeroPQR);
+ PropertyManager->Tie("velocities/q-aero-rad_sec", this,2,
+ (PMF)&FGRotation::GetAeroPQR);
+ PropertyManager->Tie("velocities/r-aero-rad_sec", this,3,
+ (PMF)&FGRotation::GetAeroPQR);
+ PropertyManager->Tie("accelerations/pdot-rad_sec", this,1,
+ (PMF)&FGRotation::GetPQRdot);
+ PropertyManager->Tie("accelerations/qdot-rad_sec", this,2,
+ (PMF)&FGRotation::GetPQRdot);
+ PropertyManager->Tie("accelerations/rdot-rad_sec", this,3,
+ (PMF)&FGRotation::GetPQRdot);
+ PropertyManager->Tie("attitude/roll-rad", this,1,
+ (PMF)&FGRotation::GetEuler);
+ PropertyManager->Tie("attitude/pitch-rad", this,2,
+ (PMF)&FGRotation::GetEuler);
+ PropertyManager->Tie("attitude/heading-true-rad", this,3,
+ (PMF)&FGRotation::GetEuler);
+ PropertyManager->Tie("velocities/phidot-rad_sec", this,1,
+ (PMF)&FGRotation::GetEulerRates);
+ PropertyManager->Tie("velocities/thetadot-rad_sec", this,2,
+ (PMF)&FGRotation::GetEulerRates);
+ PropertyManager->Tie("velocities/psidot-rad_sec", this,3,
+ (PMF)&FGRotation::GetEulerRates);
+ PropertyManager->Tie("attitude/phi-rad", this,
+ &FGRotation::Getphi);
+ PropertyManager->Tie("attitude/theta-rad", this,
+ &FGRotation::Gettht);
+ PropertyManager->Tie("attitude/psi-true-rad", this,
+ &FGRotation::Getpsi);
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+void FGRotation::unbind(void)
+{
+ PropertyManager->Untie("velocities/p-rad_sec");
+ PropertyManager->Untie("velocities/q-rad_sec");
+ PropertyManager->Untie("velocities/r-rad_sec");
+ PropertyManager->Untie("velocities/p-aero-rad_sec");
+ PropertyManager->Untie("velocities/q-aero-rad_sec");
+ PropertyManager->Untie("velocities/r-aero-rad_sec");
+ PropertyManager->Untie("accelerations/pdot-rad_sec");
+ PropertyManager->Untie("accelerations/qdot-rad_sec");
+ PropertyManager->Untie("accelerations/rdot-rad_sec");
+ PropertyManager->Untie("attitude/roll-rad");
+ PropertyManager->Untie("attitude/pitch-rad");
+ PropertyManager->Untie("attitude/heading-true-rad");
+ PropertyManager->Untie("velocities/phidot-rad_sec");
+ PropertyManager->Untie("velocities/thetadot-rad_sec");
+ PropertyManager->Untie("velocities/psidot-rad_sec");
+ PropertyManager->Untie("attitude/phi-rad");
+ PropertyManager->Untie("attitude/theta-rad");
+ PropertyManager->Untie("attitude/psi-true-rad");
+}
+
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
// The bitmasked value choices are as follows:
// unset: In this case (the default) JSBSim would only print
cout << "FGRotation::R (Yaw Rate) out of bounds: " << vPQR(eR) << endl;
}
}
+ if (debug_lvl & 64) {
+ if (from == 0) { // Constructor
+ cout << IdSrc << endl;
+ cout << IdHdr << endl;
+ }
+ }
}
+