def smethod_13(rnavFlightPhase_0, rnavWaypointType_0, speed_0, speed_1, distance_0, distance_1, double_0, angleUnits_0):
     if (rnavWaypointType_0 != RnavWaypointType.FlyBy):
         if (rnavWaypointType_0 != RnavWaypointType.FlyOver):
             raise UserWarning, "RNAV WayPoint type not SUPPORTED"
         if rnavFlightPhase_0 == RnavFlightPhase.Enroute:
             num1 = 15;
         elif rnavFlightPhase_0 == RnavFlightPhase.SID:
             num1 = 6;
         elif rnavFlightPhase_0 == RnavFlightPhase.STAR:
             raise UserWarning, "RNAV_FLIGHT_PHASE_NOT_SUPPORTED"
         elif rnavFlightPhase_0 == RnavFlightPhase.IafIf or rnavFlightPhase_0 == RnavFlightPhase.Faf:
             num1 = 11;
         elif rnavFlightPhase_0 == RnavFlightPhase.MissedApproach:
             num1 = 6;
         else:
             raise UserWarning, "RNAV_FLIGHT_PHASE_NOT_SUPPORTED"
         num2 = num1 * (speed_0.MetresPerSecond + speed_1.MetresPerSecond)
         return Distance(-(distance_0.Metres + num2))
     if (angleUnits_0 == AngleUnits.Degrees):
         double_0 = Unit.ConvertDegToRad(double_0)
     num3 = min([distance_1.Metres * math.tan(double_0 / 2), distance_1.Metres])
     if rnavFlightPhase_0 == RnavFlightPhase.Enroute:
         num = 10;
     elif rnavFlightPhase_0 == RnavFlightPhase.SID:
         num = 3;
     elif rnavFlightPhase_0 == RnavFlightPhase.STAR:
         raise UserWarning, "RNAV_FLIGHT_PHASE_NOT_SUPPORTED"
     elif rnavFlightPhase_0 == RnavFlightPhase.IafIf or rnavFlightPhase_0 == RnavFlightPhase.Faf:
         num = 6;
     elif rnavFlightPhase_0 == RnavFlightPhase.MissedApproach:
         num = 3;
     else:
         raise UserWarning, "RNAV_FLIGHT_PHASE_NOT_SUPPORTED"
     num4 = num * (speed_0.MetresPerSecond + speed_1.MetresPerSecond);
     return Distance(num3 - distance_0.Metres - num4)
    def smethod_12(rnavWaypointType_0, speed_0, speed_1, double_0, double_1, distance_0, distance_1, double_2, angleUnits_0):
        if (rnavWaypointType_0 != RnavWaypointType.FlyBy):
            if (rnavWaypointType_0 != RnavWaypointType.FlyOver):
                raise UserWarning, "RNAV WayPoint type not SUPPORTED"
            double0 = double_0 + double_1;
            num = double0 * (speed_0.MetresPerSecond + speed_1.MetresPerSecond)
            return Distance(-(distance_0.Metres + num))

        if (angleUnits_0 == AngleUnits.Degrees):
            double_2 = Unit.ConvertDegToRad(double_2);
        num1 = min([distance_1.Metres * math.tan(double_2 / 2), distance_1.Metres])
        double01 = double_0 * (speed_0.MetresPerSecond + speed_1.MetresPerSecond)
        return Distance(num1 - distance_0.Metres - double01)
 def smethod_11(rnavWaypointType_0, distance_0, distance_1, double_0, angleUnits_0):
     if (rnavWaypointType_0 != RnavWaypointType.FlyBy):
         if (rnavWaypointType_0 != RnavWaypointType.FlyOver):
             raise UserWarning, "RNAV WayPoint type not SUPPORTED"
         return distance_0
     if (angleUnits_0 == AngleUnits.Degrees):
         double_0 = Unit.ConvertDegToRad(double_0)
     return Distance(distance_1.Metres * math.tan(double_0 / 2) + distance_0.Metres)
 def smethod_6(rnavCommonWaypoint_0, aircraftSpeedCategory_0):
     if (aircraftSpeedCategory_0 == AircraftSpeedCategory.Custom):
         raise Messages.CUSTOM_AC_CATEGORY_NOT_SUPPORTED
     if rnavCommonWaypoint_0 == RnavCommonWaypoint.MAHWP:
         return Distance(10, DistanceUnits.NM)
     elif rnavCommonWaypoint_0 == RnavCommonWaypoint.MAWP:
         return Distance.NaN()
     elif rnavCommonWaypoint_0 == RnavCommonWaypoint.FAWP:
         if (aircraftSpeedCategory_0 == AircraftSpeedCategory.H):
             return Distance(2, DistanceUnits.NM)
         return Distance(5, DistanceUnits.NM)
     elif rnavCommonWaypoint_0 == RnavCommonWaypoint.IWP:
         if (aircraftSpeedCategory_0 == AircraftSpeedCategory.H):
             return Distance(3, DistanceUnits.NM)
         return Distance(5, DistanceUnits.NM)
     else:
         if (aircraftSpeedCategory_0 != AircraftSpeedCategory.H):
             pass
         else:
             return Distance(3, DistanceUnits.NM)                
     if (aircraftSpeedCategory_0 != AircraftSpeedCategory.A):
         if (aircraftSpeedCategory_0 != AircraftSpeedCategory.B):
             return Distance(6, DistanceUnits.NM)            
     return Distance(5, DistanceUnits.NM)
 def smethod_4(rnavCommonWaypoint_0, aircraftSpeedCategory_0):
     if (aircraftSpeedCategory_0 == AircraftSpeedCategory.Custom):
         raise UserWarning, Messages.CUSTOM_AC_CATEGORY_NOT_SUPPORTED
     if rnavCommonWaypoint_0 == RnavCommonWaypoint.MAHWP:
         return Distance(1, DistanceUnits.NM)
     elif rnavCommonWaypoint_0 == RnavCommonWaypoint.MAWP:
         return Distance.NaN()
     elif rnavCommonWaypoint_0 == RnavCommonWaypoint.FAWP:
         if (aircraftSpeedCategory_0 == AircraftSpeedCategory.H):
             return Distance(1, DistanceUnits.NM)
         return Distance(3, DistanceUnits.NM)
     elif rnavCommonWaypoint_0 == RnavCommonWaypoint.IWP:
         return Distance(2, DistanceUnits.NM)
     else:
         return Distance(1, DistanceUnits.NM)
 def smethod_2(position_0, position_1):
     return Distance(Unit.ConvertMeterToNM(MathHelper.calcDistance(position_0, position_1)), DistanceUnits.NM)
Ejemplo n.º 7
0
    def __init__(self, point3d_0, double_0, speed_0, speed_1, double_1,
                 turnDirection_0):

        #     public WindSpiral(Point3d point3d_0, double double_0, Speed speed_0, Speed speed_1, double double_1, TurnDirection turnDirection_0)
        #     {
        #         double num;
        #         int num1;
        self.Start = [
            Point3D(0.0, 0.0, 0.0),
            Point3D(0.0, 0.0, 0.0),
            Point3D(0.0, 0.0, 0.0)
        ]
        self.Middle = [
            Point3D(0.0, 0.0, 0.0),
            Point3D(0.0, 0.0, 0.0),
            Point3D(0.0, 0.0, 0.0)
        ]
        self.Finish = [
            Point3D(0.0, 0.0, 0.0),
            Point3D(0.0, 0.0, 0.0),
            Point3D(0.0, 0.0, 0.0)
        ]
        self.Center = [
            Point3D(0.0, 0.0, 0.0),
            Point3D(0.0, 0.0, 0.0),
            Point3D(0.0, 0.0, 0.0)
        ]
        self.Radius = [
            Point3D(0.0, 0.0, 0.0),
            Point3D(0.0, 0.0, 0.0),
            Point3D(0.0, 0.0, 0.0)
        ]
        self.Direction = turnDirection_0
        return1 = []
        distance = Distance.smethod_1(speed_0, double_1, return1)  # out num)
        num = return1[0]
        metres = distance.Metres
        metresPerSecond = 45 / num * speed_1.MetresPerSecond
        metresPerSecond1 = 90 / num * speed_1.MetresPerSecond
        metresPerSecond2 = 135 / num * speed_1.MetresPerSecond
        num2 = 180 / num * speed_1.MetresPerSecond
        metresPerSecond3 = 225 / num * speed_1.MetresPerSecond
        num3 = 270 / num * speed_1.MetresPerSecond
        if turnDirection_0 != TurnDirection.Left:
            num1 = 1
        else:
            num1 = -1
        point3d = MathHelper.distanceBearingPoint(
            point3d_0, num1 * 1.5707963267949 + double_0, metres)
        self.Start[0] = point3d_0
        self.Middle[0] = MathHelper.distanceBearingPoint(
            point3d, -1 * num1 * 0.785398163397448 + double_0,
            metres + metresPerSecond)
        self.Finish[0] = MathHelper.distanceBearingPoint(
            point3d, double_0, metres + metresPerSecond1)
        self.Start[1] = self.Finish[0]
        self.Middle[1] = MathHelper.distanceBearingPoint(
            point3d, num1 * 0.785398163397448 + double_0,
            metres + metresPerSecond2)
        self.Finish[1] = MathHelper.distanceBearingPoint(
            point3d, num1 * 1.5707963267949 + double_0, metres + num2)
        self.Start[2] = self.Finish[1]
        self.Middle[2] = MathHelper.distanceBearingPoint(
            point3d, num1 * 2.35619449019234 + double_0,
            metres + metresPerSecond3)
        self.Finish[2] = MathHelper.distanceBearingPoint(
            point3d, num1 * 3.14159265358979 + double_0, metres + num3)
        self.Center[0] = MathHelper.smethod_68(self.Start[0], self.Middle[0],
                                               self.Finish[0])
        self.Center[1] = MathHelper.smethod_68(self.Start[1], self.Middle[1],
                                               self.Finish[1])
        self.Center[2] = MathHelper.smethod_68(self.Start[2], self.Middle[2],
                                               self.Finish[2])
        self.Radius[0] = MathHelper.calcDistance(self.Center[0],
                                                 self.Middle[0])
        self.Radius[1] = MathHelper.calcDistance(self.Center[1],
                                                 self.Middle[1])
        self.Radius[2] = MathHelper.calcDistance(self.Center[2],
                                                 self.Middle[2])