public void TestAirfoil() { Airfoil airfoil = Airfoil.Get("NACA0012"); Assert.AreEqual(0.755, airfoil.CL(-165), 0.01); Assert.AreEqual(0.256, airfoil.CD(-165), 0.01); Assert.AreEqual(0.326, airfoil.CM(-165), 0.01); }
public override void Update(double dt) { var normalizedVelocity = Velocity.Normalize(2); var alpha = Math.Atan2(normalizedVelocity.z(), normalizedVelocity.x()); var CL = airfoil.CL(alpha * 180.0 / Math.PI); var CD = airfoil.CD(alpha * 180.0 / Math.PI); var CM = airfoil.CM(alpha * 180.0 / Math.PI); var V2 = Velocity.Norm(2); var L = 0.5 * Density * V2 * span * CL; var D = 0.5 * Density * V2 * span * CD; var M = 0.5 * Density * V2 * span * chord * CM; Force = Vector <double> .Build.DenseOfArray(new double[] { -D *Math.Cos(alpha) + L *Math.Sin(alpha), 0, -L *Math.Cos(alpha) - D *Math.Sin(alpha) }); Torque = Vector <double> .Build.DenseOfArray(new double[] { 0, M, 0 }); }