コード例 #1
0
        public void VehicleCapability()
        {
            //Arrange
            var range      = new PayloadRange(1250, 5000);
            var trajectory = new Trajectory(11475000, 150000, 22.0, 7400, "GTO");

            var vehicle           = new LaunchVehicle();
            var vehicleCapability = new VehicleCapability(range, trajectory);

            vehicle.Capability.Add(trajectory.Name, vehicleCapability);

            var expectedName       = "GTO";
            var expectedRange      = range;
            var expectedTrajectory = trajectory;

            //Act
            var vCapability = vehicle.Capability;

            var actualName       = vCapability.Keys.ElementAt(0);
            var actualRange      = vCapability.Values.ElementAt(0).PayloadRange;
            var actualTrajectory = vCapability.Values.ElementAt(0).Trajectory;

            //Assert
            Assert.AreEqual(expectedName, actualName);
            Assert.AreEqual(expectedRange, actualRange);
            Assert.AreEqual(expectedTrajectory, actualTrajectory);
        }
コード例 #2
0
        public void VehicleFairings()
        {
            // Arrange
            var vehicle = new LaunchVehicle();
            var fairing = new Fairing(6.3, 1.5, 220);

            vehicle.Fairings.Add("M", fairing);

            var expectedName     = "M";
            var expectedLength   = 6.3;
            var expectedDiameter = 1.5;
            var expectedMass     = 220;

            //Act
            var vFairings = vehicle.Fairings;

            var actualName     = vFairings.Keys.ElementAt(0);
            var actualLength   = vFairings.Values.ElementAt(0).Length;
            var actualDiameter = vFairings.Values.ElementAt(0).Diameter;
            var actualMass     = vFairings.Values.ElementAt(0).Mass;

            //Assert
            Assert.AreEqual(expectedName, actualName);
            Assert.AreEqual(expectedLength, actualLength);
            Assert.AreEqual(expectedDiameter, actualDiameter);
            Assert.AreEqual(expectedMass, actualMass);
        }
コード例 #3
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;
        }
コード例 #4
0
        public double ProgradePitch()
        {
            var tempRF = LaunchVehicle.AutoPilot.ReferenceFrame;

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

            throw new NotImplementedException();
        }
コード例 #5
0
        private void GravityTurn(ref int runmode)
        {
            //LaunchVehicle.AutoPilot.TargetPitchAndHeading(Math.Max(5, (float)InterpolatePitch(LaunchVehicle.MeanAltitude)), 90);
            LaunchVehicle.AutoPilot.TargetPitchAndHeading(Math.Max(5, (float)VelocityAnglePitch()), 90);
            Print("Altitude: " + LaunchVehicle.MeanAltitude, 1, 0);
            Print("Pitch to: " + InterpolatePitch(LaunchVehicle.MeanAltitude), 2, 0);
            if (LaunchVehicle.MeanAltitude >= _meco)
            {
                LaunchVehicle.Control.Throttle = 0;
                //runmode++;

                //LaunchVehicle.Control.ActivateNextStage();
                LaunchVehicle.ActivateCenterEngines();
                Thread.Sleep(4000);
                LaunchVehicle.Control.Throttle = 1;
            }
        }
コード例 #6
0
        public void VehiclePacificationOption()
        {
            //Arrange
            var vehicle = new LaunchVehicle();
            var option  = new PacificationOption(PacificationType.GraveyardOrbit, 325);

            vehicle.PacificationOptions.Add("GraveYard", option);

            var expectedName   = "GraveYard";
            var expectedType   = PacificationType.GraveyardOrbit;
            var expectedDeltaV = 325;

            //Act
            var vOptions = vehicle.PacificationOptions;

            var actualName   = vOptions.Keys.ElementAt(0);
            var actualType   = vOptions.Values.ElementAt(0).PacificationType;
            var actualDeltaV = vOptions.Values.ElementAt(0).RequiredDeltaV;

            //Assert
            Assert.AreEqual(expectedName, actualName);
            Assert.AreEqual(expectedType, actualType);
            Assert.AreEqual(expectedDeltaV, actualDeltaV);
        }