コード例 #1
0
        /* track prograde out of the atmosphere */
        private AttitudeState AttitudePrograde()
        {
            if (vessel.altitude > mainBody.RealMaxAtmosphereAltitude() && orbit.ApA > target_altitude)
            {
                return(AttitudeState.EXIT);
            }
            double pitch = pitchPID.Update(adjustedTimeToAp(), 0, 0, 30);

            attitude.attitudeTo(Quaternion.AngleAxis((float)pitch, Vector3.left) * Vector3d.forward, AttitudeReference.SURFACE_HORIZONTAL);
            return(AttitudeState.PROGRADE);
        }
コード例 #2
0
        /*
         * Throttle State Machine
         */

        /* burn to raise and maintain Ap at intermediate altitude */
        private ThrottleState ThrottleLaunch()
        {
            if (orbit.ApA > intermediate_altitude)
            {
                warp.WarpAtPhysicsRate(this, 4, true);
                throttle.target = 0.0;
                if (adjustedTimeToAp() < targetAPtime)
                {
                    return(ThrottleState.FINAL);
                }
            }
            else
            {
                warp.WarpAtPhysicsRate(this, 0, true);
                if (vessel.dynamicPressurekPa < maxQlimit)
                {
                    throttlePID.ResetI();
                }
                throttle.target = throttlePID.Update(vessel.dynamicPressurekPa, maxQlimit, 0, 1);
            }
            return(ThrottleState.LAUNCH);
        }