コード例 #1
0
        /// <summary>
        /// Start and execute the flight sequence
        /// <param name="countdown"></param>
        /// </summary>
        public void Execute(bool countdown = true)
        {
            if (countdown)
            {
                LaunchWithCountdown();
            }
            else
            {
                LaunchWithoutCountdown();
            }

            while (UpperStage == null)
            {
                new LaunchGuidance.LiftOff(LaunchVehicle, 1, 0).Execute(until: () => LaunchVehicle.VerticalSpeed > 100);
                new LaunchGuidance.GravityTurn(LaunchVehicle, 1, 1).Execute(until: () => LaunchVehicle.MeanAltitude > _meco);
                var ss = new LaunchGuidance.StageSeparation(LaunchVehicle, 1, 2);
                ss.OnComplete += (s, e) => UpperStage = ss.GetNextStage();
            }

            UpperStage.AutoPilot.Engage();

            LaunchVehicle.AutoPilot.Engage();
            LaunchVehicle.Control.RCS = true;
            LaunchVehicle.AutoPilot.TargetPitchAndHeading(-5, 270);
            LaunchVehicle.ActivateCenterEngines();

            while (Math.Abs(LaunchVehicle.Flight(LaunchVehicle.Orbit.Body.ReferenceFrame).Heading - 270) < 10)
            {
                ;
            }

            UpperStage.Control.Throttle    = 1;
            LaunchVehicle.Control.Throttle = 1;
        }
コード例 #2
0
        public double ProgradePitch()
        {
            var tempRF = LaunchVehicle.AutoPilot.ReferenceFrame;

            LaunchVehicle.AutoPilot.ReferenceFrame = LaunchVehicle.SurfaceVelocityReferenceFrame;
            var result = LaunchVehicle.Flight(LaunchVehicle.SurfaceVelocityReferenceFrame).Prograde;

            throw new NotImplementedException();
        }