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
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("")
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)))
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
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()
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
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)
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))
def smethod_0(position_0, position_1): return Unit.smethod_1(MathHelper.getBearing(position_0, position_1))
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
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)