Example #1
0
 def smethod_13(rnavFlightPhase_0, rnavWaypointType_0, speed_0, speed_1,
                distance_0, distance_1, double_0, angleUnits_0):
     if (rnavWaypointType_0 != RnavWaypointType.FlyBy):
         if (rnavWaypointType_0 != RnavWaypointType.FlyOver):
             raise UserWarning, "RNAV WayPoint type not SUPPORTED"
         if rnavFlightPhase_0 == RnavFlightPhase.Enroute:
             num1 = 15
         elif rnavFlightPhase_0 == RnavFlightPhase.SID:
             num1 = 6
         elif rnavFlightPhase_0 == RnavFlightPhase.STAR:
             raise UserWarning, "RNAV_FLIGHT_PHASE_NOT_SUPPORTED"
         elif rnavFlightPhase_0 == RnavFlightPhase.IafIf or rnavFlightPhase_0 == RnavFlightPhase.Faf:
             num1 = 11
         elif rnavFlightPhase_0 == RnavFlightPhase.MissedApproach:
             num1 = 6
         else:
             raise UserWarning, "RNAV_FLIGHT_PHASE_NOT_SUPPORTED"
         num2 = num1 * (speed_0.MetresPerSecond + speed_1.MetresPerSecond)
         return Distance(-(distance_0.Metres + num2))
     if (angleUnits_0 == AngleUnits.Degrees):
         double_0 = Unit.ConvertDegToRad(double_0)
     num3 = min(
         [distance_1.Metres * math.tan(double_0 / 2), distance_1.Metres])
     if rnavFlightPhase_0 == RnavFlightPhase.Enroute:
         num = 10
     elif rnavFlightPhase_0 == RnavFlightPhase.SID:
         num = 3
     elif rnavFlightPhase_0 == RnavFlightPhase.STAR:
         raise UserWarning, "RNAV_FLIGHT_PHASE_NOT_SUPPORTED"
     elif rnavFlightPhase_0 == RnavFlightPhase.IafIf or rnavFlightPhase_0 == RnavFlightPhase.Faf:
         num = 6
     elif rnavFlightPhase_0 == RnavFlightPhase.MissedApproach:
         num = 3
     else:
         raise UserWarning, "RNAV_FLIGHT_PHASE_NOT_SUPPORTED"
     num4 = num * (speed_0.MetresPerSecond + speed_1.MetresPerSecond)
     return Distance(num3 - distance_0.Metres - num4)
    def putDistances(self):
        try:
            point3dThr = self.parametersPanel.pnlThrPosition.Point3d
            point3dFaf = self.parametersPanel.pnlFapPosition.Point3d

            point3dThr = self.parametersPanel.pnlThrPosition.Point3d
            # point3dFaf = self.parametersPanel.pnlFapPosition.Point3d
            inboundTrackRad = MathHelper.smethod_4(self.parametersPanel.pnlInboundTrack.Value)#MathHelper.getBearing(point3dFaf, point3dThr)
            inboundTrack180Rad = MathHelper.smethod_4(inboundTrackRad + math.pi)
            estimatedAltitdeMeters = self.parametersPanel.pnlEstimatedAltitude.Value.Metres
            thrAltitudeMeters = self.parametersPanel.pnlThrPosition.Altitude().Metres
            heightLossAltitudeMeters = self.parametersPanel.pnlHeightLoss.Value.Metres
            rdhAltitudeMeters = self.parametersPanel.pnlRDH.Value.Metres
            vpa = Unit.ConvertDegToRad(self.getVPA())
            xz = self.parametersPanel.pnlDistXz.Value.Metres
            socThrDistMeters = ((estimatedAltitdeMeters - thrAltitudeMeters - heightLossAltitudeMeters) / math.tan(vpa)) + xz
            daThrDistMeters = (estimatedAltitdeMeters - thrAltitudeMeters - rdhAltitudeMeters) / math.tan(vpa)


            self.parametersPanel.pnlDistOfDaThr.Value = Distance(daThrDistMeters)#MathHelper.calcDistance(point3dThr, self.daPoint3d))
            self.parametersPanel.pnlDistOfSocThr.Value = Distance(socThrDistMeters)#MathHelper.calcDistance(point3dThr, self.socPoint3d))
            self.parametersPanel.pnlDistOfFafDA.Value = Distance(MathHelper.calcDistance(point3dFaf, self.daPoint3d))
        except:
            pass
 def initObstaclesModel(self):
     if self.surfaceArea == None:
         return
     self.obstaclesModel = VisualSegmentSurfaceObstacles(
         [self.surfaceArea], self.ui.chbHideDisregardableObst.isChecked())
     try:
         double_0 = float(self.parametersPanel.txtRwyDir.Value)
     except ValueError:
         raise UserWarning, "Runway Direction is invalid!"
     try:
         double_1 = math.tan(
             Unit.ConvertDegToRad(
                 float(self.parametersPanel.txtDescAngle.Value.Degrees) -
                 1.12))
     except ValueError:
         raise UserWarning, "DescAngle is invalid!"
     point3d_0 = MathHelper.distanceBearingPoint(
         self.parametersPanel.pnlTHR.getPoint3D(), double_0, 60)
     self.obstaclesModel.ptStart = point3d_0
     self.obstaclesModel.ptStart2 = MathHelper.distanceBearingPoint(
         point3d_0, double_0 - 1.5707963267949, 100)
     self.obstaclesModel.outbound = double_0
     self.obstaclesModel.tang = double_1
     return FlightPlanBaseDlg.initObstaclesModel(self)
Example #4
0
    def btnCalculate_Click(self):
        try:
            bearing = Unit.ConvertDegToRad(float(self.txtBearing.text()))
            distance0 = Distance(float(self.txtDistance.text()),
                                 DistanceUnits.NM).Metres
            self.calcedPoint = MathHelper.distanceBearingPoint(
                self.point, bearing, distance0)
            if self.flagStr == "R":
                self.parent0.parametersPanel.pnlIAWP1.Point3d = self.calcedPoint
                self.parent0.parametersPanel.txtRadiusIAWP1.setText(
                    self.txtDistance.text())
            elif self.flagStr == "L":
                self.parent0.parametersPanel.txtRadiusIAWP3.setText(
                    self.txtDistance.text())
                self.parent0.parametersPanel.pnlIAWP3.Point3d = self.calcedPoint
            elif self.flagStr == "C":
                self.parent0.parametersPanel.txtRadiusIAWP2.setText(
                    self.txtDistance.text())
                self.parent0.parametersPanel.pnlIAWP2.Point3d = self.calcedPoint

            self.accept()

        except UserWarning as e:
            QMessageBox.warning(self, "warning", e.message)
Example #5
0
    def smethod_3(polylineArea_0, altitude_0, altitude_1):
        #         DBObjectCollection dBObjectCollection;
        polylineAreaList = HoldingTemplateBase.smethod_0(
            polylineArea_0, Unit.ConvertNMToMeter(1), 5)
        #         DBObjectCollection dBObjectCollection2 = new DBObjectCollection();
        num = 0.5
        metres = altitude_0.Metres - altitude_1.Metres
        resultGeometryList = []
        for i in range(5):
            if (i > 0):
                metres = altitude_0.Metres - num * altitude_1.Metres
                num = num - 0.1
#             (dBObjectCollection1.get_Item(i) as Polyline).set_Elevation(metres);
#             DBObjectCollection dBObjectCollection3 = new DBObjectCollection();
#             dBObjectCollection3.Add(dBObjectCollection1.get_Item(i));
            item = polylineAreaList[i].method_14_closed(4)
            itemGeometry = QgsGeometry.fromPolygon([item])
            #             item.SetDatabaseDefaults();
            if (i > 0):
                #                 (dBObjectCollection1.get_Item(i - 1) as Polyline).set_Elevation(metres);
                #                 DBObjectCollection dBObjectCollection4 = new DBObjectCollection();
                #                 dBObjectCollection4.Add(dBObjectCollection1.get_Item(i - 1));
                regionGeometry = QgsGeometry.fromPolygon(
                    [polylineAreaList[i - 1].method_14_closed(4)])
                polygonNew = itemGeometry.difference(regionGeometry)
                resultGeometryList.append(polygonNew)
            else:
                resultGeometryList.append(itemGeometry)
#                 region.SetDatabaseDefaults();
#                 item.BooleanOperation(2, region);
#                 region.Dispose();
#                 }
#             dBObjectCollection2.Add(item);
#             }
#             dBObjectCollection = dBObjectCollection2;
        return resultGeometryList
Example #6
0
 def method_35(self):
     point3d = self.parametersPanel.pnlNavAid.Point3d
     value = self.parametersPanel.txtAltitude.Value
     metres = value.Metres - point3d.get_Z()
     if (self.parametersPanel.cmbNavAidType.SelectedIndex != 0):
         num = 25
         num1 = 15
         num2 = metres * 0.839099631
     else:
         num = 15
         num1 = 5
         num2 = metres * 1.191753593
     num3 = 1 if (self.parametersPanel.cmbOrientation.SelectedItem
                  == OrientationType.Right) else -1
     num4 = MathHelper.smethod_3(float(self.parametersPanel.txtTrack.Value))
     point3d1 = MathHelper.distanceBearingPoint(
         point3d, Unit.ConvertDegToRad(num4 + num3 * num),
         num2).smethod_167(0)
     point3d2 = MathHelper.distanceBearingPoint(
         point3d, Unit.ConvertDegToRad(num4 + 180 - num3 * num1),
         num2).smethod_167(0)
     point3d3 = MathHelper.distanceBearingPoint(
         point3d, Unit.ConvertDegToRad(num4 - num3 * num),
         num2).smethod_167(0)
     point3d4 = MathHelper.distanceBearingPoint(
         point3d, Unit.ConvertDegToRad(num4 + 180 + num3 * num1),
         num2).smethod_167(0)
     point3dArray = [point3d1, point3d2, point3d4, point3d3]
     polylineArea = PolylineArea(point3dArray)
     polylineArea[3].set_Bulge(
         MathHelper.smethod_60(
             point3d3,
             MathHelper.distanceBearingPoint(point3d,
                                             Unit.ConvertDegToRad(num4),
                                             num2).smethod_167(0),
             point3d1))
     polylineArea[1].set_Bulge(
         MathHelper.smethod_60(
             point3d2,
             MathHelper.distanceBearingPoint(
                 point3d, Unit.ConvertDegToRad(num4 + 180),
                 num2).smethod_167(0), point3d4))
     return polylineArea
    def changeType(self):

        if self.ui.txtToal != "" and self.ui.cmbMeasureType.currentIndex(
        ) != self.measureType:
            if self.measureType == DistanceUnits.M:
                if self.ui.cmbMeasureType.currentIndex() == DistanceUnits.FT:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertMeterToFeet(dist)))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.KM:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(dist / 1000.0))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.NM:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertMeterToNM(dist)))
            elif self.measureType == DistanceUnits.FT:
                if self.ui.cmbMeasureType.currentIndex() == DistanceUnits.M:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertFeetToMeter(dist)))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.KM:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(
                        str(Unit.ConvertFeetToMeter(dist) / 1000.0))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.NM:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertFeetToNM(dist)))
            elif self.measureType == DistanceUnits.KM:
                if self.ui.cmbMeasureType.currentIndex() == DistanceUnits.M:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertKMToMeters(dist)))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.FT:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertKMToFeet(dist)))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.NM:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertKMToNM(dist)))
            elif self.measureType == DistanceUnits.NM:
                if self.ui.cmbMeasureType.currentIndex() == DistanceUnits.M:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(str(Unit.ConvertNMToMeter(dist)))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.FT:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(
                        str(
                            Unit.ConvertMeterToFeet(
                                Unit.ConvertNMToMeter(dist))))
                elif self.ui.cmbMeasureType.currentIndex() == DistanceUnits.KM:
                    dist = float(self.ui.txtToal.text())
                    self.ui.txtToal.setText(
                        str(Unit.ConvertNMToMeter(dist) / 1000.0))

        self.measureType = self.ui.cmbMeasureType.currentIndex()
Example #8
0
    def btnConstruct_Click(self):
        num = None
        num1 = None
        line = None
        polyline = None
        point3d = None
        point3d1 = None
        point3d2 = None
        point3d3 = None
        point3d4 = None
        point3d5 = None
        point3d6 = None
        point3d7 = None
        point3d8 = None
        ficorResult = None
        point = []
        value = None
        resultPolylineAreaList = []
        # if (!AcadHelper.Ready)
        # {
        #     return;
        # }
        # if (!self.method_27(true))
        # {
        #     return;
        # }
        # string constructionLayer = base.ConstructionLayer;
        point3d9 = self.parametersPanel.pnlTrackingPosition.Point3d
        point3d10 = self.parametersPanel.pnlIntersectingPosition.Point3d
        value1 = float(self.parametersPanel.txtTrackingRadialTrack.text())
        value2 = float(self.parametersPanel.txtIntersectingRadialTrack.text())
        num2 = Unit.ConvertDegToRad(value1)
        num3 = Unit.ConvertDegToRad(value2)
        if (self.parametersPanel.cmbTrackingType.currentIndex() != 0):
            num = Unit.ConvertDegToRad(2.4) if (
                self.parametersPanel.cmbTrackingType.currentIndex() != 1
            ) else Unit.ConvertDegToRad(6.9)
        else:
            num = Unit.ConvertDegToRad(5.2)
        num1 = Unit.ConvertDegToRad(6.2) if (
            self.parametersPanel.cmbIntersectingType.currentIndex() != 0
        ) else Unit.ConvertDegToRad(4.5)
        num4 = num2 + num
        point3d11 = MathHelper.distanceBearingPoint(point3d9, num4, 100)
        num5 = num2 - num
        point3d12 = MathHelper.distanceBearingPoint(point3d9, num5, 100)
        point3d13 = MathHelper.distanceBearingPoint(point3d9, num2, 100)

        point3d = MathHelper.getIntersectionPoint(
            point3d9, point3d13, point3d10,
            MathHelper.distanceBearingPoint(point3d10, num3, 100))
        if (self.parametersPanel.cmbIntersectingType.currentIndex() >= 2):
            metres = Distance(
                float(self.parametersPanel.txtIntersectingDistance.text()),
                DistanceUnits.NM).Metres
            if (self.parametersPanel.chb0dmeAtThr.isChecked()):
                value = Distance(
                    float(self.parametersPanel.txtDmeOffset.text()))
                metres = metres + value.Metres
            num6 = 460 + metres * 0.0125
            num7 = metres + num6
            num8 = metres - num6
            if (MathHelper.smethod_102(point3d9, point3d10)):
                point3d14 = MathHelper.distanceBearingPoint(
                    point3d9, num4, num8)
                point3d15 = MathHelper.distanceBearingPoint(
                    point3d9, num2, num8)
                point3d16 = MathHelper.distanceBearingPoint(
                    point3d9, num5, num8)
                point3d17 = MathHelper.distanceBearingPoint(
                    point3d9, num5, num7)
                point3d18 = MathHelper.distanceBearingPoint(
                    point3d9, num2, num7)
                point3d19 = MathHelper.distanceBearingPoint(
                    point3d9, num4, num7)
                point = [point3d14, point3d16, point3d17, point3d19]
                polyline = AcadHelper.smethod_126(point)
                polyline.SetBulgeAt(
                    0, MathHelper.smethod_60(point3d14, point3d15, point3d16))
                polyline.SetBulgeAt(
                    2, MathHelper.smethod_60(point3d17, point3d18, point3d19))
                polyline.set_Closed(True)
                resultPolylineAreaList.append(polyline)
                # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer);
                point3d14 = MathHelper.distanceBearingPoint(
                    point3d9, num2, num8)
                point3d15 = MathHelper.distanceBearingPoint(
                    point3d9, num2, num7)
                resultPolylineAreaList.append(
                    PolylineArea([point3d14, point3d15]))
                # line = new Line(point3d14, point3d15);
                #         AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer);
                point3d14 = MathHelper.distanceBearingPoint(
                    point3d9, num4, metres)
                point3d15 = MathHelper.distanceBearingPoint(
                    point3d9, num2, metres)
                point3d16 = MathHelper.distanceBearingPoint(
                    point3d9, num5, metres)
                point = [point3d14, point3d16]
                polyline = AcadHelper.smethod_126(point)
                polyline.SetBulgeAt(
                    0, MathHelper.smethod_60(point3d14, point3d15, point3d16))
                resultPolylineAreaList.append(polyline)
                # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer);
            else:
                ficorResult1 = self.method_37(point3d10, num2, point3d9,
                                              point3d13, num8, FicorInput.C)
                ficorResult2 = self.method_37(point3d10, num2, point3d9,
                                              point3d13, metres, FicorInput.C)
                ficorResult3 = self.method_37(point3d10, num2, point3d9,
                                              point3d13, num7, FicorInput.C)
                if (ficorResult1.Status != FicorStatus.TWO
                        and ficorResult2.Status != FicorStatus.TWO):
                    if (ficorResult3.Status == FicorStatus.TWO):
                        ficorResult = FicorResult(None, FicorStatus.TWO)
                    else:
                        ficorResult = FicorResult(None, ficorResult2.Status)
                else:
                    ficorResult = FicorResult(None, FicorStatus.TWO)
                if (ficorResult.Status != FicorStatus.NID):
                    ficorInput = FicorInput.F
                    num9 = 1
                    if (ficorResult.Status == FicorStatus.TWO):
                        QMessageBox.warning(
                            self, "Infomation",
                            Messages.TWO_POSSIBLE_FIX_POSITIONS)
                        ficorInput = FicorInput.L
                        num9 = 2
                    num10 = 0
                    while (num10 < num9):
                        ficorResult4 = self.method_37(point3d10, num4,
                                                      point3d9, point3d11,
                                                      num8, ficorInput)
                        ficorResult5 = self.method_37(point3d10, num2,
                                                      point3d9, point3d13,
                                                      num8, ficorInput)
                        ficorResult6 = self.method_37(point3d10, num5,
                                                      point3d9, point3d12,
                                                      num8, ficorInput)
                        ficorResult7 = self.method_37(point3d10, num4,
                                                      point3d9, point3d11,
                                                      metres, ficorInput)
                        ficorResult8 = self.method_37(point3d10, num2,
                                                      point3d9, point3d13,
                                                      metres, ficorInput)
                        ficorResult9 = self.method_37(point3d10, num5,
                                                      point3d9, point3d12,
                                                      metres, ficorInput)
                        ficorResult10 = self.method_37(point3d10, num4,
                                                       point3d9, point3d11,
                                                       num7, ficorInput)
                        ficorResult11 = self.method_37(point3d10, num2,
                                                       point3d9, point3d13,
                                                       num7, ficorInput)
                        ficorResult12 = self.method_37(point3d10, num5,
                                                       point3d9, point3d12,
                                                       num7, ficorInput)
                        if (ficorResult4.Status == FicorStatus.NID
                                or ficorResult5.Status == FicorStatus.NID
                                or ficorResult6.Status == FicorStatus.NID
                                or ficorResult7.Status == FicorStatus.NID
                                or ficorResult9.Status == FicorStatus.NID
                                or ficorResult10.Status == FicorStatus.NID
                                or ficorResult11.Status == FicorStatus.NID
                                or ficorResult12.Status == FicorStatus.NID
                                or ficorResult8.Status == FicorStatus.NID):
                            eRRFAILEDTOCONSTRUCTTHEFIXAUTOMATICALLY = Messages.ERR_FAILED_TO_CONSTRUCT_THE_FIX_AUTOMATICALLY
                            value = Distance(
                                float(self.parametersPanel.
                                      txtIntersectingDistance.text()),
                                DistanceUnits.NM)
                            str000 = str(round(value.Metres, 4)) + "m"
                            value = str(round(Distance(num6).Metres, 4)) + "m"
                            QMessageBox.warning(
                                self, "Error",
                                eRRFAILEDTOCONSTRUCTTHEFIXAUTOMATICALLY %
                                (str000, value))
                            #                     ErrorMessageBox.smethod_0(self, string.Format(eRRFAILEDTOCONSTRUCTTHEFIXAUTOMATICALLY, str, value.method_0(":m")));
                            return
                        elif (MathHelper.calcDistance(point3d9,
                                                      ficorResult8.Point)
                              < MathHelper.calcDistance(
                                  ficorResult5.Point, ficorResult8.Point)):
                            QMessageBox.warning(
                                self, "Error", Messages.
                                ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE)
                            #                     ErrorMessageBox.smethod_0(self, Messages.ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE);
                            return
                        else:
                            point = [
                                ficorResult4.Point, ficorResult6.Point,
                                ficorResult12.Point, ficorResult10.Point
                            ]
                            polyline = AcadHelper.smethod_126(point)
                            polyline.SetBulgeAt(
                                0,
                                MathHelper.smethod_60(ficorResult4.Point,
                                                      ficorResult5.Point,
                                                      ficorResult6.Point))
                            polyline.SetBulgeAt(
                                2,
                                MathHelper.smethod_60(ficorResult12.Point,
                                                      ficorResult11.Point,
                                                      ficorResult10.Point))
                            polyline.set_Closed(True)
                            resultPolylineAreaList.append(polyline)
                            # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer);
                            resultPolylineAreaList.append(
                                PolylineArea(
                                    [ficorResult5.Point, ficorResult11.Point]))
                            # line = new Line(ficorResult5.Point, ficorResult11.Point);
                            # AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer);
                            point = [ficorResult7.Point, ficorResult9.Point]
                            polyline = AcadHelper.smethod_126(point)
                            polyline.SetBulgeAt(
                                0,
                                MathHelper.smethod_60(ficorResult7.Point,
                                                      ficorResult8.Point,
                                                      ficorResult9.Point))
                            resultPolylineAreaList.append(polyline)
                            # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer);
                            if (ficorResult.Status == FicorStatus.TWO):
                                ficorInput = FicorInput.S
                            num10 += 1
                else:
                    QMessageBox.warning(
                        self, "Error", Messages.
                        ERR_RADIAL_TRACK_DME_DISTANCE_DO_NOT_INTERSECT)
                    #             ErrorMessageBox.smethod_0(self, Messages.ERR_RADIAL_TRACK_DME_DISTANCE_DO_NOT_INTERSECT);
                    return
        elif (point3d == None):
            QMessageBox.warning(self, "Error",
                                Messages.ERR_RADIALS_TRACKS_ARE_PARALLEL)
            #     ErrorMessageBox.smethod_0(self, Messages.ERR_RADIALS_TRACKS_ARE_PARALLEL);
            return
        elif (MathHelper.smethod_99(MathHelper.getBearing(point3d9, point3d),
                                    num2, 0.001)):
            point3d20 = MathHelper.distanceBearingPoint(
                point3d10, num3 + num1, 100)
            point3d21 = MathHelper.distanceBearingPoint(
                point3d10, num3 - num1, 100)
            point3d1 = MathHelper.getIntersectionPoint(point3d9, point3d12,
                                                       point3d10, point3d20)
            point3d2 = MathHelper.getIntersectionPoint(point3d9, point3d12,
                                                       point3d10, point3d21)
            point3d3 = MathHelper.getIntersectionPoint(point3d9, point3d11,
                                                       point3d10, point3d21)
            point3d4 = MathHelper.getIntersectionPoint(point3d9, point3d11,
                                                       point3d10, point3d20)
            point3d5 = MathHelper.getIntersectionPoint(point3d9, point3d,
                                                       point3d10, point3d20)
            point3d6 = MathHelper.getIntersectionPoint(point3d9, point3d,
                                                       point3d10, point3d21)
            point3d7 = MathHelper.getIntersectionPoint(point3d9, point3d11,
                                                       point3d10, point3d)
            point3d8 = MathHelper.getIntersectionPoint(point3d9, point3d12,
                                                       point3d10, point3d)
            if (MathHelper.calcDistance(point3d9, point3d) <
                    MathHelper.calcDistance(point3d5, point3d)
                    or MathHelper.calcDistance(point3d10, point3d) <
                    MathHelper.calcDistance(point3d5, point3d)
                    or MathHelper.calcDistance(point3d9, point3d) <
                    MathHelper.calcDistance(point3d8, point3d)
                    or MathHelper.calcDistance(point3d10, point3d) <
                    MathHelper.calcDistance(point3d8, point3d)):
                QMessageBox.warning(
                    self, "Error",
                    Messages.ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE)
                #         ErrorMessageBox.smethod_0(self, Messages.ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE);
                return
            else:
                resultPolylineAreaList.append(
                    PolylineArea([point3d5, point3d6]))
                #         line = new Line(point3d5, point3d6);
                #         AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer);
                resultPolylineAreaList.append(
                    PolylineArea([point3d7, point3d8]))
                #         line = new Line(point3d7, point3d8);
                #         AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer);
                point = [point3d1, point3d2, point3d3, point3d4]
                polyline = AcadHelper.smethod_126(point)
                polyline.set_Closed(True)
                resultPolylineAreaList.append(polyline)
        #         AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer);
        else:
            QMessageBox.warning(self, "Error",
                                Messages.ERR_RADIALS_TRACKS_DO_NOT_INTERSECT)
            #     ErrorMessageBox.smethod_0(self, Messages.ERR_RADIALS_TRACKS_DO_NOT_INTERSECT);
            return

        mapUnits = define._canvas.mapUnits()
        constructionLayer = None
        if define._mapCrs == None:
            if mapUnits == QGis.Meters:
                constructionLayer = QgsVectorLayer("linestring?crs=EPSG:32633",
                                                   self.surfaceType, "memory")
            else:
                constructionLayer = QgsVectorLayer("linestring?crs=EPSG:4326",
                                                   self.surfaceType, "memory")
        else:
            constructionLayer = QgsVectorLayer(
                "linestring?crs=%s" % define._mapCrs.authid(),
                self.surfaceType, "memory")
        shpPath = ""
        if define.obstaclePath != None:
            shpPath = define.obstaclePath
        elif define.xmlPath != None:
            shpPath = define.xmlPath
        else:
            shpPath = define.appPath
        er = QgsVectorFileWriter.writeAsVectorFormat(
            constructionLayer, shpPath + "/" +
            QString(self.surfaceType).replace(" ", "") + ".shp", "utf-8",
            constructionLayer.crs())
        constructionLayer = QgsVectorLayer(
            shpPath + "/" + QString(self.surfaceType).replace(" ", "") +
            ".shp", self.surfaceType, "ogr")

        constructionLayer.startEditing()

        for polylinrArea0 in resultPolylineAreaList:
            feature = QgsFeature()
            feature.setGeometry(
                QgsGeometry.fromPolyline(polylinrArea0.method_14()))
            pr = constructionLayer.dataProvider()
            pr.addFeatures([feature])
            # constructionLayer.addFeature(feature)
        constructionLayer.commitChanges()
        QgisHelper.appendToCanvas(define._canvas, [constructionLayer],
                                  self.surfaceType, True)
        QgisHelper.zoomToLayers([constructionLayer])
Example #9
0
    def addObstacleToModel(self, obstacle, checkResult):
        if self.typeStr == "buffer":
            ObstacleTable.addObstacleToModel(self, obstacle, checkResult)
            row = self.source.rowCount() - 1

            item = QStandardItem(str(checkResult[0]))
            item.setData(checkResult[0])
            self.source.setItem(row, self.IndexMocAppliedM, item)

            item = QStandardItem(str(Unit.ConvertMeterToFeet(checkResult[0])))
            item.setData(Unit.ConvertMeterToFeet(checkResult[0]))
            self.source.setItem(row, self.IndexMocAppliedFt, item)

            item = QStandardItem(str(ObstacleTable.MocMultiplier))
            item.setData(ObstacleTable.MocMultiplier)
            self.source.setItem(row, self.IndexMocMultiplier, item)

            item = QStandardItem(str(checkResult[1]))
            item.setData(checkResult[1])
            self.source.setItem(row, self.IndexOcaM, item)

            item = QStandardItem(str(Unit.ConvertMeterToFeet(checkResult[1])))
            item.setData(Unit.ConvertMeterToFeet(checkResult[1]))
            self.source.setItem(row, self.IndexOcaFt, item)

            item = QStandardItem(str(checkResult[2]))
            item.setData(checkResult[2])
            self.source.setItem(row, self.IndexCritical, item)
        else:
            ObstacleTable.addObstacleToModel(self, obstacle, checkResult)
            row = self.source.rowCount() - 1

            item = QStandardItem(str(checkResult[0]))
            item.setData(checkResult[0])
            self.source.setItem(row, self.IndexObstArea, item)

            item = QStandardItem(str(checkResult[1]))
            item.setData(checkResult[1])
            self.source.setItem(row, self.IndexDistInSecM, item)

            item = QStandardItem(str(checkResult[2]))
            item.setData(checkResult[2])
            self.source.setItem(row, self.IndexMocAppliedM, item)

            item = QStandardItem(str(Unit.ConvertMeterToFeet(checkResult[2])))
            item.setData(Unit.ConvertMeterToFeet(checkResult[2]))
            self.source.setItem(row, self.IndexMocAppliedFt, item)

            item = QStandardItem(str(ObstacleTable.MocMultiplier))
            item.setData(ObstacleTable.MocMultiplier)
            self.source.setItem(row, self.IndexMocMultiplier, item)

            item = QStandardItem(str(checkResult[3]))
            item.setData(checkResult[3])
            self.source.setItem(row, self.IndexOcaM, item)

            item = QStandardItem(str(Unit.ConvertMeterToFeet(checkResult[3])))
            item.setData(Unit.ConvertMeterToFeet(checkResult[3]))
            self.source.setItem(row, self.IndexOcaFt, item)

            item = QStandardItem(str(checkResult[4]))
            item.setData(checkResult[4])
            self.source.setItem(row, self.IndexCritical, item)
    def method_34(self):
        point3dCollection_0 = None
        point3dCollection_1 = None
        polylineArea_0 = None
        polylineArea_1 = None
        polylineArea_2 = None

        point3d = self.parametersPanel.pnlRwyStart.Point3d
        point3d1 = self.parametersPanel.pnlDer.Point3d
        num = MathHelper.getBearing(point3d, point3d1)
        num1 = MathHelper.smethod_4(num + 3.14159265358979)
        num2 = MathHelper.smethod_4(num - 1.5707963267949)
        num3 = MathHelper.smethod_4(num + 1.5707963267949)
        percent = float(self.parametersPanel.txtPdg.text()) / 100
        metres = Altitude(
            float(self.parametersPanel.txtTurningAltitude.text()),
            AltitudeUnits.FT).Metres
        metres1 = Altitude(
            float(self.parametersPanel.txtNextSegmentAltitude.text()),
            AltitudeUnits.FT).Metres
        num4 = 45 if (self.parametersPanel.chbCatH.isChecked()) else 150
        num5 = MathHelper.calcDistance(point3d, point3d1)
        if (num5 < 10):
            QMessageBox.warning(self, "Warning",
                                Messages.ERR_POSITIONS_TOO_CLOSE)
            return (False, None, None, None, None, None)
        if (not self.parametersPanel.chbTurnsBeforeDer.isChecked()):
            point3dCollection_0 = None
        else:
            point3d2 = point3d if (self.parametersPanel.chbCatH.isChecked()
                                   ) else MathHelper.distanceBearingPoint(
                                       point3d, num, min([600, num5]))
            if (MathHelper.smethod_103(point3d2, point3d1, 0.1)):
                point3dCollection_0 = None
            else:
                point3dCollection_0 = []
                point3dCollection_0.append(
                    MathHelper.distanceBearingPoint(point3d2, num2, num4))
                point3dCollection_0.append(
                    MathHelper.distanceBearingPoint(point3d1, num2, num4))
                point3dCollection_0.append(
                    MathHelper.distanceBearingPoint(point3d1, num3, num4))
                point3dCollection_0.append(
                    MathHelper.distanceBearingPoint(point3d2, num3, num4))
        num6 = (
            (Altitude(float(
                self.parametersPanel.txtMinTurnHeight_CATH.text())).Metres if
             (self.parametersPanel.chbCatH.isChecked()) else Altitude(
                 float(self.parametersPanel.txtMinTurnHeight.text())).Metres) -
            5) / percent
        z = (metres - point3d1.get_Z() - 5) / percent
        num7 = Unit.ConvertDegToRad(15)
        num8 = Unit.ConvertDegToRad(30)
        point3d3 = MathHelper.distanceBearingPoint(point3d1, num2, num4)
        point3d4 = MathHelper.distanceBearingPoint(point3d1, num3, num4)
        point3d5 = MathHelper.distanceBearingPoint(point3d3, num - num7,
                                                   num6 / math.cos(num7))
        point3d6 = MathHelper.distanceBearingPoint(point3d4, num + num7,
                                                   num6 / math.cos(num7))
        point3d7 = MathHelper.distanceBearingPoint(point3d5, num - num8,
                                                   (z - num6) / math.cos(num8))
        point3d8 = MathHelper.distanceBearingPoint(point3d6, num + num8,
                                                   (z - num6) / math.cos(num8))
        point3dCollection_1 = []
        point3dArray = [
            point3d3, point3d5, point3d7, point3d8, point3d6, point3d4
        ]
        point3dCollection_1.extend(point3dArray)
        z1 = (metres1 - point3d1.get_Z() - 5) / percent
        point3d9 = point3d if (self.parametersPanel.chbCatH.isChecked()
                               ) else MathHelper.distanceBearingPoint(
                                   point3d, num, min([600, num5]))
        polylineArea_0 = PolylineArea(None, point3d9.smethod_167(0), z1)
        point3d10 = MathHelper.distanceBearingPoint(point3d9, num1, z1)
        point3d11 = MathHelper.distanceBearingPoint(point3d9, num, z1)
        polylineArea_1 = PolylineArea()
        polylineArea_1.method_3(
            point3d10,
            MathHelper.smethod_57(TurnDirection.Right, point3d10, point3d11,
                                  point3d9))
        polylineArea_1.method_1(point3d11)
        if (point3dCollection_0 != None):
            item = [
                point3d1, point3dCollection_0[1], point3dCollection_0[0],
                point3d9
            ]
            polylineArea_1.method_7(item)
        polylineArea_2 = PolylineArea()
        polylineArea_2.method_3(
            point3d10,
            MathHelper.smethod_57(TurnDirection.Left, point3d10, point3d11,
                                  point3d9))
        polylineArea_2.method_1(point3d11)
        if (point3dCollection_0 != None):
            item1 = [
                point3d1, point3dCollection_0[2], point3dCollection_0[3],
                point3d9
            ]
            polylineArea_2.method_7(item1)
        return (True, point3dCollection_0, point3dCollection_1, polylineArea_0,
                polylineArea_1, polylineArea_2)
    def addObstacleToModel(self, obstacle, checkResult=None):
        standardItemList = []
        # obstacle.positionDegree = QgisHelper.Meter2Degree(obstacle.Position.x(), obstacle.Position.y())
        standardItem = QStandardItem(str(obstacle.featureId))
        standardItem.setData(obstacle.featureId)
        standardItemList.append(standardItem)

        standardItem = QStandardItem(str(obstacle.layerId))
        standardItem.setData(obstacle.layerId)
        standardItemList.append(standardItem)

        standardItem = QStandardItem(str(obstacle.name))
        standardItem.setData(obstacle.name)
        standardItemList.append(standardItem)

        standardItem = QStandardItem(str(obstacle.Position.x()))
        standardItem.setData(obstacle.Position.x())
        standardItemList.append(standardItem)

        standardItem = QStandardItem(str(obstacle.Position.y()))
        standardItem.setData(obstacle.Position.y())
        standardItemList.append(standardItem)

        value = QVariant(QgisHelper.strDegree(obstacle.positionDegree.y()))
        standardItem = QStandardItem(value.toString())
        standardItem.setData(obstacle.positionDegree.y())
        standardItemList.append(standardItem)
        strV = QgisHelper.strDegree(obstacle.positionDegree.y())

        value = QVariant(QgisHelper.strDegree(obstacle.positionDegree.x()))
        standardItem = QStandardItem(value.toString())
        standardItem.setData(obstacle.positionDegree.x())
        standardItemList.append(standardItem)

        standardItem = QStandardItem(str(obstacle.Position.z()))
        standardItem.setData(obstacle.Position.z())
        standardItemList.append(standardItem)

        standardItem = QStandardItem(
            str(Unit.ConvertMeterToFeet(obstacle.Position.z())))
        standardItem.setData(Unit.ConvertMeterToFeet(obstacle.Position.z()))
        standardItemList.append(standardItem)

        standardItem = QStandardItem(str(obstacle.trees))
        standardItem.setData(obstacle.trees)
        standardItemList.append(standardItem)

        standardItem = QStandardItem(
            str(Unit.ConvertMeterToFeet(obstacle.trees)))
        standardItem.setData(Unit.ConvertMeterToFeet(obstacle.trees))
        standardItemList.append(standardItem)

        #         for i in range(len(standardItemList), self.source.columnCount()):
        #             standardItemList.append(QStandardItem("None"))

        self.source.appendRow(standardItemList)

        standardItem = QStandardItem(str(obstacle.mocMultiplier))
        standardItem.setData(obstacle.mocMultiplier)
        self.source.setItem(self.source.rowCount() - 1,
                            self.IndexMocMultiplier, standardItem)
Example #12
0
    def btnConstruct2_Click(self):
        qgsLayerTreeView = define._mLayerTreeView
        groupName = self.surfaceType2
        layerTreeModel = qgsLayerTreeView.layerTreeModel()
        layerTreeGroup = layerTreeModel.rootGroup()
        rowCount = layerTreeModel.rowCount()
        groupExisting = False
        if rowCount > 0:
            for i in range(rowCount):
                qgsLayerTreeNode = layerTreeModel.index2node(
                    layerTreeModel.index(i, 0))
                if qgsLayerTreeNode.nodeType() == 0:
                    qgsLayerTreeNode._class_ = QgsLayerTreeGroup
                    if isinstance(qgsLayerTreeNode, QgsLayerTreeGroup
                                  ) and qgsLayerTreeNode.name() == groupName:
                        groupExisting = True

        if groupExisting:
            if len(self.resultLayerList2) > 0:
                QgisHelper.removeFromCanvas(define._canvas,
                                            self.resultLayerList2)
                self.resultLayerList2 = []
            else:
                QMessageBox.warning(
                    self, "Warning", "Please remove \"" + self.surfaceType2 +
                    "\" layer group from LayerTreeView.")
                return
        num = None
        num1 = None
        line = None
        polyline = None
        point3d = None
        point3d1 = None
        point3d2 = None
        point3d3 = None
        point3d4 = None
        point3d5 = None
        point3d6 = None
        point3d7 = None
        point3d8 = None
        ficorResult = None
        point = []
        value = None
        resultPolylineAreaList = []
        # if (!AcadHelper.Ready)
        # {
        #     return;
        # }
        # if (!self.method_27(true))
        # {
        #     return;
        # }
        # string constructionLayer = base.ConstructionLayer;
        point3d9 = self.parametersPanel.pnlTrackingPosition.Point3d
        point3d10 = self.parametersPanel.pnlIntersectingPosition.Point3d
        value1 = float(self.parametersPanel.txtTrackingRadialTrack.Value)
        value2 = float(self.parametersPanel.txtIntersectingRadialTrack.Value)
        num2 = Unit.ConvertDegToRad(value1)
        num3 = Unit.ConvertDegToRad(value2)
        if (self.parametersPanel.cmbTrackingType.currentIndex() != 0):
            num = Unit.ConvertDegToRad(2.4) if (
                self.parametersPanel.cmbTrackingType.currentIndex() != 1
            ) else Unit.ConvertDegToRad(6.9)
        else:
            num = Unit.ConvertDegToRad(5.2)
        num1 = Unit.ConvertDegToRad(6.2) if (
            self.parametersPanel.cmbIntersectingType.currentIndex() != 0
        ) else Unit.ConvertDegToRad(4.5)
        num4 = num2 + num
        point3d11 = MathHelper.distanceBearingPoint(point3d9, num4, 100)
        num5 = num2 - num
        point3d12 = MathHelper.distanceBearingPoint(point3d9, num5, 100)
        point3d13 = MathHelper.distanceBearingPoint(point3d9, num2, 100)

        point3d = MathHelper.getIntersectionPoint(
            point3d9, point3d13, point3d10,
            MathHelper.distanceBearingPoint(point3d10, num3, 100))
        if (self.parametersPanel.cmbIntersectingType.currentIndex() >= 2):
            metres = Distance(
                float(self.parametersPanel.txtIntersectingDistance.text()),
                DistanceUnits.NM).Metres
            if (self.parametersPanel.chb0dmeAtThr.isChecked()):
                value = Distance(
                    float(self.parametersPanel.txtDmeOffset.text()))
                metres = metres + value.Metres
            num6 = 460 + metres * 0.0125
            num7 = metres + num6
            num8 = metres - num6
            if (MathHelper.smethod_102(point3d9, point3d10)):
                point3d14 = MathHelper.distanceBearingPoint(
                    point3d9, num4, num8)
                point3d15 = MathHelper.distanceBearingPoint(
                    point3d9, num2, num8)
                point3d16 = MathHelper.distanceBearingPoint(
                    point3d9, num5, num8)
                point3d17 = MathHelper.distanceBearingPoint(
                    point3d9, num5, num7)
                point3d18 = MathHelper.distanceBearingPoint(
                    point3d9, num2, num7)
                point3d19 = MathHelper.distanceBearingPoint(
                    point3d9, num4, num7)
                point = [point3d14, point3d16, point3d17, point3d19]
                polyline = AcadHelper.smethod_126(point)
                polyline.SetBulgeAt(
                    0, MathHelper.smethod_60(point3d14, point3d15, point3d16))
                polyline.SetBulgeAt(
                    2, MathHelper.smethod_60(point3d17, point3d18, point3d19))
                polyline.set_Closed(True)
                resultPolylineAreaList.append(polyline)
                # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer);
                point3d14 = MathHelper.distanceBearingPoint(
                    point3d9, num2, num8)
                point3d15 = MathHelper.distanceBearingPoint(
                    point3d9, num2, num7)
                resultPolylineAreaList.append(
                    PolylineArea([point3d14, point3d15]))
                # line = new Line(point3d14, point3d15);
                #         AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer);
                point3d14 = MathHelper.distanceBearingPoint(
                    point3d9, num4, metres)
                point3d15 = MathHelper.distanceBearingPoint(
                    point3d9, num2, metres)
                point3d16 = MathHelper.distanceBearingPoint(
                    point3d9, num5, metres)
                point = [point3d14, point3d16]
                polyline = AcadHelper.smethod_126(point)
                polyline.SetBulgeAt(
                    0, MathHelper.smethod_60(point3d14, point3d15, point3d16))
                resultPolylineAreaList.append(polyline)
                # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer);
            else:
                ficorResult1 = self.method_37(point3d10, num2, point3d9,
                                              point3d13, num8, FicorInput.C)
                ficorResult2 = self.method_37(point3d10, num2, point3d9,
                                              point3d13, metres, FicorInput.C)
                ficorResult3 = self.method_37(point3d10, num2, point3d9,
                                              point3d13, num7, FicorInput.C)
                if (ficorResult1.Status != FicorStatus.TWO
                        and ficorResult2.Status != FicorStatus.TWO):
                    if (ficorResult3.Status == FicorStatus.TWO):
                        ficorResult = FicorResult(None, FicorStatus.TWO)
                    else:
                        ficorResult = FicorResult(None, ficorResult2.Status)
                else:
                    ficorResult = FicorResult(None, FicorStatus.TWO)
                if (ficorResult.Status != FicorStatus.NID):
                    ficorInput = FicorInput.F
                    num9 = 1
                    if (ficorResult.Status == FicorStatus.TWO):
                        QMessageBox.warning(
                            self, "Infomation",
                            Messages.TWO_POSSIBLE_FIX_POSITIONS)
                        ficorInput = FicorInput.L
                        num9 = 2
                    num10 = 0
                    while (num10 < num9):
                        ficorResult4 = self.method_37(point3d10, num4,
                                                      point3d9, point3d11,
                                                      num8, ficorInput)
                        ficorResult5 = self.method_37(point3d10, num2,
                                                      point3d9, point3d13,
                                                      num8, ficorInput)
                        ficorResult6 = self.method_37(point3d10, num5,
                                                      point3d9, point3d12,
                                                      num8, ficorInput)
                        ficorResult7 = self.method_37(point3d10, num4,
                                                      point3d9, point3d11,
                                                      metres, ficorInput)
                        ficorResult8 = self.method_37(point3d10, num2,
                                                      point3d9, point3d13,
                                                      metres, ficorInput)
                        ficorResult9 = self.method_37(point3d10, num5,
                                                      point3d9, point3d12,
                                                      metres, ficorInput)
                        ficorResult10 = self.method_37(point3d10, num4,
                                                       point3d9, point3d11,
                                                       num7, ficorInput)
                        ficorResult11 = self.method_37(point3d10, num2,
                                                       point3d9, point3d13,
                                                       num7, ficorInput)
                        ficorResult12 = self.method_37(point3d10, num5,
                                                       point3d9, point3d12,
                                                       num7, ficorInput)
                        if (ficorResult4.Status == FicorStatus.NID
                                or ficorResult5.Status == FicorStatus.NID
                                or ficorResult6.Status == FicorStatus.NID
                                or ficorResult7.Status == FicorStatus.NID
                                or ficorResult9.Status == FicorStatus.NID
                                or ficorResult10.Status == FicorStatus.NID
                                or ficorResult11.Status == FicorStatus.NID
                                or ficorResult12.Status == FicorStatus.NID
                                or ficorResult8.Status == FicorStatus.NID):
                            eRRFAILEDTOCONSTRUCTTHEFIXAUTOMATICALLY = Messages.ERR_FAILED_TO_CONSTRUCT_THE_FIX_AUTOMATICALLY
                            value = Distance(
                                float(self.parametersPanel.
                                      txtIntersectingDistance.text()),
                                DistanceUnits.NM)
                            str000 = str(round(value.Metres, 4)) + "m"
                            value = str(round(Distance(num6).Metres, 4)) + "m"
                            QMessageBox.warning(
                                self, "Error",
                                eRRFAILEDTOCONSTRUCTTHEFIXAUTOMATICALLY %
                                (str000, value))
                            #                     ErrorMessageBox.smethod_0(self, string.Format(eRRFAILEDTOCONSTRUCTTHEFIXAUTOMATICALLY, str, value.method_0(":m")));
                            return
                        elif (MathHelper.calcDistance(point3d9,
                                                      ficorResult8.Point)
                              < MathHelper.calcDistance(
                                  ficorResult5.Point, ficorResult8.Point)):
                            QMessageBox.warning(
                                self, "Error", Messages.
                                ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE)
                            #                     ErrorMessageBox.smethod_0(self, Messages.ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE);
                            return
                        else:
                            point = [
                                ficorResult4.Point, ficorResult6.Point,
                                ficorResult12.Point, ficorResult10.Point
                            ]
                            polyline = AcadHelper.smethod_126(point)
                            polyline.SetBulgeAt(
                                0,
                                MathHelper.smethod_60(ficorResult4.Point,
                                                      ficorResult5.Point,
                                                      ficorResult6.Point))
                            polyline.SetBulgeAt(
                                2,
                                MathHelper.smethod_60(ficorResult12.Point,
                                                      ficorResult11.Point,
                                                      ficorResult10.Point))
                            polyline.set_Closed(True)
                            resultPolylineAreaList.append(polyline)
                            # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer);
                            resultPolylineAreaList.append(
                                PolylineArea(
                                    [ficorResult5.Point, ficorResult11.Point]))
                            # line = new Line(ficorResult5.Point, ficorResult11.Point);
                            # AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer);
                            point = [ficorResult7.Point, ficorResult9.Point]
                            polyline = AcadHelper.smethod_126(point)
                            polyline.SetBulgeAt(
                                0,
                                MathHelper.smethod_60(ficorResult7.Point,
                                                      ficorResult8.Point,
                                                      ficorResult9.Point))
                            resultPolylineAreaList.append(polyline)
                            # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer);
                            if (ficorResult.Status == FicorStatus.TWO):
                                ficorInput = FicorInput.S
                            num10 += 1
                else:
                    QMessageBox.warning(
                        self, "Error", Messages.
                        ERR_RADIAL_TRACK_DME_DISTANCE_DO_NOT_INTERSECT)
                    #             ErrorMessageBox.smethod_0(self, Messages.ERR_RADIAL_TRACK_DME_DISTANCE_DO_NOT_INTERSECT);
                    return
        elif (point3d == None):
            QMessageBox.warning(self, "Error",
                                Messages.ERR_RADIALS_TRACKS_ARE_PARALLEL)
            #     ErrorMessageBox.smethod_0(self, Messages.ERR_RADIALS_TRACKS_ARE_PARALLEL);
            return
        elif (MathHelper.smethod_99(MathHelper.getBearing(point3d9, point3d),
                                    num2, 0.001)):
            point3d20 = MathHelper.distanceBearingPoint(
                point3d10, num3 + num1, 100)
            point3d21 = MathHelper.distanceBearingPoint(
                point3d10, num3 - num1, 100)
            point3d1 = MathHelper.getIntersectionPoint(point3d9, point3d12,
                                                       point3d10, point3d20)
            point3d2 = MathHelper.getIntersectionPoint(point3d9, point3d12,
                                                       point3d10, point3d21)
            point3d3 = MathHelper.getIntersectionPoint(point3d9, point3d11,
                                                       point3d10, point3d21)
            point3d4 = MathHelper.getIntersectionPoint(point3d9, point3d11,
                                                       point3d10, point3d20)
            point3d5 = MathHelper.getIntersectionPoint(point3d9, point3d,
                                                       point3d10, point3d20)
            point3d6 = MathHelper.getIntersectionPoint(point3d9, point3d,
                                                       point3d10, point3d21)
            point3d7 = MathHelper.getIntersectionPoint(point3d9, point3d11,
                                                       point3d10, point3d)
            point3d8 = MathHelper.getIntersectionPoint(point3d9, point3d12,
                                                       point3d10, point3d)
            if (MathHelper.calcDistance(point3d9, point3d) <
                    MathHelper.calcDistance(point3d5, point3d)
                    or MathHelper.calcDistance(point3d10, point3d) <
                    MathHelper.calcDistance(point3d5, point3d)
                    or MathHelper.calcDistance(point3d9, point3d) <
                    MathHelper.calcDistance(point3d8, point3d)
                    or MathHelper.calcDistance(point3d10, point3d) <
                    MathHelper.calcDistance(point3d8, point3d)):
                QMessageBox.warning(
                    self, "Error",
                    Messages.ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE)
                #         ErrorMessageBox.smethod_0(self, Messages.ERR_FIX_TOO_CLOSE_USE_OVERHEAD_TOLERANCE);
                return
            else:
                resultPolylineAreaList.append(
                    PolylineArea([point3d5, point3d6]))
                #         line = new Line(point3d5, point3d6);
                #         AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer);
                resultPolylineAreaList.append(
                    PolylineArea([point3d7, point3d8]))
                #         line = new Line(point3d7, point3d8);
                #         AcadHelper.smethod_18(transaction, blockTableRecord, line, constructionLayer);
                point = [point3d1, point3d2, point3d3, point3d4]
                polyline = AcadHelper.smethod_126(point)
                polyline.set_Closed(True)
                resultPolylineAreaList.append(polyline)
        #         AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer);
        else:
            QMessageBox.warning(self, "Error",
                                Messages.ERR_RADIALS_TRACKS_DO_NOT_INTERSECT)
            #     ErrorMessageBox.smethod_0(self, Messages.ERR_RADIALS_TRACKS_DO_NOT_INTERSECT);
            return

        mapUnits = define._canvas.mapUnits()
        constructionLayer = AcadHelper.createVectorLayer(
            SurfaceTypes.FixConstruction, QGis.Line)

        for polylinrArea0 in resultPolylineAreaList:
            AcadHelper.setGeometryAndAttributesInLayer(constructionLayer,
                                                       polylinrArea0)
        QgisHelper.appendToCanvas(define._canvas, [constructionLayer],
                                  SurfaceTypes.FixConstruction, True)
        self.resultLayerList2 = [constructionLayer]
        QgisHelper.zoomToLayers(self.resultLayerList2)
 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
Example #14
0
 def smethod_2(position_0, position_1):
     return Distance(
         Unit.ConvertMeterToNM(
             MathHelper.calcDistance(position_0, position_1)),
         DistanceUnits.NM)
Example #15
0
 def smethod_3(position_0, double_0, distance_0):
     return MathHelper.distanceBearingPoint(position_0,
                                            Unit.ConvertDegToRad(double_0),
                                            distance_0.Metres)
    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 showMarkDaSoc(self):
        try:
            flag = FlightPlanBaseDlg.btnConstruct_Click(self)
            # if not flag:
            #     return
            point3dThr = self.parametersPanel.pnlThrPosition.Point3d
            point3dFaf = self.parametersPanel.pnlFapPosition.Point3d
            inboundTrackRad = Unit.ConvertDegToRad(self.parametersPanel.pnlInboundTrack.Value)#MathHelper.getBearing(point3dFaf, point3dThr)
            inboundTrack180Rad = MathHelper.smethod_4(inboundTrackRad + math.pi)
            estimatedAltitdeMeters = self.parametersPanel.pnlEstimatedAltitude.Value.Metres
            thrAltitudeMeters = self.parametersPanel.pnlThrPosition.Altitude().Metres
            heightLossAltitudeMeters = self.parametersPanel.pnlHeightLoss.Value.Metres
            rdhAltitudeMeters = self.parametersPanel.pnlRDH.Value.Metres
            vpa = Unit.ConvertDegToRad(self.getVPA())
            xz = self.parametersPanel.pnlDistXz.Value.Metres
            socThrDistMeters = ((estimatedAltitdeMeters - thrAltitudeMeters - heightLossAltitudeMeters) / math.tan(vpa)) + xz
            daThrDistMeters = (estimatedAltitdeMeters - thrAltitudeMeters - rdhAltitudeMeters) / math.tan(vpa)

            sockBearing = inboundTrackRad
            # if socThrDistMeters < 0:
            #     sockBearing = inboundTrack180Rad
            #     socThrDistMeters = math.fabs(socThrDistMeters)
            # else:
            #     sockBearing = inboundTrackRad
            daBearing = inboundTrack180Rad
            # if daThrDistMeters < 0:
            #     daBearing = inboundTrackRad
            #     daThrDistMeters = math.fabs(daThrDistMeters)
            # else:
            #     daBearing = inboundTrack180Rad
            self.socPoint3d = MathHelper.distanceBearingPoint(point3dThr, sockBearing, -socThrDistMeters).smethod_167(self.calcSocAltitude())
            self.daPoint3d = MathHelper.distanceBearingPoint(point3dThr, daBearing, daThrDistMeters)

            daSocLayer = AcadHelper.createVectorLayer("DA_SOC_" + self.surfaceType, QGis.Point)
            AcadHelper.setGeometryAndAttributesInLayer(daSocLayer, self.socPoint3d, False, {"Caption":"SOC"})
            AcadHelper.setGeometryAndAttributesInLayer(daSocLayer, self.daPoint3d, False, {"Caption":"DA"})

            QgisHelper.appendToCanvas(define._canvas, [daSocLayer], self.surfaceType)

            palSetting = QgsPalLayerSettings()
            palSetting.readFromLayer(daSocLayer)
            palSetting.enabled = True
            palSetting.fieldName = "Caption"
            palSetting.isExpression = True
            palSetting.placement = QgsPalLayerSettings.AroundPoint
            palSetting.setDataDefinedProperty(QgsPalLayerSettings.Size, True, True, '8', "")
            palSetting.writeToLayer(daSocLayer)

            QgisHelper.zoomToLayers([daSocLayer])
            self.resultLayerList = [daSocLayer]

            # # show SOC Mark
            # point3d = MathHelper.distanceBearingPoint(self.socPoint3d, Unit.ConvertDegToRad(450) - 0, 100)
            # point3d1 = MathHelper.distanceBearingPoint(self.socPoint3d, Unit.ConvertDegToRad(450) - math.pi / 2, 100)
            # point3d2 = MathHelper.distanceBearingPoint(self.socPoint3d, Unit.ConvertDegToRad(450) - math.pi, 100)
            # point3d3 = MathHelper.distanceBearingPoint(self.socPoint3d, Unit.ConvertDegToRad(450) - (math.pi * 3) / 2 , 100)
            #
            # if self.socRubber == None:
            #     self.socRubber = QgsRubberBand(define._canvas, QGis.Line)
            #     self.socRubber.setColor(Qt.yellow)
            # else:
            #     self.socRubber.reset(QGis.Line)
            # self.socRubber.addGeometry(QgsGeometry.fromPolyline([point3d, point3d2]), None)
            # self.socRubber.addGeometry(QgsGeometry.fromPolyline([point3d1, point3d3]), None)
            # circle = MathHelper.constructCircle(self.socPoint3d, 100, 16)
            # self.socRubber.addGeometry(QgsGeometry.fromPolyline(circle), None)
            # self.socRubber.show()
            #
            # self.socAnnotation.setMapPosition(self.socPoint3d)
            # self.socAnnotation.show()
            #
            # # show DA Mark
            # point3d = MathHelper.distanceBearingPoint(self.daPoint3d, Unit.ConvertDegToRad(450) - 0, 100)
            # point3d1 = MathHelper.distanceBearingPoint(self.daPoint3d, Unit.ConvertDegToRad(450) - math.pi / 2, 100)
            # point3d2 = MathHelper.distanceBearingPoint(self.daPoint3d, Unit.ConvertDegToRad(450) - math.pi, 100)
            # point3d3 = MathHelper.distanceBearingPoint(self.daPoint3d, Unit.ConvertDegToRad(450) - (math.pi * 3) / 2 , 100)
            #
            # if self.daRubber == None:
            #     self.daRubber = QgsRubberBand(define._canvas, QGis.Line)
            #     self.daRubber.setColor(Qt.yellow)
            # else:
            #     self.daRubber.reset(QGis.Line)
            # self.daRubber.addGeometry(QgsGeometry.fromPolyline([point3d, point3d2]), None)
            # self.daRubber.addGeometry(QgsGeometry.fromPolyline([point3d1, point3d3]), None)
            # circle = MathHelper.constructCircle(self.daPoint3d, 100, 16)
            # self.daRubber.addGeometry(QgsGeometry.fromPolyline(circle), None)
            # self.daRubber.show()
            #
            # self.daAnnotation.setMapPosition(self.daPoint3d)
            # self.daAnnotation.show()

            self.putDistances()
            return daSocLayer
        except:
            pass
    def method_37(self, point3d_0, double_0, double_1, double_2):#, out Point3dCollection point3dCollection_0)
        point3dCollection_0 = Point3dCollection();
        if (self.parametersPanel.cmbApproachType.SelectedIndex != 0):
            if (self.parametersPanel.cmbRwyCode.SelectedIndex != 0):
                num2 = 120 if (self.parametersPanel.cmbRwyCode.SelectedIndex != 1 or not self.parametersPanel.chbAdCodeF.Checked) else 155
            else:
                num2 = 90;
            point3d = MathHelper.distanceBearingPoint(point3d_0, double_0, 60);
            point3d1 = MathHelper.distanceBearingPoint(point3d, double_0 + 1.5707963267949, num2 / 2).smethod_167(point3d_0.get_Z());
            point3d4 = MathHelper.distanceBearingPoint(point3d, double_0 - 1.5707963267949, num2 / 2).smethod_167(point3d_0.get_Z());
            point3d2 = MathHelper.distanceBearingPoint(point3d1, double_0, double_2).smethod_167(point3d_0.get_Z() + double_1);
            point3d3 = MathHelper.distanceBearingPoint(point3d4, double_0, double_2).smethod_167(point3d_0.get_Z() + double_1);
        else:
            try:
                metres = self.parametersPanel.txtStripWidth.Value.Metres
            except ValueError:
                raise UserWarning, "Strip Width is invalid!"
            point3d7 = MathHelper.distanceBearingPoint(point3d_0, double_0, 1400);
            point3d8 = MathHelper.distanceBearingPoint(point3d7, double_0 - 1.5707963267949, 100)
            try:
                dblTrack = float(self.parametersPanel.txtTrack.Value)
            except ValueError:
                raise UserWarning, "Track is invalid!"
            try:
                dblRwyDir = float(self.parametersPanel.txtRwyDir.Value)
            except ValueError:
                raise UserWarning, "Runway Direction is invalid!"
            listTurn = []
            num3 = MathHelper.smethod_77(dblTrack, dblRwyDir, AngleUnits.Degrees, listTurn)
            turnDirection = listTurn[0]
            if (num3 > 31):
                raise UserWarning, Messages.ERR_VSS_COURSE_CHANGE
            
            try:
                point3d5 = MathHelper.getIntersectionPoint(point3d7, point3d8, self.parametersPanel.txtTrack.captureRadialTool.startPoint, self.parametersPanel.txtTrack.captureRadialTool.endPoint)
            except AttributeError:
                raise UserWarning, "Please pick up Inbound Track!"
            if point3d5 == None:
                raise UserWarning, Messages.ERR_VSS_INTERSECTION_POINT_1400m
            num4 = MathHelper.calcDistance(point3d7, point3d5);
            if (num4 > 151):
                raise UserWarning, Messages.ERR_VSS_GATE
            try:
                dblThrFaf = float(self.parametersPanel.txtThrFaf.Value.Metres)
            except ValueError:
                raise UserWarning, "ThrFaf is invalid!"
            point3d6 = MathHelper.getIntersectionPoint(point3d_0, MathHelper.distanceBearingPoint(point3d_0, double_0, 100), self.parametersPanel.txtTrack.captureRadialTool.startPoint, self.parametersPanel.txtTrack.captureRadialTool.endPoint)
            if point3d6 == None:
                if (not MathHelper.smethod_115(point3d5, point3d_0, point3d7)):
                    num = 0.15;
                    num1 = (num4 + 201) / 1340;
                else:
                    num = (num4 + 201) / 1340;
                    num1 = 0.15;
            elif (not MathHelper.smethod_119(point3d6, point3d7, point3d8) and MathHelper.calcDistance(point3d6, point3d7) > 100):
                if (MathHelper.calcDistance(point3d6, point3d7) <= 1400):
                    raise UserWarning, Messages.ERR_VSS_INBOUND_TRACK
                if (not MathHelper.smethod_115(point3d5, point3d_0, point3d7)):
                    num = 0.15;
                    num1 = (num4 + 201) / 1340;
                else:
                    num = (num4 + 201) / 1340;
                    num1 = 0.15;
            elif (MathHelper.calcDistance(point3d6, point3d7) < dblThrFaf - 1400):
                point3d = MathHelper.distanceBearingPoint(point3d6, MathHelper.getBearing(self.parametersPanel.txtTrack.captureRadialTool.endPoint, self.parametersPanel.txtTrack.captureRadialTool.startPoint), 100);
                if (not MathHelper.smethod_115(point3d, point3d_0, point3d7)):
                    num = 0.15;
                    num1 = math.tan(Unit.ConvertDegToRad(num3) + math.atan(0.15));
                else:
                    num = math.tan(Unit.ConvertDegToRad(num3) + math.atan(0.15));
                    num1 = 0.15;
            elif (not MathHelper.smethod_115(point3d5, point3d_0, point3d7)):
                num = 0.15;
                num1 = (num4 + 201) / 1340;
            else:
                num = (num4 + 201) / 1340;
                num1 = 0.15;
            point3d = MathHelper.distanceBearingPoint(point3d_0, double_0, 60);
            point3d1 = MathHelper.distanceBearingPoint(point3d, double_0 - 1.5707963267949, metres / 2).smethod_167(point3d_0.get_Z());
            point3d4 = MathHelper.distanceBearingPoint(point3d, double_0 + 1.5707963267949, metres / 2).smethod_167(point3d_0.get_Z());
            point3d = MathHelper.distanceBearingPoint(point3d1, double_0, double_2);
            point3d2 = MathHelper.distanceBearingPoint(point3d, double_0 - 1.5707963267949, num * double_2).smethod_167(point3d_0.get_Z() + double_1);
            point3d = MathHelper.distanceBearingPoint(point3d4, double_0, double_2);
            point3d3 = MathHelper.distanceBearingPoint(point3d, double_0 + 1.5707963267949, num1 * double_2).smethod_167(point3d_0.get_Z() + double_1);

        point3dCollection_0.Add(point3d1);
        point3dCollection_0.Add(point3d2);
        point3dCollection_0.Add(point3d3);
        point3dCollection_0.Add(point3d4);
        return True, point3dCollection_0
    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
Example #20
0
    def btnConstruct_Click(self):
        flag = FlightPlanBaseSimpleDlg.btnConstruct_Click(self)
        if not flag:
            return
        num = 0.0
        point3d = Point3D()
        point3d1 = Point3D()
        if not self.method_27(True):
            return

        point3d2 = self.parametersPanel.pnlTHR.getPoint3D()
        point3d3 = self.parametersPanel.pnlNavAid.getPoint3D()
        num1 = Unit.ConvertDegToRad(
            float(self.parametersPanel.txtDirection.Value))
        point3d4 = MathHelper.distanceBearingPoint(point3d2,
                                                   num1 + 3.14159265358979,
                                                   1400)
        num2 = -1
        if MathHelper.smethod_115(point3d3, point3d2, point3d4):
            num2 = 1
        point3d5 = MathHelper.distanceBearingPoint(
            point3d4, num2 * 1.5707963267949 + num1, 150)
        point3d6 = MathHelper.distanceBearingPoint(point3d5,
                                                   num1 + 3.14159265358979,
                                                   17120)
        if self.parametersPanel.cmbCategory.currentIndex() != 1:
            num = 0.267949192
        elif self.parametersPanel.cmbCategory.currentIndex() == 1:
            num = 0.577350269
        point3d7 = MathHelper.distanceBearingPoint(
            point3d6, num1 - num2 * 1.5707963267949, 150 + num * 17120)
        MathHelper.distanceBearingPoint(point3d5, num1, 150 / num)
        point3d = MathHelper.getIntersectionPoint(
            point3d3,
            MathHelper.distanceBearingPoint(point3d3, num1 + 1.5707963267949,
                                            100), point3d2, point3d4)
        if point3d == None:
            raise UserWarning, Messages.ERR_FAILED_TO_CALCULATE_INTERSECTION_POINT
        num3 = MathHelper.calcDistance(point3d3, point3d) / 0.087488664
        if MathHelper.calcDistance(point3d, point3d4) >= num3:
            point3d1 = point3d4
            MathHelper.distanceBearingPoint(point3d6,
                                            num1 - num2 * 1.5707963267949,
                                            1525.321791)
        else:
            point3d1 = MathHelper.distanceBearingPoint(point3d,
                                                       num1 + 3.14159265358979,
                                                       num3)
            MathHelper.distanceBearingPoint(
                point3d6, num1 - num2 * 1.5707963267949, 150 + 0.087488664 *
                (17120 - MathHelper.calcDistance(point3d4, point3d1)))
        MathHelper.distanceBearingPoint(point3d4, num1 + 3.14159265358979,
                                        17120)

        constructionLayer = AcadHelper.createVectorLayer(
            "AAConstruction", QGis.Line)
        AcadHelper.setGeometryAndAttributesInLayer(
            constructionLayer, PolylineArea([point3d7, point3d4]))
        AcadHelper.setGeometryAndAttributesInLayer(
            constructionLayer, PolylineArea([point3d1, point3d4, point3d5]))

        QgisHelper.appendToCanvas(define._canvas, [constructionLayer],
                                  SurfaceTypes.ApproachAlignment)
        QgisHelper.zoomToLayers([constructionLayer])
        self.resultLayerList = [constructionLayer]
Example #21
0
    def btnConstruct_Click(self):
        qgsLayerTreeView = define._mLayerTreeView
        groupName = self.surfaceType1
        layerTreeModel = qgsLayerTreeView.layerTreeModel()
        layerTreeGroup = layerTreeModel.rootGroup()
        rowCount = layerTreeModel.rowCount()
        groupExisting = False
        if rowCount > 0:
            for i in range(rowCount):
                qgsLayerTreeNode = layerTreeModel.index2node(
                    layerTreeModel.index(i, 0))
                if qgsLayerTreeNode.nodeType() == 0:
                    qgsLayerTreeNode._class_ = QgsLayerTreeGroup
                    if isinstance(qgsLayerTreeNode, QgsLayerTreeGroup
                                  ) and qgsLayerTreeNode.name() == groupName:
                        groupExisting = True

        if groupExisting:
            if len(self.resultLayerList1) > 0:
                QgisHelper.removeFromCanvas(define._canvas,
                                            self.resultLayerList1)
                self.resultLayerList1 = []
            else:
                QMessageBox.warning(
                    self, "Warning", "Please remove \"" + self.surfaceType1 +
                    "\" layer group from LayerTreeView.")
                return

        num = None
        num1 = None
        num2 = None
        num3 = None
        point3d = None
        resultPolylineAreaList = []
        # if (!AcadHelper.Ready)
        # {
        #     return;
        # }
        # if (!self.method_27(true))
        # {
        #     return;
        # }
        # string constructionLayer = base.ConstructionLayer;
        point3d1 = self.parametersPanel.pnlNavAid.Point3d
        value = float(self.parametersPanel.txtTrackRadial.Value)
        metres = Altitude(float(self.parametersPanel.txtAltitude.text()),
                          AltitudeUnits.FT).Metres
        z = metres - point3d1.get_Z()
        if (self.parametersPanel.cmbNavAidType.currentIndex() != 0):
            num = 450 - value + 90
            num1 = 15
            num2 = 25
            num3 = z * 0.839099631
        else:
            num = 450 - value + 90
            num1 = 5
            num2 = 15
            num3 = z * 1.191753593
        num4 = Unit.ConvertDegToRad(num1)
        num5 = Unit.ConvertDegToRad(360 - num1)
        num6 = Unit.ConvertDegToRad(180 - num2)
        num7 = Unit.ConvertDegToRad(180 + num2)
        num8 = 0
        num9 = Unit.ConvertDegToRad(180)
        point3d2 = MathHelper.distanceBearingPoint(point3d1, num4, num3)
        point3d3 = MathHelper.distanceBearingPoint(point3d1, num5, num3)
        point3d = MathHelper.smethod_68(
            point3d2, MathHelper.distanceBearingPoint(point3d1, num8, num3),
            point3d3)
        if (point3d == None):
            QMessageBox.warning(self, "Error",
                                Messages.ERR_FAILED_TO_CALCULATE_CENTER_POINT)
            return
        #     throw new Exception(Messages.ERR_FAILED_TO_CALCULATE_CENTER_POINT);
        num10 = MathHelper.smethod_55(
            point3d2, point3d3, MathHelper.calcDistance(point3d2, point3d))
        point3d2 = MathHelper.distanceBearingPoint(point3d1, num6, num3)
        point3d3 = MathHelper.distanceBearingPoint(point3d1, num7, num3)
        point3d = MathHelper.smethod_68(
            point3d2, MathHelper.distanceBearingPoint(point3d1, num9, num3),
            point3d3)
        if (point3d == None):
            QMessageBox.warning(self, "Error",
                                Messages.ERR_FAILED_TO_CALCULATE_CENTER_POINT)
        #     throw new Exception(Messages.ERR_FAILED_TO_CALCULATE_CENTER_POINT);
        num11 = MathHelper.smethod_55(
            point3d2, point3d3, MathHelper.calcDistance(point3d2, point3d))
        matrix3d = Matrix3d.Rotation(Unit.ConvertDegToRad(num),
                                     Vector3d(0, 0, 1), point3d1)
        point3d2 = MathHelper.distanceBearingPoint(point3d1, num8, num3)
        point3d3 = MathHelper.distanceBearingPoint(point3d1, num9, num3)
        line = PolylineArea([point3d2, point3d3])
        resultPolylineAreaList.append(
            self.TransformBy(line, Unit.ConvertDegToRad(value),
                             self.parametersPanel.pnlNavAid.Point3d)
        )  #.TransformBy(matrix3d))
        point3d2 = MathHelper.distanceBearingPoint(point3d1, num6, num3)
        point3d3 = MathHelper.distanceBearingPoint(point3d1, num4, num3)
        point3d4 = MathHelper.distanceBearingPoint(point3d1, num5, num3)
        point3d5 = MathHelper.distanceBearingPoint(point3d1, num7, num3)
        point3dArray = [point3d2, point3d3, point3d4, point3d5, point3d2]
        polyline = AcadHelper.smethod_126(point3dArray)
        if self.parametersPanel.cmbNavAidType.currentIndex() == 0:
            num10 = 0.0436609429083
            num11 = 0.131652497586
        else:
            num10 = 0.131652497586
            num11 = 0.221694662642
        polyline.SetBulgeAt(1, num10)
        polyline.SetBulgeAt(3, num11)
        # polyline.set_Elevation(point3d1.get_Z());
        resultPolylineAreaList.append(
            self.TransformBy(polyline, Unit.ConvertDegToRad(value),
                             self.parametersPanel.pnlNavAid.Point3d)
        )  #polyline.TransformBy(matrix3d))
        # polyline.TransformBy(matrix3d);
        # AcadHelper.smethod_18(transaction, blockTableRecord, polyline, constructionLayer);
        # transaction.Commit();
        # AcadHelper.smethod_5();
        mapUnits = define._canvas.mapUnits()
        constructionLayer = AcadHelper.createVectorLayer(
            SurfaceTypes.OverheadTolerance, QGis.Line)
        for polylinrArea0 in resultPolylineAreaList:
            AcadHelper.setGeometryAndAttributesInLayer(constructionLayer,
                                                       polylinrArea0)
        QgisHelper.appendToCanvas(define._canvas, [constructionLayer],
                                  SurfaceTypes.OverheadTolerance, True)
        self.resultLayerList1 = [constructionLayer]
        QgisHelper.zoomToLayers(self.resultLayerList1)
    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
Example #23
0
    def initParametersPan(self):
        self.parametersPanel.pnlNavAid = PositionPanel(
            self.parametersPanel.gbNavAid)
        #         self.parametersPanel.pnlWaypoint.groupBox.setTitle("FAWP")
        self.parametersPanel.pnlNavAid.btnCalculater.hide()
        #         self.parametersPanel.pnlNavAid.hideframe_Altitude()
        self.parametersPanel.pnlNavAid.setObjectName("pnlNavAid")
        self.parametersPanel.vl_NavAid.addWidget(
            self.parametersPanel.pnlNavAid)
        # self.connect(self.parametersPanel.pnlNavAid, SIGNAL("positionChanged"), self.initResultPanel)

        self.parametersPanel.cmbNavAidType.addItems(
            [Captions.VOR, Captions.NDB])

        #         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.altitudeFtChanged)
        self.parametersPanel.txtAltitudeM.textChanged.connect(
            self.altitudeMChanged)

        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")

        # FixConstruction Part
        self.parametersPanel.pnlTrackingPosition = PositionPanel(
            self.parametersPanel.gbTrackingAid)
        self.parametersPanel.pnlTrackingPosition.btnCalculater.hide()
        self.parametersPanel.pnlTrackingPosition.hideframe_Altitude()
        self.parametersPanel.pnlTrackingPosition.setObjectName(
            "pnlTrackingPosition")
        self.parametersPanel.vl_gbTrackingAid.insertWidget(
            1, self.parametersPanel.pnlTrackingPosition)
        # self.connect(self.parametersPanel.pnlNavAid, SIGNAL("positionChanged"), self.initResultPanel)

        self.parametersPanel.pnlIntersectingPosition = PositionPanel(
            self.parametersPanel.gbIntersectingAid)
        self.parametersPanel.pnlIntersectingPosition.btnCalculater.hide()
        self.parametersPanel.pnlIntersectingPosition.hideframe_Altitude()
        self.parametersPanel.pnlIntersectingPosition.setObjectName(
            "pnlIntersectingPosition")
        self.parametersPanel.vl_gbIntersectingAid.insertWidget(
            1, self.parametersPanel.pnlIntersectingPosition)
        # self.connect(self.parametersPanel.pnlNavAid, SIGNAL("positionChanged"), self.initResultPanel)

        self.parametersPanel.cmbTrackingType.addItems(
            [Captions.VOR, Captions.NDB, Captions.LOC])
        self.parametersPanel.cmbIntersectingType.addItems(
            [Captions.VOR, Captions.NDB, Captions.DME])

        self.parametersPanel.cmbTrackingType.currentIndexChanged.connect(
            self.method_30)
        self.parametersPanel.cmbIntersectingType.currentIndexChanged.connect(
            self.method_30)
        # self.parametersPanel.btnCaptureTrackingRadialTrack.clicked.connect(self.captureTrackingRadialTrack)
        # self.parametersPanel.btnCaptureIntersectingRadialTrack.clicked.connect(self.captureIntersectingRadialTrack)
        self.parametersPanel.btnMeasureDmeOffset.clicked.connect(
            self.measureDmeOffset)
        self.parametersPanel.btnMeasureIntersectingDistance.clicked.connect(
            self.measureIntersectingDistance)
        self.parametersPanel.chb0dmeAtThr.clicked.connect(self.method_30)
        self.method_30()
        self.parametersPanel.btnClose.clicked.connect(self.dlgClose)
        self.parametersPanel.btnClose_2.clicked.connect(self.dlgClose)
 def method_1(self, oasCategory_0, missedApproachClimbGradient_0, double_0,
              double_1, double_2, double_3, double_4):
     self.Assigned = False
     self.comTable.method_0()
     self.comSurco.method_0()
     self.comTemp1.method_0()
     self.method_7(oasCategory_0)
     if (double_0 <= 3.5):
         self.method_8(oasCategory_0, double_0, double_1,
                       AircraftSize.Standard)
     else:
         self.method_8(oasCategory_0, 3.5, double_1, AircraftSize.Standard)
     self.method_9(AircraftSize.Standard)
     self.WA = self.comSurco.AW
     self.WC = self.comSurco.CW
     self.WSA = self.comSurco.AWS
     self.WSC = self.comSurco.CWS
     if (double_0 > 3.5):
         self.WA = 0.0239 + 0.0092 * (double_0 - 2.5)
         self.WC = -6.45
     self.XA = self.comSurco.AX
     self.XB = self.comSurco.BX
     self.XC = self.comSurco.CX
     self.YA = self.comSurco.AY[missedApproachClimbGradient_0]
     self.YB = self.comSurco.BY[missedApproachClimbGradient_0]
     self.YC = self.comSurco.CY[missedApproachClimbGradient_0]
     self.ZA = self.comSurco.AZ[missedApproachClimbGradient_0]
     self.ZC = self.comSurco.CZ[missedApproachClimbGradient_0]
     if (double_0 > 3.5):
         self.ZC = -self.ZA * (-900 - 50 * ((double_0 - 3.5) / 0.1))
     if (oasCategory_0 == OasCategory.ILS2AP):
         self.comTable.method_0()
         self.comSurco.method_0()
         self.comTemp1.method_0()
         self.method_7(OasCategory.ILS2)
         if (double_0 <= 3.5):
             self.method_8(OasCategory.ILS2, double_0, double_1,
                           AircraftSize.Standard)
         else:
             self.method_8(OasCategory.ILS2, 3.5, double_1,
                           AircraftSize.Standard)
         self.method_9(AircraftSize.Standard)
         self.YA = self.comSurco.AY[missedApproachClimbGradient_0]
         self.YB = self.comSurco.BY[missedApproachClimbGradient_0]
         self.YC = self.comSurco.CY[missedApproachClimbGradient_0]
     num = max([double_4 / self.XB, double_3 + (double_4 - 3) / self.XB
                ]) - max([6 / self.XB, 30 + 3 / self.XB])
     self.WC = self.WC - (double_4 - 6) + (double_2 - 15)
     if (oasCategory_0 == OasCategory.ILS2AP):
         self.WSC = self.WSC - (double_4 - 6) + (double_2 - 15)
     self.XC = self.XC - self.XB * num + (double_2 - 15)
     self.YC = self.YC - self.YB * num + (double_2 - 15)
     if (oasCategory_0 == OasCategory.SBAS_APV1):
         num1 = math.tan(Unit.ConvertDegToRad(double_0))
         num2 = math.tan(Unit.ConvertDegToRad(0.75 * double_0))
         self.WSA = num2
         self.WSC = -50 + double_2 * num2 / num1
         self.XC = self.XC - 38
         self.YC = self.YC - 38
         if (double_0 <= 3.5):
             self.ZC = -self.ZA * -(900 + 38 / num1)
         else:
             self.WC = -6.45
             self.ZC = -self.ZA * -(900 + 38 / num1 + 50 *
                                    (double_0 - 3.5) / 0.1)
     elif (oasCategory_0 == OasCategory.SBAS_APV2):
         num3 = math.tan(Unit.ConvertDegToRad(double_0))
         num4 = math.tan(Unit.ConvertDegToRad(0.75 * double_0))
         self.WSA = num4
         self.WSC = -20 + double_2 * num4 / num3
         self.XC = self.XC - 8
         self.YC = self.YC - 8
         if (double_0 <= 3.5):
             self.ZC = -self.ZA * -(900 + 8 / num3)
         else:
             self.WC = -6.45
             self.ZC = -self.ZA * -(900 + 8 / num3 + 50 *
                                    (double_0 - 3.5) / 0.1)
     if (oasCategory_0 == OasCategory.SBAS_APV1
             or oasCategory_0 == OasCategory.SBAS_APV2):
         num5 = (self.WC - self.WSC) / (self.WSA - self.WA)
         if (self.WA * num5 + self.WC <= 0):
             self.WSA = 0
             self.WSC = 0
     self.WA = round(self.WA, 6)
     self.WC = round(self.WC, 2)
     if (not MathHelper.smethod_96(self.WSA)):
         self.WSA = round(self.WSA, 6)
     else:
         self.WSA = None
     if (not MathHelper.smethod_96(self.WSC)):
         self.WSC = round(self.WSC, 2)
     else:
         self.WSC = None
     self.XA = round(self.XA, 6)
     self.XB = round(self.XB, 6)
     self.XC = round(self.XC, 2)
     self.YA = round(self.YA, 6)
     self.YB = round(self.YB, 6)
     self.YC = round(self.YC, 2)
     self.ZA = round(self.ZA, 6)
     self.ZC = round(self.ZC, 2)
     self.Assigned = True
Example #25
0
    def getGeometry(self):
        pointList = []
        polygonsList = []
        width = self[0].startWidth
        if MathHelper.smethod_96(self[0].bulge):
            pt0 = MathHelper.distanceBearingPoint(
                self[0].point3d,
                MathHelper.getBearing(self[0].point3d, self[1].point3d) -
                Unit.ConvertDegToRad(90),
                width / 2.0,
            )
            pt1 = MathHelper.distanceBearingPoint(
                self[0].point3d,
                MathHelper.getBearing(self[0].point3d, self[1].point3d) +
                Unit.ConvertDegToRad(90),
                width / 2.0,
            )
            pt2 = MathHelper.distanceBearingPoint(
                self[1].point3d,
                MathHelper.getBearing(self[0].point3d, self[1].point3d) +
                Unit.ConvertDegToRad(90),
                width / 2.0,
            )
            pt3 = MathHelper.distanceBearingPoint(
                self[1].point3d,
                MathHelper.getBearing(self[0].point3d, self[1].point3d) -
                Unit.ConvertDegToRad(90),
                width / 2.0,
            )
            geom = QgsGeometry.fromPolygon([[pt0, pt1, pt2, pt3]])
            polygonsList.append(geom)
        else:
            polylineArea = PolylineArea()
            polylineArea.Add(PolylineAreaPoint(self[0].point3d, self[0].bulge))
            polylineArea.Add(PolylineAreaPoint(self[1].point3d))

            pointArray = polylineArea.method_14(4)
            pt0 = MathHelper.distanceBearingPoint(
                self[0].point3d,
                MathHelper.getBearing(self[0].point3d, pointArray[1]) -
                Unit.ConvertDegToRad(90),
                width / 2.0,
            )
            pt1 = MathHelper.distanceBearingPoint(
                self[0].point3d,
                MathHelper.getBearing(self[0].point3d, pointArray[1]) +
                Unit.ConvertDegToRad(90),
                width / 2.0,
            )
            pt2 = MathHelper.distanceBearingPoint(
                self[1].point3d,
                MathHelper.getBearing(pointArray[len(pointArray) - 2],
                                      self[1].point3d) +
                Unit.ConvertDegToRad(90),
                width / 2.0,
            )
            pt3 = MathHelper.distanceBearingPoint(
                self[1].point3d,
                MathHelper.getBearing(pointArray[len(pointArray) - 2],
                                      self[1].point3d) -
                Unit.ConvertDegToRad(90),
                width / 2.0,
            )
            polylineArea0 = PolylineArea()
            polylineArea0.Add(PolylineAreaPoint(pt0, self[0].bulge))
            polylineArea0.Add(PolylineAreaPoint(pt3))
            polylineArea1 = PolylineArea()
            polylineArea1.Add(PolylineAreaPoint(pt2, -self[0].bulge))
            polylineArea1.Add(PolylineAreaPoint(pt1))
            pointArrayResult = []
            for pt in polylineArea0.method_14(4):
                pointArrayResult.append(pt)
            for pt in polylineArea1.method_14(4):
                pointArrayResult.append(pt)
            geom = QgsGeometry.fromPolygon([pointArrayResult])
            polygonsList.append(geom)
        return polygonsList

        # for i in range(self.NumberOfVertices):
        #     polylinePoint = self[i]
        #
        #     if polylinePoint.startWidth != width:
        #         if len(pointList) > 1:
        #             geom = QgsGeometry.fromPolyline(pointList)
        #             polygon = geom.buffer(width / 2.0, 0, 2, 0, 0)
        #             polygonsList.append(polygon)
        #         width = polylinePoint.startWidth
        #         pointList = []
        #     pointList.append(polylinePoint.point3d)
        #     if not MathHelper.smethod_96(polylinePoint.bulge):
        #         if i != self.NumberOfVertices - 1:
        #             point3d = self[i + 1].point3d
        #         else:
        #             point3d = self[0].point3d
        #         MathHelper.getArc(polylinePoint.point3d, point3d, polylinePoint.bulge, 4, pointList)
        #
        # if len(pointList) > 1:
        #     geom = QgsGeometry.fromPolyline(pointList)
        #     polygon = geom.buffer(width / 2.0, 0, 2, 0, 0)
        #     polygonsList.append(polygon)
        return polygonsList
    def otherBearingCalc(self, basicAngle, basicUnit):
        positionPanelOfParent = None
        existPositionPanelValid = False
        if len(self.parentP.findChildren(PositionPanel)) > 0:
            for pnl in self.parentP.findChildren(PositionPanel):
                if pnl.IsValid():
                    positionPanelOfParent = pnl
                    existPositionPanelValid = True
                    break
        basicBearing = Unit.ConvertDegToRad(basicAngle)
        unit = positionPanelOfParent.getUnit()
        basicPoint3d = None
        if existPositionPanelValid:
            basicPoint3d = positionPanelOfParent.Point3d
        else:
            if basicUnit == QGis.Meters:
                basicPoint3d = Point3D(656565, 6565656)
            else:
                basicPoint3d = Point3D(17, 59)

        resultBearing = None
        if unit == None:
            return
        elif unit == QGis.Meters:
            if basicUnit == QGis.Meters:
                point3dStart = basicPoint3d
                point3dEnd = MathHelper.distanceBearingPoint(
                    point3dStart, basicBearing, 500, QGis.Meters)
                point3dStartGeo = MathHelper.CrsTransformPoint(
                    point3dStart.get_X(), point3dStart.get_Y(), define._xyCrs,
                    define._latLonCrs, point3dStart.get_Z())
                point3dEndGeo = MathHelper.CrsTransformPoint(
                    point3dEnd.get_X(), point3dEnd.get_Y(), define._xyCrs,
                    define._latLonCrs, point3dEnd.get_Z())
                resultBearing = MathHelper.getBearing(point3dStartGeo,
                                                      point3dEndGeo,
                                                      QGis.DecimalDegrees)
            else:
                point3dStart = basicPoint3d
                point3dStartGeo = MathHelper.CrsTransformPoint(
                    point3dStart.get_X(), point3dStart.get_Y(), define._xyCrs,
                    define._latLonCrs, point3dStart.get_Z())

                point3dEndGeo = MathHelper.distanceBearingPoint(
                    point3dStartGeo, basicBearing, 500, QGis.DecimalDegrees)
                point3dEnd = MathHelper.CrsTransformPoint(
                    point3dEndGeo.get_X(), point3dEndGeo.get_Y(),
                    define._latLonCrs, define._xyCrs, point3dEndGeo.get_Z())
                resultBearing = MathHelper.getBearing(point3dStart, point3dEnd,
                                                      QGis.Meters)
        else:
            if basicUnit == QGis.Meters:
                point3dStartGeo = basicPoint3d
                point3dStart = MathHelper.CrsTransformPoint(
                    point3dStartGeo.get_X(), point3dStartGeo.get_Y(),
                    define._latLonCrs, define._xyCrs, point3dStartGeo.get_Z())

                point3dEnd = MathHelper.distanceBearingPoint(
                    point3dStart, basicBearing, 500, QGis.Meters)
                point3dEndGeo = MathHelper.CrsTransformPoint(
                    point3dEnd.get_X(), point3dEnd.get_Y(), define._xyCrs,
                    define._latLonCrs, point3dEnd.get_Z())
                resultBearing = MathHelper.getBearing(point3dStartGeo,
                                                      point3dEndGeo,
                                                      QGis.DecimalDegrees)
            else:
                point3dStartGeo = basicPoint3d
                point3dEndGeo = MathHelper.distanceBearingPoint(
                    point3dStartGeo, basicBearing, 500, QGis.DecimalDegrees)

                point3dStart = MathHelper.CrsTransformPoint(
                    point3dStartGeo.get_X(), point3dStartGeo.get_Y(),
                    define._latLonCrs, define._xyCrs, point3dStartGeo.get_Z())
                point3dEnd = MathHelper.CrsTransformPoint(
                    point3dEndGeo.get_X(), point3dEndGeo.get_Y(),
                    define._latLonCrs, define._xyCrs, point3dEndGeo.get_Z())
                resultBearing = MathHelper.getBearing(point3dStart, point3dEnd,
                                                      QGis.Meters)
        return Unit.ConvertRadToDeg(resultBearing)
Example #27
0
 def smethod_0(position_0, position_1):
     return Unit.smethod_1(MathHelper.getBearing(position_0, position_1))
Example #28
0
    def method_2(self, polylineArea_0):
        polyLineAreaList = []
        #         Region region;
        num = Unit.ConvertDegToRad(70) if (
            self.orientation
            == OrientationType.Right) else Unit.ConvertDegToRad(-70)
        vector3d = Vector3d(0, 0, 1)
        matrix3d = Matrix3d.Rotation(num, vector3d, self.ptBase)
        matrix3d1 = Matrix3d.Mirroring(
            self.ptBase,
            MathHelper.distanceBearingPoint(self.ptBase, self.trackRad, 100),
            self.ptBase.smethod_167(2))
        #         DBObjectCollection dBObjectCollection = new DBObjectCollection();
        #         DBObjectCollection dBObjectCollection1 = new DBObjectCollection();
        #         try
        #         {
        num1 = 0
        origin = Point3D.get_Origin()
        point3d = polylineArea_0[0].Position.TransformBy(matrix3d)
        point3dCollection = self.spiral.method_14_closed(4)
        polyline1 = PolylineArea(point3dCollection)
        polyline2 = polyline1.TransformBy(matrix3d)
        polyline = polyline2.TransformBy(
            Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d)))
        polyLineAreaList.append(polyline)
        #         dBObjectCollection.Add(polyline);
        num1, origin = self.method_6(polyline, self.ptBase, num1, origin)
        point3d1 = polylineArea_0[1].Position.TransformBy(matrix3d)

        point3dCollection = self.spiral.method_14_closed(4)
        polyline1 = PolylineArea(point3dCollection)
        polyline2 = polyline1.TransformBy(matrix3d)
        polyline = polyline2.TransformBy(
            Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d1)))
        #         polyline = AcadHelper.smethod_136(self.spiral, true);
        #         polyline.TransformBy(matrix3d);
        #         polyline.TransformBy(Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d1)));
        polyLineAreaList.append(polyline)
        #         dBObjectCollection.Add(polyline);
        num1, origin = self.method_6(polyline, self.ptBase, num1, origin)
        point3d2 = polylineArea_0[3].Position.TransformBy(matrix3d)
        point3dCollection = self.spiral.method_14_closed(4)
        polyline1 = PolylineArea(point3dCollection)
        polyline2 = polyline1.TransformBy(matrix3d1)
        polyline3 = polyline2.TransformBy(matrix3d)
        polyline = polyline3.TransformBy(
            Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d2)))

        #         polyline = AcadHelper.smethod_136(self.spiral, true);
        #         polyline.TransformBy(matrix3d1);
        #         polyline.TransformBy(matrix3d);
        #         polyline.TransformBy(Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d2)));
        polyLineAreaList.append(polyline)
        #         dBObjectCollection.Add(polyline);
        point3d3 = polylineArea_0[2].Position.TransformBy(matrix3d)
        point3dCollection = self.spiral.method_14_closed(4)
        polyline1 = PolylineArea(point3dCollection)
        polyline2 = polyline1.TransformBy(matrix3d1)
        polyline3 = polyline2.TransformBy(matrix3d)
        polyline = polyline3.TransformBy(
            Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d3)))

        #         polyline = AcadHelper.smethod_136(self.spiral, true);
        #         polyline.TransformBy(matrix3d1);
        #         polyline.TransformBy(matrix3d);
        #         polyline.TransformBy(Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d3)));
        polyLineAreaList.append(polyline)
        #         dBObjectCollection.Add(polyline);
        #         if (num1 > 0):
        #             point3d4 = MathHelper.distanceBearingPoint(self.ptBase, self.trackRad + 3.14159265358979, num1);
        #             polyline = PolylineArea()
        #             polyline.Add(origin.smethod_176(), MathHelper.smethod_57((self.orientation == OrientationType.Left ? TurnDirection.Left : TurnDirection.Right), origin, point3d4, self.ptBase), 0, 0);
        #             polyline.AddVertexAt(1, point3d4.smethod_176(), 0, 0, 0);
        #             polyline.set_Closed(true);
        #             dBObjectCollection.Add(polyline);
        #         }
        point3dCollection = []
        item = self.spiralBounds[0]
        point3d5 = item.TransformBy(matrix3d)
        point3dCollection.append(
            point3d5.TransformBy(
                Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d))))
        item1 = self.spiralBounds[1]
        point3d6 = item1.TransformBy(matrix3d)
        point3dCollection.append(
            point3d6.TransformBy(
                Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d))))
        item2 = self.spiralBounds[1]
        point3d7 = item2.TransformBy(matrix3d)
        point3dCollection.append(
            point3d7.TransformBy(
                Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d1))))
        item3 = self.spiralBounds[2]
        point3d8 = item3.TransformBy(matrix3d)
        point3dCollection.append(
            point3d8.TransformBy(
                Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d1))))
        item4 = self.spiralBounds[2]
        point3d9 = item4.TransformBy(matrix3d1).TransformBy(matrix3d)
        point3dCollection.append(
            point3d9.TransformBy(
                Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d3))))
        item5 = self.spiralBounds[1]
        point3d10 = item5.TransformBy(matrix3d1).TransformBy(matrix3d)
        point3dCollection.append(
            point3d10.TransformBy(
                Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d3))))
        item6 = self.spiralBounds[1]
        point3d11 = item6.TransformBy(matrix3d1).TransformBy(matrix3d)
        point3dCollection.append(
            point3d11.TransformBy(
                Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d2))))
        item7 = self.spiralBounds[0]
        point3d12 = item7.TransformBy(matrix3d1).TransformBy(matrix3d)
        point3dCollection.append(
            point3d12.TransformBy(
                Matrix3d.Displacement(self.ptBase.GetVectorTo(point3d2))))
        point3dCollection = MathHelper.smethod_190(point3dCollection)
        polylineArea1 = PolylineArea(point3dCollection)
        polyLineAreaList.append(polyline)
        return polyLineAreaList
Example #29
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))
    def method_8(self, oasCategory_0, double_0, double_1, aircraftSize_0):
        fEF = [0.0, 0.0, 0.0]
        if (aircraftSize_0 != AircraftSize.Large):
            self.comSurco.AG = self.method_3(double_0, self.comTable.YT,
                                             self.comTable.F*G)
            self.comSurco.AF = self.comTable.FAF
            self.comSurco.AB = self.method_3(double_0, self.comTable.YT,
                                             self.comTable.FAB)
            self.comSurco.BC = self.method_3(double_0, self.comTable.YT,
                                             self.comTable.FBC)
            self.comSurco.GD = self.comTable.FGD
            self.comSurco.TANMU = (self.comSurco.GD - self.comSurco.BC) / (
                self.comSurco.AG + self.comSurco.AB)
            self.comSurco.TANX = self.method_5(double_1, double_0,
                                               self.comTable.XT,
                                               self.comTable.YT,
                                               self.comTable.FTANX)
            self.comSurco.TANW = self.method_3(double_0, self.comTable.YT,
                                               self.comTable.FTANW)
            if (oasCategory_0 == OasCategory.ILS2AP):
                self.comSurco.TANWS = self.method_3(double_0, self.comTable.YT,
                                                    self.comTable.FTANWS)
            for i in range(4 + 1):
                for j in range(2 + 1):
                    fEF[j] = self.comTable.FEF[j][i]
                self.comSurco.EF[i] = self.method_3(double_0, self.comTable.YT,
                                                    fEF)
                self.comSurco.TANNU[i] = (
                    self.comSurco.EF[i] -
                    self.comSurco.GD) / (self.comSurco.AF - self.comSurco.AG)
                self.comSurco.TANZ[i] = self.comTable.CG[i]

        self.comSurco.AW = self.comSurco.TANW
        self.comSurco.BW = 0
        self.comSurco.CW = -self.comSurco.AB * self.comSurco.TANW
        if (oasCategory_0 == OasCategory.ILS2AP):
            self.comSurco.AWS = self.comSurco.TANWS
            self.comSurco.BWS = 0
            self.comSurco.CWS = 1000 * (
                self.comSurco.TANW -
                self.comSurco.TANWS) - self.comSurco.AB * self.comSurco.TANW

        self.comSurco.AX = self.comSurco.TANMU * self.comSurco.TANX
        self.comSurco.BX = self.comSurco.TANX
        self.comSurco.CX = (-self.comSurco.GD + self.comSurco.AG *
                            self.comSurco.TANMU) * self.comSurco.TANX
        for k in range(4 + 1):
            self.comSurco.AZ[k] = -self.comSurco.TANZ[k]
            self.comSurco.CZ[k] = -self.comSurco.AF * self.comSurco.TANZ[k]

        self.comSurco.BZ = 0
        self.comTemp1.XC = self.comSurco.AB
        self.comTemp1.YC = self.comSurco.BC
        self.comTemp1.XD = -self.comSurco.AG
        self.comTemp1.YD = self.comSurco.GD
        self.comTemp1.XE = -self.comSurco.AF
        for l in range(4 + 1):
            self.comTemp1.YE[l] = self.comSurco.EF[l]

        aW = 300
        if (oasCategory_0 == OasCategory.ILS2
                or oasCategory_0 == OasCategory.ILS2AP):
            aW = 150

        self.comTemp1.XC1 = (aW - self.comSurco.CW) / self.comSurco.AW
        if (oasCategory_0 == OasCategory.ILS2AP):
            self.comTemp1.XC1 = (aW - self.comSurco.CWS) / self.comSurco.AWS

        self.comTemp1.YC1 = (aW - self.comSurco.AX * self.comTemp1.XC1 -
                             self.comSurco.CX) / self.comSurco.BX
        num = math.tan(Unit.ConvertDegToRad(double_0))
        aG = aW / num - self.comSurco.AG
        aX = (aW - self.comSurco.AX * aG - self.comSurco.CX) / self.comSurco.BX
        if oasCategory_0 == OasCategory.ILS1 \
            or oasCategory_0 == OasCategory.SBAS_APV1 \
            or oasCategory_0 == OasCategory.SBAS_APV2 \
            or oasCategory_0 == OasCategory.SBAS_CAT1:
            for m in range(4 + 1):
                self.comSurco.TANY[m] = aW * (
                    -self.comSurco.AF + self.comSurco.AG) / (
                        (self.comSurco.AG - self.comSurco.AF) *
                        (aX - self.comSurco.GD) + (self.comSurco.AG + aG) *
                        (self.comSurco.GD - self.comSurco.EF[m]))
        elif oasCategory_0 == OasCategory.ILS2:
            for n in range(4 + 1):
                self.comSurco.TANY[n] = aW * (
                    -self.comSurco.AF + self.comSurco.AG) / (
                        (self.comSurco.AG - self.comSurco.AF) *
                        (aX - self.comSurco.GD) + (self.comSurco.AG + aG) *
                        (self.comSurco.GD - self.comSurco.EF[n]))
        elif oasCategory_0 == OasCategory.ILS2AP:
            for o in range(4 + 1):
                self.comSurco.TANY[o] = aW * (
                    -self.comSurco.AF + self.comSurco.AG) / (
                        (self.comSurco.AG - self.comSurco.AF) *
                        (aX - self.comSurco.GD) + (self.comSurco.AG + aG) *
                        (self.comSurco.GD - self.comSurco.EF[o]))

        for p in range(4 + 1):
            self.comSurco.AY[
                p] = self.comSurco.TANNU[p] * self.comSurco.TANY[p]
            self.comSurco.BY[p] = self.comSurco.TANY[p]
            self.comSurco.CY[p] = (-self.comSurco.GD +
                                   self.comSurco.AG * self.comSurco.TANNU[p]
                                   ) * self.comSurco.TANY[p]

        for q in range(4 + 1):
            self.comTemp1.XD1[q] = aG
            self.comTemp1.YD1[q] = aX
            if (oasCategory_0 != OasCategory.ILS2AP):
                lstParam = [self.comTemp1.XE1[q], self.comTemp1.YE1[q]]
                self.method_6(self.comSurco.AY[q], self.comSurco.BY[q],
                              self.comSurco.CY[q], self.comSurco.AZ[q],
                              self.comSurco.BZ, self.comSurco.CZ[q], aW,
                              lstParam)
                self.comTemp1.XE1[q] = lstParam[0]
                self.comTemp1.YE1[q] = lstParam[1]
            else:
                lstParam = [self.comTemp1.XD1[q], self.comTemp1.YD1[q]]
                self.method_6(self.comSurco.AX, self.comSurco.BX,
                              self.comSurco.CX, self.comSurco.AY[q],
                              self.comSurco.BY[q], self.comSurco.CY[q], aW,
                              lstParam)
                self.comTemp1.XD1[q] = lstParam[0]
                self.comTemp1.YD1[q] = lstParam[1]

        if (oasCategory_0 == OasCategory.ILS2AP):
            aW = self.comSurco.AW * 1000 + self.comSurco.CW
            self.comTemp1.XC2 = (aW - self.comSurco.CW) / self.comSurco.AW
            self.comTemp1.YC2 = (aW - self.comSurco.AX * self.comTemp1.XC2 -
                                 self.comSurco.CX) / self.comSurco.BX