Esempio n. 1
0
        public Tuple3 SimulateAerodynamicForceAt(CelestialBody body, Tuple3 position, Tuple3 velocity)
        {
            if (ReferenceEquals(body, null))
            {
                throw new ArgumentNullException(nameof(body));
            }
            var     vessel        = InternalVessel;
            var     worldVelocity = referenceFrame.VelocityToWorldSpace(position.ToVector(), velocity.ToVector());
            var     worldPosition = referenceFrame.PositionToWorldSpace(position.ToVector());
            Vector3 worldForce;

            if (!FAR.IsAvailable)
            {
                worldForce = StockAerodynamics.SimAeroForce(body.InternalBody, vessel, worldVelocity, worldPosition);
            }
            else
            {
                Vector3 torque;
                var     altitude = (worldPosition - body.InternalBody.position).magnitude - body.InternalBody.Radius;
                FAR.CalculateVesselAeroForces(vessel, out worldForce, out torque, worldVelocity, altitude);
            }
            return(referenceFrame.DirectionFromWorldSpace(worldForce).ToTuple());
        }
Esempio n. 2
0
 public static Tuple3 TransformDirection(Tuple3 direction, ReferenceFrame from, ReferenceFrame to)
 {
     CheckReferenceFrames(from, to);
     return(to.DirectionFromWorldSpace(from.DirectionToWorldSpace(direction.ToVector())).ToTuple());
 }
Esempio n. 3
0
 public static Tuple3 ReferencePlaneDirection(ReferenceFrame referenceFrame)
 {
     return(referenceFrame.DirectionFromWorldSpace(Planetarium.right).normalized.ToTuple());
 }
Esempio n. 4
0
 public Tuple3 Direction(ReferenceFrame referenceFrame)
 {
     return(referenceFrame.DirectionFromWorldSpace(InternalBody.transform.up).ToTuple());
 }
Esempio n. 5
0
 public Tuple3 Direction(ReferenceFrame referenceFrame)
 {
     return(referenceFrame.DirectionFromWorldSpace(WorldBurnVector.normalized).ToTuple());
 }
Esempio n. 6
0
 public Tuple3 Direction (ReferenceFrame referenceFrame)
 {
     if (ReferenceEquals (referenceFrame, null))
         throw new ArgumentNullException (nameof (referenceFrame));
     return referenceFrame.DirectionFromWorldSpace (InternalBody.transform.up).ToTuple ();
 }