def putDistances(self): try: point3dThr = self.parametersPanel.pnlThrPosition.Point3d point3dFaf = self.parametersPanel.pnlFafPosition.Point3d point3dMapt = self.parametersPanel.pnlMaPtPosition.Point3d speedTas = self.parametersPanel.pnlTas.Value inboundTrackRad = Unit.ConvertDegToRad(self.parametersPanel.pnlInboundTrack.Value) inboundTrack180Rad = MathHelper.smethod_4(inboundTrackRad + math.pi) dDist = Distance(MathHelper.calcDistance(point3dFaf, point3dMapt)) self.parametersPanel.pnlDistOfFafMapt.Value = dDist aDist = self.parametersPanel.pnlDistA.Value bDist = self.parametersPanel.pnlDistB.Value tasMin = Speed.smethod_0(self.parametersPanel.pnlIas.Value, -10, self.parametersPanel.pnlAerodromeAltitude.Value) tasMax = Speed.smethod_0(self.parametersPanel.pnlIas.Value, 15, self.parametersPanel.pnlAerodromeAltitude.Value) # calculate Distance from earliest MAPt to nominal MAPt: x1 = math.sqrt(math.pow(aDist.NauticalMiles, 2) + math.pow(tasMin.Knots * 10 / float(3600), 2) + math.pow(30 * dDist.NauticalMiles / tasMin.Knots, 2)) x2 = math.sqrt(math.pow(aDist.NauticalMiles, 2) + math.pow(tasMax.Knots * 10 / float(3600), 2) + math.pow(30 * dDist.NauticalMiles / tasMax.Knots, 2)) distEarliestMaptToNominalMapt = Distance(max(x1, x2), DistanceUnits.NM) self.parametersPanel.pnlDistOfEarliestToNominalMapt.Value = distEarliestMaptToNominalMapt #calculate Distance from nominal MAPt to latest MAPt x3 = math.sqrt(math.pow(bDist.NauticalMiles, 2) + math.pow(tasMin.Knots * 13 / float(3600), 2) + math.pow(30 * dDist.NauticalMiles / tasMin.Knots, 2)) x4 = math.sqrt(math.pow(bDist.NauticalMiles, 2) + math.pow(tasMax.Knots * 13 / float(3600), 2) + math.pow(30 * dDist.NauticalMiles / tasMax.Knots, 2)) distNominalMaptToLatestMapt = Distance(max(x3, x4), DistanceUnits.NM) self.parametersPanel.pnlDistOfNominalToLatestMapt.Value = distNominalMaptToLatestMapt #calculate Distance from Mapt to SOC x5 = x3 + 15 * (tasMin.Knots + 10) / float(3600) x6 = x4 + 15 * (tasMax.Knots + 10) / float(3600) distMaptSoc = Distance(max(x5, x6), DistanceUnits.NM) socMaptDistMeters = distMaptSoc.Metres socThrDistMeters = MathHelper.calcDistance(point3dMapt, point3dThr) - socMaptDistMeters sockBearing = inboundTrackRad self.socPoint3d = MathHelper.distanceBearingPoint(point3dMapt, sockBearing, socMaptDistMeters).smethod_167(self.calcSocAltitude()) self.parametersPanel.pnlDistOfMaptSoc.Value = Distance(socMaptDistMeters) self.parametersPanel.pnlDistOfSocThr.Value = Distance(MathHelper.calcDistance(self.socPoint3d, point3dThr)) self.parametersPanel.pnlDistOfFafMapt.Value = Distance(MathHelper.calcDistance(point3dFaf, point3dMapt))#MathHelper.calcDistance(point3dThr, self.socPoint3d)) self.parametersPanel.pnlDistOfMaptThr.Value = Distance(MathHelper.calcDistance(point3dMapt, point3dThr)) 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 btnConstruct_Click(self): flag = FlightPlanBaseDlg.btnConstruct_Click(self) if not flag: return value = Speed(float(self.parametersPanel.txtIas.text()),SpeedUnits.KTS); if (self.parametersPanel.chbDeparture.isChecked()): value = value + (value / 10); altitude = Altitude(float(self.parametersPanel.txtAltitudeFt.text()), AltitudeUnits.FT); value1 = float(self.parametersPanel.txtIsa.text()); num1 = float (self.parametersPanel.txtBankAngle.text()); self.speedP = self.parametersPanel.pnlWind.Value; self.num2P = Unit.ConvertDegToRad(float(self.parametersPanel.txtTrackRadial.Value)); self.orientationTypeP = self.parametersPanel.cmbOrientation.currentText(); speed1 = Speed.smethod_0(value, value1, altitude); numList = [] distance = Distance.smethod_1(speed1, num1, numList); self.numP = numList[0] self.metresP = distance.Metres; self.originP = Point3D.get_Origin(); self.point3dP = Point3D.get_Origin(); self.origin1P = Point3D.get_Origin(); self.polylineP = PolylineArea(); self.flagP = True; define._canvas.setMapTool(self.CaptureCoordTool)
def altitudeChanged(self): self.parametersPanel.pnlWind.setAltitude(self.parametersPanel.pnlAerodromeAltitude.Value) try: self.parametersPanel.pnlTas.Value = Speed.smethod_0(self.parametersPanel.pnlIas.Value, self.parametersPanel.pnlIsa.Value, self.parametersPanel.pnlAerodromeAltitude.Value) self.showMarkDaSoc() except: raise ValueError("Value Invalid")
def iasChanged(self): try: self.parametersPanel.txtTas.Value = Speed.smethod_0( self.parametersPanel.txtIas.Value, float(self.parametersPanel.txtIsa.Value), self.parametersPanel.txtAltitude.Value - self.parametersPanel.pnlNavAid.Altitude()) except: raise ValueError("Value Invalid")
def __init__(self, parent, parameterList): QDialog.__init__(self, parent) self.setObjectName("PdtCheckResultDlg") self.setWindowTitle("PDT Check") self.resize(350, 400) self.verticalLayout = QVBoxLayout(self) self.verticalLayout.setObjectName("verticalLayout") self.tabWidgetPDT = QTabWidget(self) self.tabWidgetPDT.setObjectName("tabWidgetPDT") if len(parameterList) < 1: return for parameters in parameterList: self.tab = tabControl(self) isaValue = parameters[1] altitude = parameters[2] iasValue = parameters[3] speed_1 = Speed.smethod_0(Speed(iasValue, SpeedUnits.KTS), isaValue, altitude) + Speed(25) straitSegment = speed_1.KilometresPerHour * 1000 / 3600 * 9 pdtResultStr = "" K = round( 171233 * math.pow(288 + isaValue - 0.00198 * altitude.Feet, 0.5) / (math.pow(288 - 0.00198 * altitude.Feet, 2.628)), 4) pdtResultStr = "1. K = \t" + str(K) + "\n" V = K * iasValue pdtResultStr += "2. V = \t" + str(V) + "kts\n" h = altitude.Metres pdtResultStr += "3. h = \t" + str(h) + "m\n" # h = altitude.Feet / 1000 pdtResultStr += "4. w = \t" + "46km/h\n" num = 2313.03083707 / (3.14159265358979 * speed_1.KilometresPerHour) if (num > 3): num = 3 r = speed_1.KilometresPerHour / (62.8318530717959 * num) * 1000 pdtResultStr += "5. r = \t" + str(r / 1000) + "km\n" R = 2 * r + straitSegment pdtResultStr += "6. R = \t" + str(R / 1000) + "km\n" # resultStr = MathHelper.pdtCheckResultToString(parameters[1], parameters[2], parameters[3], parameters[4]) self.tab.plainTextEdit.setPlainText(pdtResultStr) try: self.tabWidgetPDT.addTab(self.tab, parameters[0]) except: self.tabWidgetPDT.addTab(self.tab, "") # self.tabWidgetPDT.addTab(self.tab, "A") self.verticalLayout.addWidget(self.tabWidgetPDT)
def isaChanged(self): try: self.parametersPanel.txtTas.setText( str( Speed.smethod_0( Speed(float(self.parametersPanel.txtIas.text())), float(self.parametersPanel.txtIsa.text()), Altitude( float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)).Knots)) except: raise ValueError("Value Invalid")
def initParametersPan(self): ui = Ui_HoldingRace_P() self.parametersPanel = ui FlightPlanBaseDlg.initParametersPan(self) self.parametersPanel.txtTas.setEnabled(False) self.parametersPanel.pnlInsPos = PositionPanel( self.parametersPanel.gbVorDmePosition) # self.parametersPanel.pnlInsPos.groupBox.setTitle("FAWP") self.parametersPanel.pnlInsPos.btnCalculater.hide() self.parametersPanel.pnlInsPos.hideframe_Altitude() self.parametersPanel.pnlInsPos.setObjectName("pnlInsPos") ui.vl_VorDmePosition.addWidget(self.parametersPanel.pnlInsPos) self.parametersPanel.pnlWind = WindPanel( self.parametersPanel.gbParameters) self.parametersPanel.pnlWind.lblIA.setMinimumSize(250, 0) self.parametersPanel.vl_gbParameters.insertWidget( 6, self.parametersPanel.pnlWind) self.parametersPanel.pnlWind.setAltitude( Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)) self.parametersPanel.cmbAircraftCategory.addItems( ["A", "B", "C", "D", "E", "H", "Custom"]) # self.parametersPanel.cmbOutboundLimit.addItems(["Time", "Distance From Waypoint"]) # self.parametersPanel.cmbConstruction.addItems(["2D", "3D"]) self.parametersPanel.cmbOrientation.addItems(["Right", "Left"]) self.parametersPanel.cmbAircraftCategory.setCurrentIndex(3) self.parametersPanel.frameAircraftCategory.hide() self.parametersPanel.frameMoc.hide() # self.parametersPanel.cmbHoldingFunctionality.currentIndexChanged.connect(self.cmbHoldingFunctionalityCurrentIndexChanged) # self.parametersPanel.cmbOutboundLimit.currentIndexChanged.connect(self.cmbOutboundLimitCurrentIndexChanged) # self.parametersPanel.btnCaptureTrack.clicked.connect(self.captureBearing) # self.parametersPanel.btnCaptureDistance.clicked.connect(self.measureDistance) # self.parametersPanel.btnCaptureLength.clicked.connect(self.measureLength) self.parametersPanel.txtAltitude.textChanged.connect( self.altitudeChanged) # self.parametersPanel.cmbAircraftCategory.currentIndexChanged.connect(self.changeCategory) # self.parametersPanel.btnIasHelp.clicked.connect(self.iasHelpShow) self.parametersPanel.txtIas.textChanged.connect(self.iasChanged) self.parametersPanel.txtIsa.textChanged.connect(self.isaChanged) self.parametersPanel.txtTas.setText( str( Speed.smethod_0( Speed(float(self.parametersPanel.txtIas.text())), float(self.parametersPanel.txtIsa.text()), Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)).Knots))
def method_31(self): self.parametersPanel.pnlWind.setAltitude( Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)) try: speed = Speed.smethod_0( Speed(float(self.parametersPanel.txtIas.text())), float(self.parametersPanel.txtIsa.text()), Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)) self.parametersPanel.txtTas.setText(str(round(speed.Knots, 4))) except: raise ValueError("Value Invalid")
def altitudeMChanged(self): if self.flag==0: self.flag=1; if self.flag==2: self.flag=0; if self.flag==1: try: self.parametersPanel.txtAltitudeFt.setText(str(round(Unit.ConvertMeterToFeet(float(self.parametersPanel.txtAltitudeM.text())), 4))) except: self.parametersPanel.txtAltitudeFt.setText("0.0") self.parametersPanel.pnlWind.setAltitude(Altitude(float(self.parametersPanel.txtAltitudeFt.text()), AltitudeUnits.FT)) try: self.parametersPanel.txtTas.setText(str(Speed.smethod_0(Speed(float(self.parametersPanel.txtIas.text())), float(self.parametersPanel.txtIsa.text()), Altitude(float(self.parametersPanel.txtAltitudeFt.text()), AltitudeUnits.FT)).Knots)) except: raise ValueError("Value Invalid")
def initParametersPan(self): ui = Ui_HoldingOverHead() self.parametersPanel = ui FlightPlanBaseDlg.initParametersPan(self) self.connect(self.parametersPanel.pnlNavAid, SIGNAL("positionChanged"), self.initResultPanel) self.connect(self.parametersPanel.pnlNavAid, SIGNAL("positionChanged"), self.iasChanged) self.parametersPanel.pnlWind.setAltitude( self.parametersPanel.txtAltitude.Value) # self.parametersPanel.cmbNavAidType.Items = ["VOR", "NDB"] self.parametersPanel.cmbUsedFor.Items = ["Holding", "Racetrack"] self.parametersPanel.cmbUsedFor.SelectedIndex = 1 self.parametersPanel.cmbConstruction.Items = ["2D", "3D"] self.parametersPanel.cmbOrientation.Items = ["Right", "Left"] self.parametersPanel.chbSector1.Visible = False self.parametersPanel.chbSector2.Visible = False self.parametersPanel.chbSector3.Visible = False self.parametersPanel.chbCatH.Visible = False self.connect(self.parametersPanel.cmbNavAidType, SIGNAL("Event_0"), self.initBasedOnCmb) self.connect(self.parametersPanel.cmbUsedFor, SIGNAL("Event_0"), self.cmbUsedForCurrentIndexChanged) self.connect(self.parametersPanel.txtAltitude, SIGNAL("Event_0"), self.altitudeChanged) self.connect(self.parametersPanel.txtIas, SIGNAL("Event_0"), self.iasChanged) self.connect(self.parametersPanel.txtIsa, SIGNAL("Event_0"), self.iasChanged) self.parametersPanel.txtTas.Value = Speed.smethod_0( self.parametersPanel.txtIas.Value, self.parametersPanel.txtIsa.Value, self.parametersPanel.txtAltitude.Value - self.parametersPanel.pnlNavAid.Altitude())
def initParametersPan(self): ui = Ui_TurnArea() self.parametersPanel = ui FlightPlanBaseDlg.initParametersPan(self) self.parametersPanel.txtTas.setEnabled(False) self.CaptureCoordTool = CaptureCoordinateToolUpdate(define._canvas) self.connect(self.CaptureCoordTool, SIGNAL("resultPointValueList"), self.resultPointValueListMethod) self.parametersPanel.pnlWind = WindPanel(self.parametersPanel.gbParameters) self.parametersPanel.pnlWind.lblIA.setMinimumSize(100, 0) self.parametersPanel.pnlWind.lblIA.setMaximumSize(100, 10000) self.parametersPanel.vl_gbParameters.insertWidget(6, self.parametersPanel.pnlWind) self.parametersPanel.pnlWind.setAltitude(Altitude(float(self.parametersPanel.txtAltitudeFt.text()), AltitudeUnits.FT)) self.parametersPanel.cmbOrientation.addItems(["Right", "Left"]) # self.parametersPanel.cmbHoldingFunctionality.currentIndexChanged.connect(self.cmbHoldingFunctionalityCurrentIndexChanged) # self.parametersPanel.cmbOutboundLimit.currentIndexChanged.connect(self.cmbOutboundLimitCurrentIndexChanged) # self.parametersPanel.btnCaptureTrack.clicked.connect(self.captureBearing) # self.parametersPanel.btnCaptureDistance.clicked.connect(self.measureDistance) # self.parametersPanel.btnCaptureLength.clicked.connect(self.measureLength) self.parametersPanel.txtAltitudeFt.textChanged.connect(self.altitudeFtChanged) self.parametersPanel.txtAltitudeM.textChanged.connect(self.altitudeMChanged) # self.parametersPanel.cmbAircraftCategory.currentIndexChanged.connect(self.changeCategory) # self.parametersPanel.btnIasHelp.clicked.connect(self.iasHelpShow) self.parametersPanel.txtIas.textChanged.connect(self.iasChanged) self.parametersPanel.txtIsa.textChanged.connect(self.isaChanged) self.parametersPanel.txtTas.setText(str(round(Speed.smethod_0(Speed(float(self.parametersPanel.txtIas.text())), float(self.parametersPanel.txtIsa.text()), Altitude(float(self.parametersPanel.txtAltitudeFt.text()), AltitudeUnits.FT)).Knots, 4))) self.flag = 0 if self.flag==0: self.flag=2; if self.flag==1: self.flag=0; if self.flag==2: try: self.parametersPanel.txtAltitudeM.setText(str(round(Unit.ConvertFeetToMeter(float(self.parametersPanel.txtAltitudeFt.text())), 4))) except: self.parametersPanel.txtAltitudeM.setText("0.0")
def changeCategory(self): if self.parametersPanel.cmbAircraftCategory.currentIndex() == AircraftSpeedCategory.A: self.parametersPanel.txtIas.setText(str(Speed.smethod_0(Speed(150), float(self.parametersPanel.txtIsa.text()), Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)).Knots)) return elif self.parametersPanel.cmbAircraftCategory.currentIndex() == AircraftSpeedCategory.B: self.parametersPanel.txtIas.setText(str(Speed.smethod_0(Speed(180), float(self.parametersPanel.txtIsa.text()), Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)).Knots)) return elif self.parametersPanel.cmbAircraftCategory.currentIndex() == AircraftSpeedCategory.C: self.parametersPanel.txtIas.setText(str(Speed.smethod_0(Speed(240), float(self.parametersPanel.txtIsa.text()), Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)).Knots)) return elif self.parametersPanel.cmbAircraftCategory.currentIndex() == AircraftSpeedCategory.D: self.parametersPanel.txtIas.setText(str(Speed.smethod_0(Speed(250), float(self.parametersPanel.txtIsa.text()), Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)).Knots)) return elif self.parametersPanel.cmbAircraftCategory.currentIndex() == AircraftSpeedCategory.E: self.parametersPanel.txtIas.setText(str(Speed.smethod_0(Speed(250), float(self.parametersPanel.txtIsa.text()), Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)).Knots)) return elif self.parametersPanel.cmbAircraftCategory.currentIndex() == AircraftSpeedCategory.H: self.parametersPanel.txtIas.setText(str(Speed.smethod_0(Speed(70), float(self.parametersPanel.txtIsa.text()), Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)).Knots)) return
def method_36_Construct(self, bool_0): polylines = [] point3d5 = self.parametersPanel.pnlWaypoint.Point3d value = float(self.parametersPanel.txtTrack.Value) value1 = float(self.parametersPanel.txtRnpValue.text()) speed = Speed(float(self.parametersPanel.txtIas.text())) altitude = Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT) num1 = float(self.parametersPanel.txtIsa.text()) value2 = float(self.parametersPanel.txtTime.text()) speed1 = Speed(float(self.parametersPanel.pnlWind.speedBox.text())) num = 15 if (altitude.Feet >= 24500) else 23 speed2 = Speed.smethod_0(speed, num1, altitude) metresPerSecond = value2 * 60 * speed2.MetresPerSecond num2 = math.pow(speed2.Knots + speed1.Knots, 2) / ( 34313 * math.tan(Unit.ConvertDegToRad(num))) * 1852 num3 = value1 * 1852 num4 = num2 * (1 - math.sin(Unit.ConvertDegToRad(20))) / ( 2 * math.cos(Unit.ConvertDegToRad(20))) num5 = value1 * 1852 + 3704 if (num5 < 9260): num5 = 9260 point3d4 = MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(value + 90), num2 / 2) if (self.parametersPanel.cmbOrientation.currentText() != OrientationType.Left) else MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(value - 90), num2 / 2) point3d6 = MathHelper.distanceBearingPoint(point3d4, Unit.ConvertDegToRad(value), num4) point3d7 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value + 180), metresPerSecond) num6 = num2 / 2 + 1.414 * num3 num7 = num2 / 2 + num3 point3d8 = MathHelper.distanceBearingPoint(point3d6, Unit.ConvertDegToRad(value), num6) point3d9 = MathHelper.distanceBearingPoint( point3d6, Unit.ConvertDegToRad(value + 90) - math.acos(num7 / num6), num6) point3d10 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 90) + math.acos(num7 / num6), num6) point3d11 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 180), num6) point3d12 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value - 90) - math.acos(num7 / num6), num6) point3d13 = MathHelper.distanceBearingPoint( point3d6, Unit.ConvertDegToRad(value - 90) + math.acos(num7 / num6), num6) point3d = MathHelper.getIntersectionPoint( point3d9, MathHelper.distanceBearingPoint( point3d9, MathHelper.getBearing(point3d6, point3d9) - Unit.ConvertDegToRad(90), 100), point3d8, MathHelper.distanceBearingPoint(point3d8, Unit.ConvertDegToRad(value + 90), 100)) point3d1 = MathHelper.getIntersectionPoint( point3d10, MathHelper.distanceBearingPoint( point3d10, MathHelper.getBearing(point3d7, point3d10) + Unit.ConvertDegToRad(90), 100), point3d11, MathHelper.distanceBearingPoint(point3d11, Unit.ConvertDegToRad(value + 90), 100)) point3d2 = MathHelper.getIntersectionPoint( point3d12, MathHelper.distanceBearingPoint( point3d12, MathHelper.getBearing(point3d7, point3d12) - Unit.ConvertDegToRad(90), 100), point3d11, MathHelper.distanceBearingPoint(point3d11, Unit.ConvertDegToRad(value - 90), 100)) point3d3 = MathHelper.getIntersectionPoint( point3d13, MathHelper.distanceBearingPoint( point3d13, MathHelper.getBearing(point3d6, point3d13) + Unit.ConvertDegToRad(90), 100), point3d8, MathHelper.distanceBearingPoint(point3d8, Unit.ConvertDegToRad(value - 90), 100)) polylines1 = [] polylineArea = None if (bool_0): num8 = num2 / 2 point3d14 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value + 90), num8) point3d15 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 90), num8) point3d16 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value - 90), num8) point3d17 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value - 90), num8) point3dArray = [point3d14, point3d15, point3d16, point3d17] polylineArea = PolylineArea(point3dArray) polylineArea.method_19( 1, -1 ) #MathHelper.smethod_57(TurnDirection.Right, point3d15, point3d16, point3d7)) polylineArea.method_19( 3, -1 ) #MathHelper.smethod_57(TurnDirection.Right, point3d17, point3d14, point3d4)) polylines1.append(polylineArea) point3dArray1 = [point3d9, point3d10, point3d12, point3d13] polylineArea1 = PolylineArea(point3dArray1) # for point3d0 in point3dArray1: # polyline1.Add(point3d0) polylineArea1.method_19( 1, MathHelper.smethod_57(TurnDirection.Right, point3d10, point3d12, point3d7)) polylineArea1.method_19( 3, MathHelper.smethod_57(TurnDirection.Right, point3d13, point3d9, point3d6)) # polylineArea1.set_closed(True) # polyline1.SetDatabaseDefaults(); polylines1.append(polylineArea1) polylineAreaLineList = [ PolylineArea( [polylineArea1[0].Position, polylineArea1[1].Position]), PolylineArea( [polylineArea1[2].Position, polylineArea1[3].Position]) ] polylineAreaArc0 = PolylineArea() polylineAreaArc0.Add(polylineArea1[1]) polylineAreaArc0.Add(PolylineAreaPoint(polylineArea1[2].Position)) polylineAreaArc1 = PolylineArea() polylineAreaArc1.Add(polylineArea1[3]) polylineAreaArc1.Add(PolylineAreaPoint(polylineArea1[0].Position)) polylineAreaArcList = [polylineAreaArc0, polylineAreaArc1] num9 = num5 / 5 polylineAreaArcListResult = [] polylineAreaLineListResult = [] for i in range(1, 6): polylineAreaL0 = polylineAreaLineList[0].getOffsetCurveNo( num9 * i, 4) polylineAreaLineListResult.append(polylineAreaL0) polylineAreaA0 = polylineAreaArcList[0].getOffsetCurveNo( num9 * i, 4) polylineAreaT = PolylineArea() polylineAreaT.Add( PolylineAreaPoint( polylineAreaA0[0].Position, MathHelper.smethod_60( polylineAreaA0[0].Position, polylineAreaA0[int(len(polylineAreaA0) / 2)].Position, polylineAreaA0[len(polylineAreaA0) - 1].Position))) polylineAreaT.Add( PolylineAreaPoint(polylineAreaA0[len(polylineAreaA0) - 1].Position)) polylineAreaArcListResult.append(polylineAreaT) polylineAreaL1 = polylineAreaLineList[1].getOffsetCurveNo( num9 * i, 4) polylineAreaLineListResult.append(polylineAreaL1) polylineAreaA1 = polylineAreaArcList[1].getOffsetCurveNo( num9 * i, 4) polylineAreaT = PolylineArea() polylineAreaT.Add( PolylineAreaPoint( polylineAreaA1[0].Position, MathHelper.smethod_60( polylineAreaA1[0].Position, polylineAreaA1[int(len(polylineAreaA1) / 2)].Position, polylineAreaA1[len(polylineAreaA1) - 1].Position))) polylineAreaT.Add( PolylineAreaPoint(polylineAreaA1[len(polylineAreaA1) - 1].Position)) polylineAreaArcListResult.append(polylineAreaT) polylineAreaLineListResult.append( PolylineArea([ polylineAreaL0[len(polylineAreaL0) - 1].Position, polylineAreaA0[0].Position ])) polylineAreaLineListResult.append( PolylineArea([ polylineAreaA0[len(polylineAreaA0) - 1].Position, polylineAreaL1[0].Position ])) polylineAreaLineListResult.append( PolylineArea([ polylineAreaL1[len(polylineAreaL1) - 1].Position, polylineAreaA1[0].Position ])) polylineAreaLineListResult.append( PolylineArea([ polylineAreaA1[len(polylineAreaA1) - 1].Position, polylineAreaL0[0].Position ])) return polylineAreaLineListResult, polylineAreaArcListResult, polylineArea
def method_36(self, bool_0): # Point3d point3d; # Point3d point3d1; # Point3d point3d2; # Point3d point3d3; # Point3d point3d4; # double num; polylines = [] point3d5 = self.parametersPanel.pnlWaypoint.Point3d value = float(self.parametersPanel.txtTrack.text()) value1 = float(self.parametersPanel.txtRnpValue.text()) speed = Speed(float(self.parametersPanel.txtIas.text())) altitude = Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT) num1 = float(self.parametersPanel.txtIsa.text()) value2 = float(self.parametersPanel.txtTime.text()) speed1 = Speed(float(self.parametersPanel.pnlWind.speedBox.text())) num = 15 if (altitude.Feet >= 24500) else 23 speed2 = Speed.smethod_0(speed, num1, altitude) metresPerSecond = value2 * 60 * speed2.MetresPerSecond num2 = math.pow(speed2.Knots + speed1.Knots, 2) / ( 34313 * math.tan(Unit.ConvertDegToRad(num))) * 1852 num3 = value1 * 1852 num4 = num2 * (1 - math.sin(Unit.ConvertDegToRad(20))) / ( 2 * math.cos(Unit.ConvertDegToRad(20))) num5 = value1 * 1852 + 3704 if (num5 < 9260): num5 = 9260 point3d4 = MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(value + 90), num2 / 2) if (self.parametersPanel.cmbOrientation.currentText() != OrientationType.Left) else MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(value - 90), num2 / 2) point3d6 = MathHelper.distanceBearingPoint(point3d4, Unit.ConvertDegToRad(value), num4) point3d7 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value + 180), metresPerSecond) num6 = num2 / 2 + 1.414 * num3 num7 = num2 / 2 + num3 point3d8 = MathHelper.distanceBearingPoint(point3d6, Unit.ConvertDegToRad(value), num6) point3d9 = MathHelper.distanceBearingPoint( point3d6, Unit.ConvertDegToRad(value + 90) - math.acos(num7 / num6), num6) point3d10 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 90) + math.acos(num7 / num6), num6) point3d11 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 180), num6) point3d12 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value - 90) - math.acos(num7 / num6), num6) point3d13 = MathHelper.distanceBearingPoint( point3d6, Unit.ConvertDegToRad(value - 90) + math.acos(num7 / num6), num6) point3d = MathHelper.getIntersectionPoint( point3d9, MathHelper.distanceBearingPoint( point3d9, MathHelper.getBearing(point3d6, point3d9) - Unit.ConvertDegToRad(90), 100), point3d8, MathHelper.distanceBearingPoint(point3d8, Unit.ConvertDegToRad(value + 90), 100)) point3d1 = MathHelper.getIntersectionPoint( point3d10, MathHelper.distanceBearingPoint( point3d10, MathHelper.getBearing(point3d7, point3d10) + Unit.ConvertDegToRad(90), 100), point3d11, MathHelper.distanceBearingPoint(point3d11, Unit.ConvertDegToRad(value + 90), 100)) point3d2 = MathHelper.getIntersectionPoint( point3d12, MathHelper.distanceBearingPoint( point3d12, MathHelper.getBearing(point3d7, point3d12) - Unit.ConvertDegToRad(90), 100), point3d11, MathHelper.distanceBearingPoint(point3d11, Unit.ConvertDegToRad(value - 90), 100)) point3d3 = MathHelper.getIntersectionPoint( point3d13, MathHelper.distanceBearingPoint( point3d13, MathHelper.getBearing(point3d6, point3d13) + Unit.ConvertDegToRad(90), 100), point3d8, MathHelper.distanceBearingPoint(point3d8, Unit.ConvertDegToRad(value - 90), 100)) polylines1 = [] if (bool_0): num8 = num2 / 2 point3d14 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value + 90), num8) point3d15 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 90), num8) point3d16 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value - 90), num8) point3d17 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value - 90), num8) point3dArray = [point3d14, point3d15, point3d16, point3d17] polylineArea = PolylineArea(point3dArray) # for point3d0 in point3dArray: # polyline.Add(point3d0) polylineArea.method_19( 1, MathHelper.smethod_57(TurnDirection.Right, point3d15, point3d16, point3d7)) polylineArea.method_19( 3, MathHelper.smethod_57(TurnDirection.Right, point3d17, point3d14, point3d4)) # polyline.set_closed(True) # polyline.SetDatabaseDefaults() polylines1.append(polylineArea) point3dArray1 = [point3d9, point3d10, point3d12, point3d13] polylineArea1 = PolylineArea(point3dArray1) # for point3d0 in point3dArray1: # polyline1.Add(point3d0) polylineArea1.method_19( 1, MathHelper.smethod_57(TurnDirection.Right, point3d10, point3d12, point3d7)) polylineArea1.method_19( 3, MathHelper.smethod_57(TurnDirection.Right, point3d13, point3d9, point3d6)) # polylineArea1.set_closed(True) # polyline1.SetDatabaseDefaults(); polylines1.append(polylineArea1) num9 = num5 / 5 for i in range(1, 6): polylineArea0 = polylineArea1.getOffsetCurve(num9 * i) polylines1.append(polylineArea0) # try: # OffsetGapType offsetType = AcadHelper.OffsetType; # try # { # AcadHelper.OffsetType = OffsetGapType.Extend; # num9 = num5 / 5 # for i in range(4): # n = i + 1 # point3dCollection = polyline1.GetOffsetCurves(5) # polyline0 = Polyline() # for point3d0 in point3dCollection: # polyline0.Add(point3d0) # polylines1.append(polyline0) # polylines = polylines1 # } # finally # { # AcadHelper.OffsetType = offsetType; # } # } # catch # { # foreach (Polyline polyline2 in polylines1) # { # if (polyline2 == null) # { # continue; # } # polyline2.Dispose(); # } # throw; # } return polylines1
def btnPDTCheck_Click(self): pdtResultStr = "" K = round( 171233 * math.pow( 288 + float(self.parametersPanel.txtIsa.text()) - 0.00198 * Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT).Feet, 0.5) / (math.pow( 288 - 0.00198 * Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT).Feet, 2.628)), 4) pdtResultStr = "1. K = \t" + str(K) + "\n" V = Speed.smethod_0( Speed(float(self.parametersPanel.txtIas.text())), float(self.parametersPanel.txtIsa.text()), Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)).Knots pdtResultStr += "2. V = \t" + str(V) + "kt\n" v = V / 3600 pdtResultStr += "3. v = \t" + str(v) + "NM/s\n" R = 509.26 / V pdtResultStr += "4. R = \t" + str(R) + unicode("°/s", "utf-8") + "\n" r = V / (62.83 * R) pdtResultStr += "5. r = \t" + str(r) + "NM\n" h = float(self.parametersPanel.txtAltitude.text()) / 1000 pdtResultStr += "6. h = \t" + str(h) + "\n" w = 2 * h + 47 pdtResultStr += "7. w = \t" + str(w) + "kt\n" wd = w / 3600 pdtResultStr += "8. w' = \t" + str(wd) + "NM/s\n" E45 = 45 * wd / R pdtResultStr += "9. E45' = \t" + str(E45) + "NM\n" t = 60 * float(self.parametersPanel.txtTime.text()) pdtResultStr += "10. t = \t" + str(t) + "s\n" L = v * t pdtResultStr += "11. L = \t" + str(L) + "NM\n" ab = 5 * v pdtResultStr += "12. ab = \t" + str(ab) + "NM\n" ac = 11 * v pdtResultStr += "13. ac = \t" + str(ac) + "NM\n" gi1 = (t - 5) * v pdtResultStr += "14. gi1 = gi3 = \t" + str(gi1) + "NM\n" gi2 = (t + 21) * v pdtResultStr += "15. gi2 = gi4 = \t" + str(gi2) + "NM\n" Wb = 5 * wd pdtResultStr += "16. Wb = \t" + str(Wb) + "NM\n" Wc = 11 * wd pdtResultStr += "17. Wc = \t" + str(Wc) + "NM\n" Wd = Wc + E45 pdtResultStr += "18. Wd = \t" + str(Wd) + "NM\n" We = Wc + 2 * E45 pdtResultStr += "19. We = \t" + str(We) + "NM\n" Wf = Wc + 3 * E45 pdtResultStr += "20. Wf = \t" + str(Wf) + "NM\n" Wg = Wc + 4 * E45 pdtResultStr += "21. Wg = \t" + str(Wg) + "NM\n" Wh = Wb + 4 * E45 pdtResultStr += "22. Wh = \t" + str(Wh) + "NM\n" Wo = Wb + 5 * E45 pdtResultStr += "23. Wo = \t" + str(Wo) + "NM\n" Wp = Wb + 6 * E45 pdtResultStr += "24. Wp = \t" + str(Wp) + "NM\n" Wi1 = (t + 6) * wd + 4 * E45 pdtResultStr += "25. Wi1 = Wi3 = \t" + str(Wi1) + "NM\n" Wi2 = Wi1 + 14 * wd pdtResultStr += "26. Wi2 = Wi4 = \t" + str(Wi2) + "NM\n" Wj = Wi2 + E45 pdtResultStr += "27. Wj = \t" + str(Wj) + "NM\n" Wk = Wi2 + 2 * E45 pdtResultStr += "28. Wk = Wi = \t" + str(Wk) + "NM\n" Wm = Wi2 + 3 * E45 pdtResultStr += "29. Wm = \t" + str(Wm) + "NM\n" Wn3 = Wi1 + 4 * E45 pdtResultStr += "30. Wn3 = \t" + str(Wn3) + "NM\n" Wn4 = Wi2 + 4 * E45 pdtResultStr += "31. Wn4 = \t" + str(Wn4) + "NM\n" XE = 2 * r + (t + 15) * v + (t + 26 + 195 / R) * wd pdtResultStr += "32. XE = \t" + str(XE) + "NM\n" YE = 11 * v * math.cos(math.pi * 20 / 180) + r * ( 1 + math.sin(math.pi * 20 / 180)) + (t + 15) * v * math.tan( math.pi * 5 / 180) + (t + 26 + 125 / R) * wd pdtResultStr += "33. YE = \t" + str(YE) + "NM" QMessageBox.warning(self, "PDT Check", pdtResultStr)
def initParametersPan(self): ui = Ui_HoldingRnpGeneral() self.parametersPanel = ui FlightPlanBaseDlg.initParametersPan(self) self.parametersPanel.txtTas.setEnabled(False) self.parametersPanel.pnlWaypoint = PositionPanel( self.parametersPanel.holding) self.parametersPanel.pnlWaypoint.groupBox.setTitle("Waypoint Position") self.parametersPanel.pnlWaypoint.hideframe_Altitude() self.parametersPanel.pnlWaypoint.setObjectName("positionWaypoint") self.parametersPanel.pnlWaypoint.btnCalculater.hide() self.parametersPanel.verticalLayout.insertWidget( 0, self.parametersPanel.pnlWaypoint) self.parametersPanel.pnlWind = WindPanel( self.parametersPanel.grbParameters) self.parametersPanel.vLayout_grbParameters.insertWidget( 5, self.parametersPanel.pnlWind) self.parametersPanel.pnlWind.setAltitude( Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)) # self.resize(460,600) self.parametersPanel.cmbConstruction.addItems(["2D", "3D"]) self.parametersPanel.cmbAircraftCategory_2.addItems( ["A", "B", "C", "D", "E", "H", "Custom"]) self.parametersPanel.cmbOrientation.addItems( [OrientationType.Left, OrientationType.Right]) # self.parametersPanel.cmbOrientation.setCurrentIndex(1) # # '''Event Handlers Connect''' # self.parametersPanel.txtAltitude.textChanged.connect(self.method_31) # self.parametersPanel.cmbTurnLimitation.currentIndexChanged.connect(self.method_28) # self.parametersPanel.btnCaptureTrack.clicked.connect(self.captureBearing) self.parametersPanel.cmbAircraftCategory_2.currentIndexChanged.connect( self.changeCategory) self.parametersPanel.cmbAircraftCategory_2.setCurrentIndex(3) self.frame_8_1 = QFrame(self) sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) # sizePolicy.setHeightForWidth(self.frame_8.sizePolicy().hasHeightForWidth()) self.frame_8_1.setSizePolicy(sizePolicy) self.frame_8_1.setFrameShape(QFrame.StyledPanel) self.frame_8_1.setFrameShadow(QFrame.Raised) self.frame_8_1.setObjectName("frame_8") self.horizontalLayout_10_1 = QHBoxLayout(self.frame_8_1) self.horizontalLayout_10_1.setAlignment(Qt.AlignHCenter) self.horizontalLayout_10_1.setSpacing(0) self.horizontalLayout_10_1.setMargin(0) self.horizontalLayout_10_1.setObjectName("horizontalLayout_10") self.label_2_1 = QLabel(self.frame_8_1) self.label_2_1.setMinimumSize(QSize(140, 16777215)) # self.label_2_1.setFixedWidth(100) self.label_2_1.setText("MOCmultiplier") font = QFont() font.setFamily("Arial") font.setBold(False) font.setWeight(50) self.label_2_1.setFont(font) self.label_2_1.setObjectName("label_2_1") self.horizontalLayout_10_1.addWidget(self.label_2_1) self.parametersPanel.mocSpinBox = QSpinBox(self.frame_8_1) self.parametersPanel.mocSpinBox.setFont(font) self.parametersPanel.mocSpinBox.setObjectName("mocSpinBox") sizePolicy = QSizePolicy(QSizePolicy.MinimumExpanding, QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.parametersPanel.mocSpinBox.sizePolicy().hasHeightForWidth()) self.parametersPanel.mocSpinBox.setSizePolicy(sizePolicy) self.parametersPanel.mocSpinBox.setMinimum(1) self.parametersPanel.mocSpinBox.setMinimumSize(QSize(140, 16777215)) # self.parametersPanel.mocSpinBox.setFixedWidth(100) self.horizontalLayout_10_1.addWidget(self.parametersPanel.mocSpinBox) # self.verticalLayout_9.addWidget(self.frame_8_1) self.parametersPanel.vLayout_grbParameters.addWidget(self.frame_8_1) self.parametersPanel.btnIasHelp.clicked.connect(self.iasHelpShow) self.parametersPanel.frame_ConstructionType_2.hide() self.parametersPanel.txtIas.textChanged.connect(self.iasChanged) self.parametersPanel.txtIsa.textChanged.connect(self.isaChanged) # self.parametersPanel.txtIsa.textChanged.connect(self.isaChanged) self.parametersPanel.txtAltitudeM.textChanged.connect( self.txtAltitudeMChanged) self.parametersPanel.txtAltitude.textChanged.connect( self.txtAltitudeFtChanged) self.flag = 0 if self.flag == 0: self.flag = 2 if self.flag == 1: self.flag = 0 if self.flag == 2: try: self.parametersPanel.txtAltitudeM.setText( str( round( Unit.ConvertFeetToMeter( float( self.parametersPanel.txtAltitude.text())), 4))) except: self.parametersPanel.txtAltitudeM.setText("0.0") self.parametersPanel.txtMoc.textChanged.connect(self.txtMocMChanged) self.parametersPanel.txtMocFt.textChanged.connect(self.txtMocFtChanged) self.flag1 = 0 if self.flag1 == 0: self.flag1 = 1 if self.flag1 == 2: self.flag1 = 0 if self.flag1 == 1: try: self.parametersPanel.txtMocFt.setText( str( round( Unit.ConvertMeterToFeet( float(self.parametersPanel.txtMoc.text())), 4))) except: self.parametersPanel.txtMocFt.setText("0.0") self.parametersPanel.txtTas.setText( str( round( Speed.smethod_0( Speed(float(self.parametersPanel.txtIas.text())), float(self.parametersPanel.txtIsa.text()), Altitude( float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT)).Knots, 4)))
def method_29(self): speed = None speed1 = None num = None num1 = None # Validator validator = new Validator(ValidationFlags.None); flag = True flag1 = True # self.errorProvider.method_1(); # if (!self.cmbType.method_1(validator)) # { # flag = false; # } # if (!self.pnlAltitude.method_1(validator)) # { # flag = false; # } # if (!self.pnlISA.method_2(validator)) # { # flag = false; # } # validator.Flags = ValidationFlags.Positive; # if (!self.pnlIAS.method_1(validator)) # { # flag = false; # } # validator.Flags = ValidationFlags.AllowEmpty | ValidationFlags.NonNegative; # if (!self.pnlWind.method_1(validator)) # { # flag1 = false; # } # if (!self.pnlTime.method_1(validator)) # { # flag1 = false; # } if (flag1): if self.parametersPanel.pnlWind.Value == None: flag1 = False else: try: time = float(self.parametersPanel.txtTime.text()) flag1 = True except: flag1 = False # flag1 = False if(self.pnlWind.Value.IsNaN) else not double.IsNaN(self.pnlTime.Value)); # } # self.panelEx.SuspendLayout(); # self.gbResults.SuspendLayout(); # try: tAS = Captions.TAS eST = Captions.EST pILOTREACTION = Captions.PILOT_REACTION str0 = Captions.c str1 = "" self.est = Distance.NaN() self.rea = Distance.NaN() self.c = Distance.NaN() self.x = Distance.NaN() self.d = Distance.NaN() self.custom = Distance.NaN() if (not flag): self.parametersPanel.txtTAS.setText(Captions.NOT_APPLICABLE) self.parametersPanel.txtEST.setText(Captions.NOT_APPLICABLE) self.parametersPanel.txtREA.setText(Captions.NOT_APPLICABLE) self.parametersPanel.txtC.setText(Captions.NOT_APPLICABLE) self.parametersPanel.txtX.setText(Captions.NOT_APPLICABLE) self.parametersPanel.txtD.setText(Captions.NOT_APPLICABLE) self.parametersPanel.txtNonStandardResult.setText( Captions.NOT_APPLICABLE) else: value = Speed(float(self.parametersPanel.txtIAS.text()), SpeedUnits.KTS) altitude = Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT) value1 = float(self.parametersPanel.txtISA.text()) selectedIndex = self.parametersPanel.cmbType.currentText() if selectedIndex == IasTasSegmentType.Departure or selectedIndex == IasTasSegmentType.MissedApproach: speed = Speed(30) num = 3 speed1 = Speed(30) num1 = 3 elif selectedIndex == IasTasSegmentType.Enroute: speed = Speed.smethod_1(altitude) num = 5 speed1 = Speed.smethod_1(altitude) num1 = 10 elif selectedIndex == IasTasSegmentType.Holding or selectedIndex == IasTasSegmentType.InitialRR: speed = Speed.smethod_1(altitude) num = 5 speed1 = Speed.smethod_1(altitude) num1 = 6 elif selectedIndex == IasTasSegmentType.InitialDR or selectedIndex == IasTasSegmentType.IafIfFaf: speed = Speed(30) num = 5 speed1 = Speed(30) num1 = 6 else: pass # throw new Exception(Messages.ERR_UNSUPPORTED_PROCEDURE_SEGMENT_TYPE); if (selectedIndex == IasTasSegmentType.Departure): m = value n = (value / 10) value = m + n tAS = tAS + " (" + Captions.IAS + "+ 10%)" speed2 = Speed.smethod_0(value, value1, altitude) self.est = self.method_27(speed2, speed, num) self.rea = self.method_27(speed2, speed1, num1) self.c = self.est + self.rea self.x = self.method_27(speed2, Speed(10), 15) self.d = self.method_27(speed2, Speed(10), 3) eST = eST + " (%i kts / %i s)" % (speed.Knots, num) pILOTREACTION = pILOTREACTION + " (%i kts / %i s)" % (speed1.Knots, num1) str0 = str0 + " (%i kts / %i + %i s)" % (speed.Knots, num, num1) self.parametersPanel.label_10.setText(tAS) self.parametersPanel.txtTAS.setText(str(speed2.Knots) + "kts") self.parametersPanel.label_73.setText(eST) self.parametersPanel.txtEST.setText(str(self.est.Metres) + "m") self.parametersPanel.label_74.setText(pILOTREACTION) self.parametersPanel.txtREA.setText(str(self.rea.Metres) + "m") self.parametersPanel.label_75.setText(str0) self.parametersPanel.txtC.setText(str(self.c.Metres) + "m") self.parametersPanel.txtX.setText(str(self.x.Metres) + "m") self.parametersPanel.txtD.setText(str(self.d.Metres) + "m") if (not flag1): self.parametersPanel.txtNonStandardResult.setText( Captions.NOT_APPLICABLE) else: self.custom = self.method_27( speed2, self.parametersPanel.pnlWind.Value, float(self.parametersPanel.txtTime.text())) str2 = str(self.parametersPanel.pnlWind.Value.Knots) + "kts" value2 = float(self.parametersPanel.txtTime.text()) str1 = "%s / %i s" % (str2, value2) self.parametersPanel.txtNonStandardResult.setText( str(self.custom.Metres) + "m") self.parametersPanel.label_10.setText(tAS) self.parametersPanel.label_73.setText(eST) self.parametersPanel.label_74.setText(pILOTREACTION) self.parametersPanel.label_75.setText(str0) self.parametersPanel.label_11.setText(str1) # self.method_28(self.pnlEST); # self.method_28(self.pnlREA); # self.method_28(self.pnlC); # self.method_28(self.pnlX); # self.method_28(self.pnlD); # self.method_28(self.pnlNonStandardResult); self.parametersPanel.frame_X.setVisible( self.parametersPanel.cmbType.currentIndex() == 6) self.parametersPanel.frame_D.setVisible( self.parametersPanel.cmbType.currentIndex() == 6) self.parametersPanel.gbNonStandardResult.setVisible( self.parametersPanel.txtNonStandardResult.text() != Captions.NOT_APPLICABLE)
def __init__(self, point3d_0, double_0, speed_0, altitude_0, speed_1, double_1, double_2, orientationType_0): ''' Constructor ''' # double num; # double num1; # double num2; # double num3; # double num4; # Point3d point3d; # Point3d point3d1; # Point3d point3d2; # Point3d point3d3; # Point3d point3d4; # Point3d point3d5; # Point3d point3d6; # Point3d point3d7; # Point3d point3d8; # Point3d point3d9; # Point3d point3d10; # Point3d point3d11; # Point3d point3d12; # Point3d point3d13; # Point3d point3d14; # Point3d point3d15; # Point3d point3d16; # Point3d point3d17; # Point3d point3d18; # Point3d point3d19; # Point3d point3d20; # Point3d point3d21; # Point3d point3d22; # Point3d point3d23; # Point3d point3d24; # Point3d point3d25; # Point3d point3d26; # Point3d point3d27; # Point3d point3d28; # Point3d point3d29; # Point3d point3d30; # Point3d point3d31; # Point3d point3d32; # Point3d point3d33; # Point3d point3d34; # Point3d point3d35; point3d_0 = point3d_0.smethod_167(0) self.ptBase = point3d_0 self.trackDeg = MathHelper.smethod_3(double_0) self.trackRad = MathHelper.smethod_4(Unit.ConvertDegToRad(double_0)) self.orientation = orientationType_0 self.tas = Speed.smethod_0(speed_0, double_1, altitude_0) self.R = min([943.27 / self.tas.KilometresPerHour, 3]) self.radius = Distance( Unit.ConvertKMToMeters(self.tas.KilometresPerHour / (62.8318530717959 * self.R))) metresPerSecond = self.tas.MetresPerSecond metres = self.radius.Metres kilometresPerHour = speed_1.KilometresPerHour metresPerSecond1 = speed_1.MetresPerSecond r = 45 * metresPerSecond1 / self.R double2 = double_2 * 60 self.ds = Distance(metresPerSecond * double2) self.wd = Distance( math.sqrt(self.ds.Metres * self.ds.Metres + 4 * metres * metres)) num5 = 5 * metresPerSecond num6 = 11 * metresPerSecond num7 = (double2 - 5) * metresPerSecond num8 = (double2 - 5) * metresPerSecond num9 = (double2 + 21) * metresPerSecond num10 = (double2 + 21) * metresPerSecond num11 = 5 * metresPerSecond1 num12 = 11 * metresPerSecond1 num13 = num12 + r num14 = num12 + 2 * r num15 = num12 + 3 * r num16 = num12 + 4 * r num17 = num11 + 5 * r num18 = num11 + 6 * r num19 = (double2 + 6) * metresPerSecond1 + 4 * r num20 = (double2 + 6) * metresPerSecond1 + 4 * r num21 = num19 + 14 * metresPerSecond1 num22 = num19 + 14 * metresPerSecond1 num23 = num21 + r num24 = num21 + 2 * r num25 = num21 + 2 * r num26 = num21 + 3 * r num27 = num19 + 4 * r num28 = num21 + 4 * r r1 = 2 * metres + (double2 + 15) * metresPerSecond + ( double2 + 26 + 195 / self.R) * metresPerSecond1 num29 = 11 * metresPerSecond * math.cos(Unit.ConvertDegToRad( 20)) + metres * (1 + math.sin(Unit.ConvertDegToRad(20))) + ( double2 + 15) * metresPerSecond * math.tan( Unit.ConvertDegToRad(5)) + ( double2 + 26 + 125 / self.R) * metresPerSecond1 self.ias = speed_0 self.wind = speed_1 self.isa = double_1 self.altitude = altitude_0 self.time = double_2 num30 = 1 if (orientationType_0 == OrientationType.Right) else -1 turnDirection = TurnDirection.Right if ( orientationType_0 == OrientationType.Right) else TurnDirection.Left turnDirection1 = TurnDirection.Left if ( orientationType_0 == OrientationType.Right) else TurnDirection.Right point3d36 = MathHelper.distanceBearingPoint(point3d_0, 0, 0) point3d37 = MathHelper.distanceBearingPoint( point3d36, Unit.ConvertDegToRad(double_0), num5) point3d38 = MathHelper.distanceBearingPoint( point3d36, Unit.ConvertDegToRad(double_0), num6) point3d39 = MathHelper.distanceBearingPoint( point3d38, Unit.ConvertDegToRad(double_0 + num30 * 90), metres) point3d40 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + num30 * -45), metres) point3d41 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0), metres) point3d42 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + num30 * 45), metres) point3d43 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + num30 * 90), metres) point3d39 = MathHelper.distanceBearingPoint( point3d37, Unit.ConvertDegToRad(double_0 + num30 * 90), metres) MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + num30 * 90), metres) point3d44 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + num30 * 135), metres) point3d45 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + 180), metres) point3d46 = MathHelper.distanceBearingPoint( point3d43, Unit.ConvertDegToRad(double_0 + 180 - num30 * 5), num7) point3d47 = MathHelper.distanceBearingPoint( point3d43, Unit.ConvertDegToRad(double_0 + 180 - num30 * 5), num9) point3d48 = MathHelper.distanceBearingPoint( point3d43, Unit.ConvertDegToRad(double_0 + 180 + num30 * 5), num8) point3d49 = MathHelper.distanceBearingPoint( point3d43, Unit.ConvertDegToRad(double_0 + 180 + num30 * 5), num10) point3d39 = MathHelper.distanceBearingPoint( point3d47, Unit.ConvertDegToRad(double_0 - num30 * 90), metres) point3d50 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + 180 - num30 * 45), metres) point3d51 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + 180), metres) MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + num30 * 90), metres) point3d39 = MathHelper.distanceBearingPoint( point3d49, Unit.ConvertDegToRad(double_0 - num30 * 90), metres) point3d52 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + 180), metres) point3d53 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 + 180 + num30 * 45), metres) point3d54 = MathHelper.distanceBearingPoint( point3d39, Unit.ConvertDegToRad(double_0 - num30 * 90), metres) point3d55 = MathHelper.distanceBearingPoint( point3d48, Unit.ConvertDegToRad(double_0 - num30 * 90), metres * 2) point3d, num = MathHelper.smethod_193(point3d38, num12, point3d40, num13, point3d41, num14, False) point3d1, num1 = MathHelper.smethod_193(point3d41, num14, point3d42, num15, point3d43, num16, False) point3d2, num2 = MathHelper.smethod_193(point3d43, num16, point3d44, num17, point3d45, num18, False) point3d3, num3 = MathHelper.smethod_193(point3d47, num21, point3d50, num23, point3d51, num24, False) point3d4, num4 = MathHelper.smethod_193(point3d52, num25, point3d53, num26, point3d54, num28, False) point3d56 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(double_0 - num30 * 90), num4) point3d57 = MathHelper.distanceBearingPoint( point3d56, Unit.ConvertDegToRad(double_0 + num30 * 90), num29) point3d58 = MathHelper.distanceBearingPoint( point3d3, Unit.ConvertDegToRad(double_0 + 180), num3) point3d58 = MathHelper.getIntersectionPoint( point3d_0, MathHelper.distanceBearingPoint( point3d_0, Unit.ConvertDegToRad(double_0 + 180), 100), point3d58, MathHelper.distanceBearingPoint( point3d58, Unit.ConvertDegToRad(double_0 + 90), 100)) point3d59 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(double_0 + 180), num4) point3d59 = MathHelper.getIntersectionPoint( point3d_0, MathHelper.distanceBearingPoint( point3d_0, Unit.ConvertDegToRad(double_0 + 180), 100), point3d59, MathHelper.distanceBearingPoint( point3d59, Unit.ConvertDegToRad(double_0 + 90), 100)) point3d5 = MathHelper.distanceBearingPoint( point3d58, Unit.ConvertDegToRad(double_0), r1) if (MathHelper.calcDistance(point3d_0, point3d58) >= MathHelper.calcDistance(point3d_0, point3d59) ) else MathHelper.distanceBearingPoint( point3d59, Unit.ConvertDegToRad(double_0), r1) self.ptE = MathHelper.getIntersectionPoint( point3d5, MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(double_0 + 90), 100), point3d57, MathHelper.distanceBearingPoint(point3d57, Unit.ConvertDegToRad(double_0), 100)) self.nominal = PolylineArea() point3d56 = MathHelper.distanceBearingPoint( point3d_0, Unit.ConvertDegToRad(double_0 + num30 * 90), 2 * metres) point3d58 = MathHelper.distanceBearingPoint( point3d56, Unit.ConvertDegToRad(double_0 + 180), self.ds.Metres) point3d59 = MathHelper.distanceBearingPoint( point3d58, Unit.ConvertDegToRad(double_0 - num30 * 90), 2 * metres) self.nominal.Add( PolylineAreaPoint( point3d_0, MathHelper.smethod_59(Unit.ConvertDegToRad(double_0), point3d_0, point3d56))) self.nominal.method_1(point3d56) self.nominal.Add( PolylineAreaPoint( point3d58, MathHelper.smethod_59(Unit.ConvertDegToRad(double_0 + 180), point3d58, point3d59))) self.nominal.method_1(point3d59) self.nominal.method_1(point3d_0) self.wd = Distance(MathHelper.calcDistance(point3d_0, point3d58)) self.area = PolylineArea() point3dCollection = [] point3dCollection.append( MathHelper.distanceBearingPoint(point3d, Unit.ConvertDegToRad(double_0), num)) point3dCollection.append( MathHelper.distanceBearingPoint(point3d1, Unit.ConvertDegToRad(double_0), num1)) point3dCollection.append( MathHelper.distanceBearingPoint( point3d3, Unit.ConvertDegToRad(double_0 + num30 * 90), num3)) point3dCollection.append( MathHelper.distanceBearingPoint( point3d3, Unit.ConvertDegToRad(double_0 + 180), num3)) point3dCollection.append( MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(double_0 + 180), num4)) point3dCollection.append( MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(double_0 - num30 * 90), num4)) point3dCollection.append( MathHelper.distanceBearingPoint(point3d55, Unit.ConvertDegToRad(double_0), num27)) point3d7, point3d8 = MathHelper.smethod_91(point3d3, num3, point3d4, num4, turnDirection) point3d9, point3d10 = MathHelper.smethod_91(point3d4, num4, point3d55, num27, turnDirection) point3d11, point3d12 = MathHelper.smethod_91(point3d4, num4, point3d, num, turnDirection) point3d13, point3d14 = MathHelper.smethod_91(point3d4, num4, point3d1, num1, turnDirection) point3d15, point3d16 = MathHelper.smethod_91(point3d4, num4, point3d3, num3, turnDirection) point3d17, point3d18 = MathHelper.smethod_91(point3d55, num27, point3d, num, turnDirection) point3d19, point3d20 = MathHelper.smethod_91(point3d55, num27, point3d1, num1, turnDirection) point3d21, point3d22 = MathHelper.smethod_91(point3d55, num27, point3d3, num3, turnDirection) point3d23, point3d6 = MathHelper.smethod_91(point3d, num, point3d1, num1, turnDirection) point3d24, point3d25 = MathHelper.smethod_91(point3d1, num1, point3d46, num19, turnDirection) point3d26, point3d27 = MathHelper.smethod_91(point3d46, num19, point3d3, num3, turnDirection) point3d28, point3d29 = MathHelper.smethod_91(point3d43, num16, point3d48, num20, turnDirection1) point3d30, point3d31 = MathHelper.smethod_91(point3d48, num20, point3d49, num22, turnDirection1) if (num4 >= MathHelper.calcDistance(point3d4, point3d55) + num27): self.area.method_1(point3d7) self.area.method_3( point3d8, MathHelper.smethod_57(turnDirection, point3d8, point3d9, point3d4)) self.area.method_1(point3d9) if (num27 <= MathHelper.calcDistance(point3d55, point3d1) + num1): flag = False if (num27 < MathHelper.calcDistance(point3d55, point3d) + num): point3d39 = MathHelper.distanceBearingPoint( point3d18, MathHelper.getBearing(point3d17, point3d18) + 1.5707963267949 * num30, 100) flag = MathHelper.smethod_119( point3d23, point3d18, point3d39) if (turnDirection != TurnDirection.Right ) else MathHelper.smethod_115( point3d23, point3d18, point3d39) if (flag): self.area.Add( PolylineAreaPoint( point3d10, MathHelper.smethod_57(turnDirection, point3d10, point3d17, point3d55))) self.area.method_1(point3d17) self.area.method_3( point3d18, MathHelper.smethod_57(turnDirection, point3d18, point3d23, point3d)) self.area.method_3( point3d23, MathHelper.smethod_57(turnDirection, point3d23, point3d24, point3d1)) self.area.method_1(point3d24) else: self.area.Add( PolylineAreaPoint( point3d10, MathHelper.smethod_57(turnDirection, point3d10, point3d19, point3d55))) self.area.method_1(point3d19) self.area.Add( PolylineAreaPoint( point3d20, MathHelper.smethod_57(turnDirection, point3d20, point3d24, point3d1))) self.area.method_1(point3d24) self.area.method_3( point3d25, MathHelper.smethod_57(turnDirection, point3d25, point3d26, point3d46)) self.area.method_1(point3d26) self.area.method_3( point3d27, MathHelper.smethod_57(turnDirection, point3d27, point3d7, point3d3)) self.area.method_1(point3d7) else: self.area.method_3( point3d10, MathHelper.smethod_57(turnDirection, point3d10, point3d21, point3d55)) self.area.method_1(point3d21) self.area.method_3( point3d22, MathHelper.smethod_57(turnDirection, point3d22, point3d7, point3d3)) self.area.method_1(point3d7) elif (num4 <= MathHelper.calcDistance(point3d4, point3d1) + num1): flag1 = False if (num4 < MathHelper.calcDistance(point3d4, point3d) + num): point3d39 = MathHelper.distanceBearingPoint( point3d12, MathHelper.getBearing(point3d11, point3d12) + 1.5707963267949 * num30, 100) flag1 = MathHelper.smethod_119( point3d23, point3d12, point3d39) if (turnDirection != TurnDirection.Right ) else MathHelper.smethod_115( point3d23, point3d12, point3d39) if (flag1): self.area.method_1(point3d7) self.area.method_3( point3d8, MathHelper.smethod_57(turnDirection, point3d8, point3d11, point3d4)) self.area.method_1(point3d11) self.area.method_3( point3d12, MathHelper.smethod_57(turnDirection, point3d12, point3d23, point3d)) self.area.method_3( point3d23, MathHelper.smethod_57(turnDirection, point3d23, point3d24, point3d1)) self.area.method_1(point3d24) else: self.area.method_1(point3d7) self.area.method_3( point3d8, MathHelper.smethod_57(turnDirection, point3d8, point3d13, point3d4)) self.area.method_1(point3d13) self.area.method_3( point3d14, MathHelper.smethod_57(turnDirection, point3d14, point3d24, point3d1)) self.area.method_1(point3d24) self.area.method_3( point3d25, MathHelper.smethod_57(turnDirection, point3d25, point3d26, point3d46)) self.area.method_1(point3d26) self.area.method_3( point3d27, MathHelper.smethod_57(turnDirection, point3d27, point3d7, point3d3)) self.area.method_1(point3d7) else: self.area.method_1(point3d7) self.area.method_3( point3d8, MathHelper.smethod_57(turnDirection, point3d8, point3d15, point3d4)) self.area.method_1(point3d15) self.area.method_3( point3d16, MathHelper.smethod_57(turnDirection, point3d16, point3d7, point3d3)) self.area.method_1(point3d7) self.outboundLineTop = PolylineArea() self.outboundLineTop.method_1(point3d24) self.outboundLineTop.method_3( point3d25, MathHelper.smethod_57(turnDirection, point3d25, point3d26, point3d46)) # PolylineArea polylineArea = self.outboundLineTop; point3dArray = [point3d26, point3d27] self.outboundLineTop.method_7(point3dArray) self.outboundLineBottom = PolylineArea() self.outboundLineBottom.method_1(point3d28) self.outboundLineBottom.method_3( point3d29, MathHelper.smethod_57(turnDirection1, point3d29, point3d30, point3d48)) # PolylineArea polylineArea1 = self.outboundLineBottom; point3dArray = [point3d30, point3d31] self.outboundLineBottom.method_7(point3dArray) self.spiral = PolylineArea() if (MathHelper.calcDistance(point3d, point3d_0) <= num): point3d32_39 = [] MathHelper.smethod_34( point3d_0, MathHelper.distanceBearingPoint(point3d_0, Unit.ConvertDegToRad(double_0), 100), point3d, num, point3d32_39) point3d32 = point3d32_39[0] point3d39 = point3d32_39[1] point3d33 = MathHelper.distanceBearingPoint( point3d, MathHelper.getBearing(point3d, point3d38), num) self.spiral.Add( PolylineAreaPoint( point3d32, MathHelper.smethod_57(turnDirection, point3d32, point3d33, point3d))) else: point3d32, point3d33 = MathHelper.smethod_91( point3d_0, 0, point3d, num, turnDirection) self.spiral.method_1(point3d32) point3d34, point3d35 = MathHelper.smethod_91(point3d, num, point3d1, num1, turnDirection) self.spiral.Add( PolylineAreaPoint( point3d33, MathHelper.smethod_57(turnDirection, point3d33, point3d34, point3d))) point3d33 = point3d34 point3d34, point3d35 = MathHelper.smethod_91(point3d1, num1, point3d2, num2, turnDirection) self.spiral.Add( PolylineAreaPoint( point3d33, MathHelper.smethod_57(turnDirection, point3d33, point3d34, point3d1))) point3d33 = point3d34 point3d39 = MathHelper.distanceBearingPoint( point3d2, Unit.ConvertDegToRad(double_0 + 180), num2) self.spiral.Add( PolylineAreaPoint( point3d33, MathHelper.smethod_57(turnDirection, point3d33, point3d39, point3d2))) self.spiral.method_1(point3d39) self.method_0(point3dCollection) self.method_1( MathHelper.distanceBearingPoint(point3d1, Unit.ConvertDegToRad(double_0), num1), MathHelper.distanceBearingPoint( point3d2, Unit.ConvertDegToRad(double_0 + num30 * 90), num2), MathHelper.distanceBearingPoint( point3d2, Unit.ConvertDegToRad(double_0 + 180), num2)) point3d56 = MathHelper.distanceBearingPoint( point3d_0, Unit.ConvertDegToRad(double_0 + 180), 1000) point3d39 = MathHelper.getIntersectionPoint(point3d_0, point3d56, point3d7, point3d8) point3d6_58 = [] MathHelper.smethod_34(point3d_0, point3d56, point3d3, num3, point3d6_58) point3d6 = point3d6_58[0] point3d58 = point3d6_58[1] point3d6_59 = [] MathHelper.smethod_34(point3d_0, point3d56, point3d4, num4, point3d6_59) point3d6 = point3d6_59[0] point3d59 = point3d6_59[1] if (orientationType_0 == OrientationType.Right): if (not MathHelper.smethod_119(point3d39, point3d3, point3d7) or not MathHelper.smethod_115(point3d39, point3d4, point3d8)): self.ptC = point3d58 if (MathHelper.calcDistance( point3d_0, point3d58) > MathHelper.calcDistance( point3d_0, point3d59)) else point3d59 else: self.ptC = point3d39 elif (not MathHelper.smethod_115(point3d39, point3d3, point3d7) or not MathHelper.smethod_119(point3d39, point3d4, point3d8)): self.ptC = point3d58 if ( MathHelper.calcDistance(point3d_0, point3d58) > MathHelper.calcDistance(point3d_0, point3d59)) else point3d59 else: self.ptC = point3d39 num31 = MathHelper.calcDistance(self.ptC, point3d43) point3d60 = MathHelper.distanceBearingPoint( self.ptC, MathHelper.getBearing(self.ptC, point3d43) + math.asin(num16 / num31) * num30, math.sqrt(num31 * num31 - num16 * num16)) point3d6_58 = [] MathHelper.smethod_34(self.ptC, point3d60, point3d1, num1, point3d6_58) point3d6 = point3d6_58[0] point3d58 = point3d6_58[1] point3d6_59 = [] MathHelper.smethod_34(self.ptC, point3d60, point3d2, num2, point3d6_59) point3d6 = point3d6_59[0] point3d59 = point3d6_59[1] self.ptR = point3d58 if ( MathHelper.calcDistance(self.ptC, point3d58) > MathHelper.calcDistance(self.ptC, point3d59)) else point3d59