]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/YASim/Surface.cpp
Use bool where the source and destination variable is bool.
[flightgear.git] / src / FDM / YASim / Surface.cpp
index 77349b7683d562432e4d95c7e74cdb037898d782..8e7bafaa65790f8f4c93f580e7c3357418e07eb8 100644 (file)
@@ -158,6 +158,13 @@ void Surface::calcForce(float* v, float rho, float* out, float* torque)
        return;
     }
 
+    // special case this so the logic below doesn't produce a non-zero
+    // force; should probably have a "no force" flag instead...
+    if(_cx == 0. && _cy == 0. && _cz == 0.) {
+        for(int i=0; i<3; i++) out[i] = torque[i] = 0.;
+        return;
+    }
+
     Math::mul3(1/vel, v, out);
 
     // Convert to the surface's coordinates
@@ -218,6 +225,31 @@ void Surface::calcForce(float* v, float rho, float* out, float* torque)
     Math::mul3(scale, torque, torque);
 }
 
+#if 0
+void Surface::test()
+{
+    static const float DEG2RAD = 0.0174532925199;
+    float v[3], force[3], torque[3];
+    float rho = Atmosphere::getStdDensity(0);
+    float spd = 30;
+
+    setFlap(0);
+    setSlat(0);
+    setSpoiler(0);
+
+    for(float angle = -90; angle<90; angle += 0.01) {
+        float rad = angle * DEG2RAD;
+        v[0] = spd * -Math::cos(rad);
+        v[1] = 0;
+        v[2] = spd * Math::sin(rad);
+        calcForce(v, rho, force, torque);
+        float lift = force[2] * Math::cos(rad) + force[0] * Math::sin(rad);
+        //__builtin_printf("%f %f\n", angle, lift);
+        __builtin_printf("%f %f\n", angle, torque[2]);
+    }
+}
+#endif
+
 // Returns a multiplier for the "plain" force equations that
 // approximates an airfoil's lift/stall curve.
 float Surface::stallFunc(float* v)
@@ -229,7 +261,7 @@ float Surface::stallFunc(float* v)
 
     // Wacky use of indexing, see setStall*() methods.
     int fwdBak = v[0] > 0; // set if this is "backward motion"
-    int posNeg = v[2] < 0; // set if the lift is toward -z
+    int posNeg = v[2] < 0; // set if the airflow is toward -z
     int i = (fwdBak<<1) | posNeg;
 
     float stallAlpha = _stalls[i];