]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/YASim/Surface.cpp
remove old .cvsignore files
[flightgear.git] / src / FDM / YASim / Surface.cpp
index 8e7bafaa65790f8f4c93f580e7c3357418e07eb8..db977f58a943e217f2acbb7ea9d6ecf9354bf6d4 100644 (file)
@@ -25,6 +25,7 @@ Surface::Surface()
     _slatDrag = _spoilerDrag = _flapDrag = 1;
 
     _flapLift = 0;
+    _flapEffectiveness = 1;
     _slatAlpha = 0;
     _spoilerLift = 1;
     _inducedDrag = 1;
@@ -132,6 +133,17 @@ void Surface::setFlap(float pos)
     _flapPos = pos;
 }
 
+void Surface::setFlapEffectiveness(float effectiveness)
+{
+    _flapEffectiveness = effectiveness;
+}
+
+double Surface::getFlapEffectiveness()
+{
+    return _flapEffectiveness;
+}
+
+
 void Surface::setSlat(float pos)
 {
     _slatPos = pos;
@@ -294,17 +306,20 @@ float Surface::stallFunc(float* v)
 // stall alpha
 float Surface::flapLift(float alpha)
 {
-    float flapLift = _cz * _flapPos * (_flapLift-1);
+    float flapLift = _cz * _flapPos * (_flapLift-1) * _flapEffectiveness;
+
+    if(_stalls[0] == 0)
+        return 0;
 
     if(alpha < 0) alpha = -alpha;
     if(alpha < _stalls[0])
         return flapLift;
     else if(alpha > _stalls[0] + _widths[0])
-        return 1;
+        return 0;
 
     float frac = (alpha - _stalls[0]) / _widths[0];
     frac = frac*frac*(3-2*frac);
-    return flapLift * (1-frac) + frac;
+    return flapLift * (1-frac);
 }
 
 float Surface::controlDrag(float lift, float drag)