Пример #1
0
        protected override Vector3d PrecomputeCenterOfLift(Vector3d velocity, double MachNumber, FARCenterQuery center)
        {
            Vector3d force = RunDragCalculation(velocity, MachNumber, 1);
            Vector3d pos   = GetCoD();

            center.AddForce(pos, force);
            return(force);
        }
Пример #2
0
 protected override Vector3d PrecomputeCenterOfLift(Vector3d velocity, double MachNumber, FARCenterQuery center)
 {
     try
     {
         Vector3d force = RunDragCalculation(velocity, MachNumber, 1);
         Vector3d pos   = GetCoD();
         center.AddForce(pos, force);
         return(force);
     }
     catch       //FIX ME!!!
     {           //Yell at KSP devs so that I don't have to engage in bad code practice
         //Debug.Log("The expected exception from the symmetry counterpart part transform internals was caught and suppressed");
         return(Vector3.zero);
     }
 }
            public void ApplyForce(PartData pd, Vector3 localVel, Vector3 forceVector, Vector3 torqueVector)
            {
                var tmp = 0.0005 * Vector3.SqrMagnitude(localVel);
                var dynamicPressurekPa = tmp * atmDensity;
                var dragFactor         = dynamicPressurekPa * Mathf.Max(PhysicsGlobals.DragCurvePseudoReynolds.Evaluate(atmDensity * Vector3.Magnitude(localVel)), 1.0f);
                var liftFactor         = dynamicPressurekPa;

                var     localVelNorm   = Vector3.Normalize(localVel);
                Vector3 localForceTemp = Vector3.Dot(localVelNorm, forceVector) * localVelNorm;
                var     partLocalForce = (localForceTemp * (float)dragFactor + (forceVector - localForceTemp) * (float)liftFactor);

                forceVector  = pd.aeroModule.part.transform.TransformDirection(partLocalForce);
                torqueVector = pd.aeroModule.part.transform.TransformDirection(torqueVector * (float)dynamicPressurekPa);
                if (!float.IsNaN(forceVector.x) && !float.IsNaN(torqueVector.x))
                {
                    Vector3 centroid = pd.aeroModule.part.transform.TransformPoint(pd.centroidPartSpace - pd.aeroModule.part.CoMOffset);
                    center.AddForce(centroid, forceVector);
                    center.AddTorque(torqueVector);
                }
            }
        protected override Vector3d PrecomputeCenterOfLift(Vector3d velocity, double MachNumber, FARCenterQuery center)
        {
            double AoA = CalculateAoA(velocity);

            Vector3d force = CalculateForces(velocity, MachNumber, AoA);
            center.AddForce(AerodynamicCenter, force);

            return force;
        }
 protected override Vector3d PrecomputeCenterOfLift(Vector3d velocity, double MachNumber, FARCenterQuery center)
 {
     Vector3d force = RunDragCalculation(velocity, MachNumber, 1);
     Vector3d pos = GetCoD();
     center.AddForce(pos, force);
     return force;
 }