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()); }
public static Tuple3 TransformDirection(Tuple3 direction, ReferenceFrame from, ReferenceFrame to) { CheckReferenceFrames(from, to); return(to.DirectionFromWorldSpace(from.DirectionToWorldSpace(direction.ToVector())).ToTuple()); }
public static Tuple3 ReferencePlaneDirection(ReferenceFrame referenceFrame) { return(referenceFrame.DirectionFromWorldSpace(Planetarium.right).normalized.ToTuple()); }
public Tuple3 Direction(ReferenceFrame referenceFrame) { return(referenceFrame.DirectionFromWorldSpace(InternalBody.transform.up).ToTuple()); }
public Tuple3 Direction(ReferenceFrame referenceFrame) { return(referenceFrame.DirectionFromWorldSpace(WorldBurnVector.normalized).ToTuple()); }
public Tuple3 Direction (ReferenceFrame referenceFrame) { if (ReferenceEquals (referenceFrame, null)) throw new ArgumentNullException (nameof (referenceFrame)); return referenceFrame.DirectionFromWorldSpace (InternalBody.transform.up).ToTuple (); }