updateGearState();
// Precompute thrust in the model, and calculate aerodynamic forces
+ _model.getBody()->recalc();
_model.getBody()->reset();
_model.initIteration();
_model.calcForces(&_cruiseState);
updateGearState();
// Precompute thrust in the model, and calculate aerodynamic forces
+ _model.getBody()->recalc();
_model.getBody()->reset();
_model.initIteration();
_model.calcForces(&_approachState);
float thrust = tmp[0];
_model.getBody()->getAccel(tmp);
+ Math::tmul33(_cruiseState.orient, tmp, tmp);
float xforce = _cruiseWeight * tmp[0];
float clift0 = _cruiseWeight * tmp[2];
_model.getBody()->getAngularAccel(tmp);
+ Math::tmul33(_cruiseState.orient, tmp, tmp);
float pitch0 = tmp[1];
// Run an approach iteration, and do likewise
runApproach();
_model.getBody()->getAngularAccel(tmp);
+ Math::tmul33(_approachState.orient, tmp, tmp);
double apitch0 = tmp[1];
_model.getBody()->getAccel(tmp);
+ Math::tmul33(_approachState.orient, tmp, tmp);
float alift = _approachWeight * tmp[2];
// Modify the cruise AoA a bit to get a derivative
_cruiseAoA -= ARCMIN;
_model.getBody()->getAccel(tmp);
+ Math::tmul33(_cruiseState.orient, tmp, tmp);
float clift1 = _cruiseWeight * tmp[2];
// Do the same with the tail incidence
_tail->setIncidence(_tailIncidence);
_model.getBody()->getAngularAccel(tmp);
+ Math::tmul33(_cruiseState.orient, tmp, tmp);
float pitch1 = tmp[1];
// Now calculate:
_approachElevator.val -= ELEVDIDDLE;
_model.getBody()->getAngularAccel(tmp);
+ Math::tmul33(_approachState.orient, tmp, tmp);
double apitch1 = tmp[1];
float elevDelta = -apitch0 * (ELEVDIDDLE/(apitch1-apitch0));
_cruiseAoA = clamp(_cruiseAoA, -0.175f, 0.175f);
_tailIncidence = clamp(_tailIncidence, -0.175f, 0.175f);
- if(norm(dragFactor) < 1.00001 &&
- norm(liftFactor) < 1.00001 &&
+ if(abs(xforce/_cruiseWeight) < 0.0001 &&
+ abs(alift/_approachWeight) < 0.0001 &&
abs(aoaDelta) < .000017 &&
abs(tailDelta) < .000017)
{
static const float RPM2RAD = 0.10471975512;
static const float LBS2N = 4.44822;
static const float LBS2KG = 0.45359237;
+static const float KG2LBS = 2.2046225;
static const float CM2GALS = 264.172037284;
static const float HP2W = 745.700;
static const float INHG2PA = 3386.389;
char buf[256];
int i;
+ float grossWgt = _airplane.getModel()->getBody()->getTotalMass() * KG2LBS;
+ fgSetFloat("/yasim/gross-weight-lbs", grossWgt);
+
ControlMap* cm = _airplane.getControlMap();
for(i=0; i<_controlProps.size(); i++) {
PropOut* p = (PropOut*)_controlProps.get(i);