From: andy Date: Wed, 29 May 2002 07:09:41 +0000 (+0000) Subject: Oops. Stray checkin. Revert. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=adeeed1a0e9dba19ba9e02f3fb28ba080e6ff021;p=flightgear.git Oops. Stray checkin. Revert. --- diff --git a/src/FDM/YASim/Airplane.cpp b/src/FDM/YASim/Airplane.cpp index fb322196e..82b10d7d1 100644 --- a/src/FDM/YASim/Airplane.cpp +++ b/src/FDM/YASim/Airplane.cpp @@ -8,7 +8,6 @@ #include "Thruster.hpp" #include "Airplane.hpp" - namespace yasim { // gadgets @@ -795,16 +794,6 @@ void Airplane::solve() _solutionIterations = 0; _failureMsg = 0; while(1) { -#if 0 - printf("%d %f %f %f %f %f\n", //DEBUG - _solutionIterations, - 1000*_dragFactor, - _liftRatio, - _cruiseAoA, - _tailIncidence, - _approachElevator.val); -#endif - if(_solutionIterations++ > 10000) { _failureMsg = "Solution failed to converge after 10000 iterations"; return; @@ -827,7 +816,7 @@ void Airplane::solve() runApproach(); _model.getBody()->getAngularAccel(tmp); - double apitch0 = tmp[1]; + float apitch0 = tmp[1]; _model.getBody()->getAccel(tmp); float alift = _approachWeight * tmp[2]; @@ -869,13 +858,13 @@ void Airplane::solve() // like the tail incidence computation (it's solving for the // same thing -- pitching moment -- by diddling a different // variable). - const float ELEVDIDDLE = 0.001f; + const float ELEVDIDDLE = 0.0001f; _approachElevator.val += ELEVDIDDLE; runApproach(); _approachElevator.val -= ELEVDIDDLE; _model.getBody()->getAngularAccel(tmp); - double apitch1 = tmp[1]; + float apitch1 = tmp[1]; float elevDelta = -apitch0 * (ELEVDIDDLE/(apitch1-apitch0)); // Now apply the values we just computed. Note that the @@ -886,8 +875,8 @@ void Airplane::solve() applyLiftRatio(liftFactor); // DON'T do the following until the above are sane - if(normFactor(dragFactor) > 1.0001 - || normFactor(liftFactor) > 1.0001) + if(normFactor(dragFactor) > 1.1 + || normFactor(liftFactor) > 1.1) { continue; } @@ -895,25 +884,19 @@ void Airplane::solve() // OK, now we can adjust the minor variables: _cruiseAoA += 0.5f*aoaDelta; _tailIncidence += 0.5f*tailDelta; + _approachElevator.val += 0.5f*elevDelta; - _cruiseAoA = clamp(_cruiseAoA, -0.175f, 0.175f); - _tailIncidence = clamp(_tailIncidence, -0.175f, 0.175f); + _cruiseAoA = clamp(_cruiseAoA, -0.174f, 0.174f); + _tailIncidence = clamp(_tailIncidence, -0.174f, 0.174f); + _approachElevator.val = clamp(_approachElevator.val, -1.f, 1.f); if(norm(dragFactor) < 1.00001 && norm(liftFactor) < 1.00001 && abs(aoaDelta) < .000017 && - abs(tailDelta) < .000017) + abs(tailDelta) < .000017 && + abs(elevDelta) < 0.00001) { - // If this finaly value is OK, then we're all done - if(abs(elevDelta) < 0.0001) - break; - - // Otherwise, adjust and do the next iteration - _approachElevator.val += 0.8 * elevDelta; - if(abs(_approachElevator.val) > 1) { - _failureMsg = "Insufficient elevator to trim for approach"; - break; - } + break; } } @@ -923,10 +906,10 @@ void Airplane::solve() } else if(_liftRatio < 1e-04 || _liftRatio > 1e4) { _failureMsg = "Lift ratio beyond reasonable bounds."; return; - } else if(Math::abs(_cruiseAoA) >= .17453293) { + } else if(Math::abs(_cruiseAoA) >= .174) { _failureMsg = "Cruise AoA > 10 degrees"; return; - } else if(Math::abs(_tailIncidence) >= .17453293) { + } else if(Math::abs(_tailIncidence) >= .174) { _failureMsg = "Tail incidence > 10 degrees"; return; }