コード例 #1
0
    def method_33(self):
        turnDirection = []
        try:
            if (self.ui.cmbSegmentType.SelectedIndex == 1):
                point3d = self.pnlIDF.getPoint3D()
                point3d1 = self.pnlHRP.getPoint3D()
                num = Unit.smethod_1(MathHelper.getBearing(point3d, point3d1))
                num1 = self.smethod_17(
                    self.ui.txtTakeOffSurfaceTrack.txtRadialPlan.numberBox)
                MathHelper.smethod_77(num, num1, AngleUnits.Degrees,
                                      turnDirection)

                if (turnDirection[0] == TurnDirection.Left):
                    pass
#                     self.ui.chbLeftTurnProhibited.setVisible(False)
#                     self.ui.chbRightTurnProhibited.setVisible(True)
                elif (turnDirection[0] != TurnDirection.Right):
                    #                     self.ui.chbLeftTurnProhibited.setVisible(True)
                    #                     self.ui.chbRightTurnProhibited.setVisible(True)
                    if (self.ui.chbLeftTurnProhibited.isChecked()
                            and self.ui.chbRightTurnProhibited.isChecked()):
                        self.ui.chbRightTurnProhibited.setChecked(False)
                else:
                    pass
#                     self.ui.chbRightTurnProhibited.setVisible(False)
#                     self.ui.chbLeftTurnProhibited.setVisible(True)
        except:
            pass
コード例 #2
0
 def method_4(self):
     aSFA = None
     if (self.leg.Type == RnpArLegType.RF):
         if (self.ui.txtAltitude.text() != "" and self.ui.txtWind.text() != ""):
             if (self.leg.Segment == RnpArSegmentType.Final):
                 aSFA = self.group.IAS_FA;
             elif (self.leg.Segment != RnpArSegmentType.Initial):
                 if self.leg.Segment != RnpArSegmentType.Intermediate:
                     aSFA = self.group.IAS_MA
                 else:
                     aSFA = self.group.IAS_I
             else:
                 aSFA = self.group.IAS_IA
                 
             try:
                 altitude = Altitude(float(self.ui.txtAltitude.text()), AltitudeUnits.FT)
             except ValueError:
                 raise UserWarning, "Altitude Value is invalid!"
             speed = Speed.plus(Speed.smethod_0(aSFA, self.group.ISA, altitude) , Speed(float(self.ui.txtWind.text())))
             num = math.pow(speed.Knots, 2)
             value = Distance(float(self.ui.txtRadius.text()), DistanceUnits.M) 
             num1 = Unit.smethod_1(math.atan(num / (68625 * value.NauticalMiles)))
             num2 = 3431 * math.tan(Unit.ConvertDegToRad(num1)) / (3.14159265358979 * speed.Knots)
             self.ui.txtBank.setText(str(round(num1, 2)))
             self.ui.txtR.setText(str(round(num2, 2)))
             return
         self.ui.txtBank.setText("")
         self.ui.txtR.setText("")
コード例 #3
0
    def getWaypoint(self):
        if (self.type == RnavCommonWaypoint.FAWP):
            nauticalMiles = float(self.txtDistance.text())
            value = float(self.txtBearing.text())
            num1 = math.fabs(self.rethr - value)
            if (num1 > 180):
                num1 = 360 - num1
            num2 = math.sin(Unit.smethod_0(num1)) * 0.7559395
            num3 = Unit.smethod_1(math.asin(num2 / nauticalMiles))
            num4 = math.cos(Unit.smethod_0(num1)) * 0.755939525
            num5 = math.cos(Unit.smethod_0(num3)) * nauticalMiles
            return RnavWaypoints.smethod_3(self.pos1400m, float(self.txtBearing.text()), Distance(math.fabs(num5 - num4), DistanceUnits.NM))
        if (self.type != RnavCommonWaypoint.MAWP):
            return RnavWaypoints.smethod_3(self.from1, float(self.txtBearing.text()), Distance(float(self.txtDistance.text()), DistanceUnits.NM))
        angle = 90
        if (float(self.txtBearing.text()) > self.thrre or float(self.txtBearing.text()) - self.thrre >= 90):
            

            if self.flagStrName == "Y-Bar":
                angle = 70
            num = self.rethr - angle
            if (num < 0):
                num = num + 360
        else:
            num = self.rethr + angle
            if (num > 360):
                num = num - 360
        point3d1 = self.from1
        point3d2 = self.getThrPoint3D()
        point3d = MathHelper.getIntersectionPoint(point3d1, RnavWaypoints.smethod_3(self.from1, float(self.txtBearing.text()), Distance(1000)), point3d2, RnavWaypoints.smethod_3(self.getThrPoint3D(), num, Distance(1000)))
        if point3d == None: 
            raise UserWarning, Messages.ERR_FAILED_TO_CALCULATE_INTERSECTION_POINT        
        return RnavWaypoints.smethod_3(self.getThrPoint3D(), num, Distance(MathHelper.calcDistance(point3d2, point3d)))
コード例 #4
0
 def method_0(self):
     str0 = ""
     try:
         position = self.method_1(PositionType.START)
         position1 = self.method_1(PositionType.END)
         str0 = "{0:00}".format(Unit.smethod_1(MathHelper.getBearing(position.Point3d, position1.Point3d)) / 10)
     except:
         str0 = ""
     return str0
コード例 #5
0
    def acceptDlg(self):
        nauticalMiles = self.pnlDist.Value.NauticalMiles
        value = Unit.ConvertDegToRad(self.pnlTrack.Value)
        num1 = math.fabs(self.baseTrack - value)
        if (num1 > 180):
            num1 = 360 - num1
        num2 = math.sin(Unit.smethod_0(num1)) * 0.7559395
        num3 = Unit.smethod_1(math.asin(num2 / nauticalMiles))
        num4 = math.cos(Unit.smethod_0(num1)) * 0.755939525
        num5 = math.cos(Unit.smethod_0(num3)) * nauticalMiles
        calcPt = RnavWaypoints.smethod_3(
            self.pos1400m, self.pnlTrack.Value,
            Distance(math.fabs(num5 - num4), DistanceUnits.NM))

        self.accept()
コード例 #6
0
 def method_0(self):
     str0 = ""
     try:
         position = self.method_1(PositionType.THR)
         position1 = self.method_1(PositionType.END)
         str0 = str(
             int(
                 round(
                     Unit.smethod_1(
                         MathHelper.getBearing(position.Point3d,
                                               position1.Point3d)) / 10)))
         if len(str0) == 1:
             str0 = "0" + str0
     except:
         str0 = ""
     return str0
コード例 #7
0
    def method_9(self):
        if self.selectedModelIndex == None:
            self.ui.frame_Track.setVisible(False)
            return
        else:
            selectedArea = self.complexObstacleArea[self.selectedModelIndex.row()]
            QgisHelper.ClearRubberBandInCanvas(define._canvas)
            rBand = QgsRubberBand(define._canvas, QGis.Polygon)

            for point in selectedArea.PreviewArea.method_14_closed():
                rBand.addPoint(point)
            rBand.setFillColor( QColor(46, 64, 142, 100) )
            rBand.setBorderColor( QColor(0, 10, 238) )
            rBand.show()


            if not isinstance(selectedArea, SecondaryObstacleArea) or  not isinstance(selectedArea.area, SecondaryAreaStraight):
                self.ui.frame_Track.setVisible(False)
                return
            else:
                self.ui.txtTrack.setText(str(round(Unit.smethod_1(selectedArea.nominalTrack), 4)));
                self.ui.frame_Track.setVisible(True)
コード例 #8
0
 def smethod_1(position_0, position_1):
     #         double_0 = Unit.smethod_1(MathHelper.getBearing(position_1, position_0))
     return Unit.smethod_1(MathHelper.getBearing(position_0, position_1))
コード例 #9
0
 def smethod_0(position_0, position_1):
     return Unit.smethod_1(MathHelper.getBearing(position_0, position_1))
コード例 #10
0
    def __init__(self, pinSVisualSegmentDep_0):
        IPinSVisualSegmentDep.__init__(self)
        self.RADIUS = 750
        self.OCS = 0
        self.OIS = 1
        self.poaOIS = PrimaryObstacleArea()
        self.poaOCS = PrimaryObstacleArea()
        self.paOIS = PolylineArea()
        self.paOCS = PolylineArea()
        self.selectionArea = []
        self.ptsOCSL = []
        self.ptsOCSR = []
        self.ptHRP = Point3D()
        self.ptIDF = Point3D()
        self.track = 0.0
        self.tang = 0.0
        self.elevOIS = 0.0
        self.cancelled = False

        self.ptIDF = pinSVisualSegmentDep_0.pnlIDF.getPoint3D()
        self.ptHRP = pinSVisualSegmentDep_0.pnlHRP.getPoint3D()
        self.track = MathHelper.smethod_4(
            Unit.ConvertDegToRad(
                float(pinSVisualSegmentDep_0.ui.txtTakeOffSurfaceTrack.Value)))
        num = MathHelper.getBearing(self.ptIDF, self.ptHRP)
        MathHelper.getBearing(self.ptHRP, self.ptIDF)
        altitude = pinSVisualSegmentDep_0.pnlMCAH.method_3(
            Altitude(self.ptHRP.get_Z()))
        metres = altitude.Metres
        if (metres < 90):
            raise UserWarning, Messages.ERR_INSUFFICIENT_MINIMUM_ALTITUDE
        altitude1 = pinSVisualSegmentDep_0.pnlMCAH.method_2(
            Altitude(self.ptHRP.get_Z()))
        metres1 = altitude1.Metres
        self.tang = 0.125
        num1 = 741
        num2 = 1482
        if (metres > 183):
            num3 = math.trunc((metres - 183) / 30)
            if ((metres - 183) % 30 > 0):
                num3 = num3 + 1
            num2 = num2 + num3 * 185
        num4 = 50
        if (metres > 183 and metres <= 304):
            num5 = math.trunc((metres - 183) / 30)
            if ((metres - 183) % 30 > 0):
                num5 = num5 + 1
            num4 = num4 - num5 * 5
            if (num4 < 30):
                num4 = 30
        elif (metres > 304):
            num4 = 30
        num6 = Unit.ConvertDegToRad(num4)
        num7 = MathHelper.calcDistance(self.ptIDF, self.ptHRP)
        if (num7 < 1000):
            eRRINSUFFICIENTSEGMENTLENGTHIDFHRP = Messages.ERR_INSUFFICIENT_SEGMENT_LENGTH_IDF_HRP
            distance = Distance(num2)
            raise UserWarning, eRRINSUFFICIENTSEGMENTLENGTHIDFHRP % distance.Metres
        turnDirectionList = []
        num8 = MathHelper.smethod_77(num, self.track, AngleUnits.Radians,
                                     turnDirectionList)
        turnDirection = turnDirectionList[0]
        if (num8 + num6 >= 3.14159265358979):
            eRRPINSCCHGLARGEUSEDIRECT = Messages.ERR_PINS_CCHG_LARGE_USE_DIRECT
            num9 = Unit.smethod_1(3.14159265358979 - num6)
            raise UserWarning, eRRPINSCCHGLARGEUSEDIRECT % num9
        self.paOIS = PolylineArea()
        self.paOIS.method_1(self.ptIDF)
        if (turnDirection == TurnDirection.Nothing
                or MathHelper.smethod_99(num8, 0, 0.1)):
            point3d = MathHelper.distanceBearingPoint(self.ptHRP, num - num6,
                                                      num2)
            point3d1 = MathHelper.distanceBearingPoint(self.ptHRP, num + num6,
                                                       num2)
            if (pinSVisualSegmentDep_0.ui.chbLeftTurnProhibited.isChecked()):
                point3d = MathHelper.distanceBearingPoint(
                    self.ptHRP, num, num2)
            elif (pinSVisualSegmentDep_0.ui.chbRightTurnProhibited.isChecked()
                  ):
                point3d1 = MathHelper.distanceBearingPoint(
                    self.ptHRP, num, num2)
            self.paOIS.method_3(
                point3d,
                MathHelper.smethod_57(TurnDirection.Right, point3d, point3d1,
                                      self.ptHRP))
            self.paOIS.method_1(point3d1)
        else:
            if num2 > num7:
                point3d2 = None
                point3d3 = None
            else:
                point3d2 = MathHelper.distanceBearingPoint(
                    self.ptHRP,
                    num - math.fabs(math.asin(num2 / num7)) - 1.5707963267949,
                    num2)
                point3d3 = MathHelper.distanceBearingPoint(
                    self.ptHRP,
                    num + math.fabs(math.asin(num2 / num7)) + 1.5707963267949,
                    num2)
            if (num8 < num6 and not pinSVisualSegmentDep_0.ui.
                    chbLeftTurnProhibited.isChecked()
                    and not pinSVisualSegmentDep_0.ui.chbRightTurnProhibited.
                    isChecked()):
                point3d = MathHelper.distanceBearingPoint(
                    self.ptHRP, self.track - num6, num2)
                point3d1 = MathHelper.distanceBearingPoint(
                    self.ptHRP, self.track + num6, num2)
                if (MathHelper.smethod_119(point3d2, self.ptHRP, point3d)):
                    point3d = point3d2
                if (MathHelper.smethod_115(point3d3, self.ptHRP, point3d1)):
                    point3d1 = point3d3
                self.paOIS.method_3(
                    point3d,
                    MathHelper.smethod_57(TurnDirection.Right, point3d,
                                          point3d1, self.ptHRP))
                self.paOIS.method_1(point3d1)
                self.paOIS.method_1(self.ptIDF)
            elif (turnDirection != TurnDirection.Left):
                point3d1 = MathHelper.distanceBearingPoint(
                    self.ptHRP, self.track + num6, num2)
                if (MathHelper.smethod_115(point3d3, self.ptHRP, point3d1)):
                    point3d1 = point3d3
                if (pinSVisualSegmentDep_0.ui.chbLeftTurnProhibited.isChecked(
                )):
                    point3d = MathHelper.distanceBearingPoint(
                        self.ptHRP, self.track, num2)
                    self.paOIS.method_1(self.ptHRP)
                    if not MathHelper.smethod_119(point3d3, self.ptHRP,
                                                  point3d):
                        self.paOIS.method_1(point3d)
                    else:
                        self.paOIS.method_3(
                            point3d,
                            MathHelper.smethod_57(TurnDirection.Right, point3d,
                                                  point3d1, self.ptHRP))
                        self.paOIS.method_1(point3d1)
                    self.paOIS.method_1(self.ptIDF)
                else:
                    num10 = Unit.ConvertDegToRad(30)
                    point3d = MathHelper.distanceBearingPoint(
                        self.ptHRP, self.track - num6, num2
                    ) if num8 - num6 <= num10 else MathHelper.distanceBearingPoint(
                        self.ptHRP, num + num10, num2)
                    if (MathHelper.smethod_119(point3d, self.ptIDF,
                                               self.ptHRP)):
                        self.paOIS.method_1(self.ptHRP)
                    self.paOIS.method_3(
                        point3d,
                        MathHelper.smethod_57(TurnDirection.Right, point3d,
                                              point3d1, self.ptHRP))
                    self.paOIS.method_1(point3d1)
                    self.paOIS.method_1(self.ptIDF)
            else:
                point3d = MathHelper.distanceBearingPoint(
                    self.ptHRP, self.track - num6, num2)
                if (MathHelper.smethod_119(point3d2, self.ptHRP, point3d)):
                    point3d = point3d2
                if (not pinSVisualSegmentDep_0.ui.chbRightTurnProhibited.
                        isChecked()):
                    num11 = Unit.ConvertDegToRad(30)
                    point3d1 = MathHelper.distanceBearingPoint(
                        self.ptHRP, self.track + num6, num2
                    ) if num8 - num6 <= num11 else MathHelper.distanceBearingPoint(
                        self.ptHRP, num - num11, num2)
                    self.paOIS.method_3(
                        point3d,
                        MathHelper.smethod_57(TurnDirection.Right, point3d,
                                              point3d1, self.ptHRP))
                    self.paOIS.method_1(point3d1)
                    if (MathHelper.smethod_115(point3d1, self.ptIDF,
                                               self.ptHRP)):
                        self.paOIS.method_1(self.ptHRP)
                    self.paOIS.method_1(self.ptIDF)
                else:
                    point3d1 = MathHelper.distanceBearingPoint(
                        self.ptHRP, self.track, num2)
                    if (MathHelper.smethod_115(point3d2, self.ptHRP,
                                               point3d1)):
                        self.paOIS.method_3(
                            point3d,
                            MathHelper.smethod_57(TurnDirection.Right, point3d,
                                                  point3d1, self.ptHRP))
                    self.paOIS.method_1(point3d1)
                    self.paOIS.method_1(self.ptHRP)
                    self.paOIS.method_1(self.ptIDF)


#         polyline = AcadHelper.smethod_131(self.paOIS);
#         polyline.set_Closed(true);
#         polyline = polyline.smethod_159(num1, OffsetGapType.Fillet, TurnDirection.Right);
        self.paOIS.offsetCurve(num1)
        self.poaOIS = PrimaryObstacleArea(self.paOIS)
        self.elevOIS = self.ptHRP.get_Z() + max([metres / 2 - 46, 46])
        metres2 = float(pinSVisualSegmentDep_0.ui.txtHSAW.Value.Metres)
        metres3 = float(pinSVisualSegmentDep_0.ui.txtHSAL.Value.Metres)
        num = MathHelper.smethod_4(
            Unit.ConvertDegToRad(
                float(pinSVisualSegmentDep_0.ui.txtTakeOffSurfaceTrack.Value)))
        self.paOCS = PolylineArea()
        self.ptsOCSL = []
        self.ptsOCSR = []
        point3d4 = MathHelper.distanceBearingPoint(
            MathHelper.distanceBearingPoint(self.ptHRP, num, metres3 / 2),
            num - 1.5707963267949, metres2 / 2)
        point3d5 = MathHelper.distanceBearingPoint(
            MathHelper.distanceBearingPoint(self.ptHRP, num, metres3 / 2),
            num + 1.5707963267949, metres2 / 2)
        num12 = math.atan(
            0.1
        ) if pinSVisualSegmentDep_0.ui.cmbDepartureType.SelectedIndex == 0 else math.atan(
            0.15)
        num13 = 152 / self.tang
        num14 = (120 - metres2 / 2) / math.tan(num12)
        self.ptsOCSL = []
        self.ptsOCSL.append(point3d4)
        self.ptsOCSL.append(
            MathHelper.distanceBearingPoint(
                point3d4, num - num12,
                num14 * math.cos(num12)).smethod_167(self.ptHRP.get_Z() +
                                                     num14 * self.tang))
        self.ptsOCSL.append(
            MathHelper.distanceBearingPoint(
                self.ptsOCSL[1], num,
                num13 - num14).smethod_167(self.ptHRP.get_Z() + 152))
        self.ptsOCSR = []
        self.ptsOCSR.append(point3d5)
        self.ptsOCSR.append(
            MathHelper.distanceBearingPoint(
                point3d5, num + num12,
                num14 * math.cos(num12)).smethod_167(self.ptHRP.get_Z() +
                                                     num14 * self.tang))
        self.ptsOCSR.append(
            MathHelper.distanceBearingPoint(
                self.ptsOCSR[1], num,
                num13 - num14).smethod_167(self.ptHRP.get_Z() + 152))
        self.paOCS = PolylineArea()
        for point in self.ptsOCSL:
            self.paOCS.method_1(point)
        for j in range(len(self.ptsOCSR) - 1, -1, -1):
            self.paOCS.method_1(self.ptsOCSR[j])
        self.paOCS.method_10()
        self.poaOCS = PrimaryObstacleArea(self.paOCS)
        self.selectionArea = (PrimaryObstacleArea(self.paOIS)).SelectionArea
コード例 #11
0
 def __init__(self, pinSVisualSegmentDep_0):
     IPinSVisualSegmentDep.__init__(self)
     self.poaOIS = PrimaryObstacleArea()
     self.paOIS = PolylineArea()
     self.tanOIS = 0.0
     self.trackOIS = 0.0
     self.maxSurfAlt = 0.0
     self.ptHRP = Point3D()
     self.ptIDF = Point3D()
     self.ptL1 = Point3D()
     self.ptR1 = Point3D()
     turnDirection = []
     metres = float(pinSVisualSegmentDep_0.ui.txtHSAL.Value.Metres)
     num = float(pinSVisualSegmentDep_0.ui.txtHSAW.Value.Metres)
     self.ptHRP = pinSVisualSegmentDep_0.pnlHRP.getPoint3D()
     self.ptIDF = pinSVisualSegmentDep_0.pnlIDF.getPoint3D()
     num1 = MathHelper.calcDistance(self.ptIDF, self.ptHRP) - metres / 2
     if (num1 < 1482):
         raise UserWarning, Messages.ERR_INSUFFICIENT_SEGMENT_LENGTH
     value = float(pinSVisualSegmentDep_0.ui.txtTrackFrom.Value)
     num2 = Unit.smethod_1(MathHelper.getBearing(self.ptHRP, self.ptIDF))
     num3 = MathHelper.smethod_77(num2, value, AngleUnits.Degrees,
                                  turnDirection)
     if (num3 == 0):
         str1 = "13.9km(7.5nm)"
         if (num1 > 13900):
             raise UserWarning, Messages.ERR_MAX_SEGMENT_LENGTH_X % str1
     elif (num3 <= 10):
         str3 = "11.9km(6.4nm)"
         if (num1 > 11900):
             raise UserWarning, Messages.ERR_MAX_SEGMENT_LENGTH_X % str3
     elif (num3 > 20):
         if (num3 > 30):
             raise UserWarning, Messages.ERR_COURSE_CHANGES_GREATER_THAN_30_NOT_ALLOWED
         str5 = "6.5km(3.5nm)"
         if (num1 > 6500):
             raise UserWarning, Messages.ERR_MAX_SEGMENT_LENGTH_X % str5
     else:
         str7 = "9.3km(5nm)"
         if (num1 > 9300):
             raise UserWarning, Messages.ERR_MAX_SEGMENT_LENGTH_X % str7
     altitude = pinSVisualSegmentDep_0.pnlMCAH.method_2(
         Altitude(self.ptHRP.get_Z()))
     metres1 = altitude.Metres
     altitude1 = pinSVisualSegmentDep_0.pnlMCAH.method_3(
         Altitude(self.ptHRP.get_Z()))
     metres2 = altitude1.Metres
     metres3 = pinSVisualSegmentDep_0.ui.txtMOC.Value.Metres
     if (metres2 - metres3 <= 0):
         raise UserWarning, Messages.ERR_INSUFFICIENT_MINIMUM_ALTITUDE
     angleGradientSlope = pinSVisualSegmentDep_0.ui.txtVSDG.Value
     percent = metres2 / (angleGradientSlope.Percent / 100)
     self.tanOIS = (metres2 - metres3) / percent
     if (percent > num1):
         raise UserWarning, Messages.ERR_IDF_TOO_CLOSE_OR_MIN_ALT_TOO_HIGH
     num2 = Unit.ConvertDegToRad(num2)
     value = Unit.ConvertDegToRad(value)
     self.trackOIS = num2
     num4 = Unit.ConvertDegToRad(15)
     point3d = MathHelper.distanceBearingPoint(self.ptHRP, num2, metres / 2)
     self.ptL1 = MathHelper.distanceBearingPoint(
         point3d, num2 - 1.5707963267949,
         45).smethod_167(self.ptHRP.get_Z())
     self.ptR1 = MathHelper.distanceBearingPoint(
         point3d, num2 + 1.5707963267949,
         45).smethod_167(self.ptHRP.get_Z())
     point3d1 = MathHelper.distanceBearingPoint(
         self.ptL1, num2 - num4,
         percent / math.cos(num4)).smethod_167(self.ptHRP.get_Z() +
                                               percent * self.tanOIS)
     point3d2 = MathHelper.distanceBearingPoint(
         self.ptR1, num2 + num4,
         percent / math.cos(num4)).smethod_167(self.ptHRP.get_Z() +
                                               percent * self.tanOIS)
     point3d3 = MathHelper.distanceBearingPoint(
         point3d1, num2 - num4, (num1 - percent) /
         math.cos(num4)).smethod_167(self.ptHRP.get_Z() +
                                     percent * self.tanOIS)
     point3d4 = MathHelper.distanceBearingPoint(
         point3d2, num2 + num4, (num1 - percent) /
         math.cos(num4)).smethod_167(self.ptHRP.get_Z() +
                                     percent * self.tanOIS)
     self.maxSurfAlt = self.ptHRP.get_Z() + percent * self.tanOIS
     self.paOIS = PolylineArea()
     polylineArea = self.paOIS
     point3dArray = [
         self.ptL1, point3d1, point3d3, point3d4, point3d2, self.ptR1
     ]
     polylineArea.method_7(point3dArray)
     self.paOIS.method_16()
     self.poaOIS = PrimaryObstacleArea(self.paOIS)