def checkObstacle(self, obstacle_0): if self.manualPolygon != None: if not self.manualPolygon.contains(obstacle_0.Position): return mocMultiplier = None; z = None; num = None; z1 = None; point3d = None; point3d1 = None; num1 = None; num2 = None; if (not self.area12.pointInPolygon(obstacle_0.Position, obstacle_0.Tolerance)): if (not self.area3a.pointInPolygon(obstacle_0.Position, obstacle_0.Tolerance) and not self.area3b.pointInPolygon(obstacle_0.Position, obstacle_0.Tolerance)): return; closestPointTo = self.area.getPointWithShortestDist(obstacle_0.Position); point = QgsGeometry.fromPolyline(self.area.method_14()).closestVertex(obstacle_0.Position) point3d1 = MathHelper.getIntersectionPoint(closestPointTo, MathHelper.distanceBearingPoint(closestPointTo, self.track, 100), self.ptDER, self.ptDER2); num1 = MathHelper.calcDistance(closestPointTo, point3d1) if (MathHelper.smethod_119(closestPointTo, self.ptDER, self.ptDER2)) else 1E-08; if num1 == 0: num1 = 1E-08 num2 = max([1E-08, MathHelper.calcDistance(obstacle_0.Position, closestPointTo) - obstacle_0.Tolerance]); mocMultiplier = max([self.moc / 100 * (num1 + num2) * obstacle_0.MocMultiplier, self.minMoc]); z = self.ta + self.pdg / 100 * num2; position = obstacle_0.Position; num = position.get_Z() + obstacle_0.Trees + mocMultiplier; z1 = 100 * ((num - self.ta) / num2); else: point3d2 = MathHelper.distanceBearingPoint(obstacle_0.Position, self.track + 3.14159265358979, obstacle_0.Tolerance); point3d3 = MathHelper.distanceBearingPoint(point3d2, self.track, 100); point3d = MathHelper.getIntersectionPoint(self.ptDER, self.ptDER2, point3d2, point3d3); num1 = 1E-08 if (not MathHelper.smethod_119(point3d2, self.ptDER, self.ptDER2)) else MathHelper.calcDistance(point3d, point3d2); if num1 == 0: num1 = 1E-08 mocMultiplier = self.moc / 100 * num1 * obstacle_0.MocMultiplier; z = self.ptDER.get_Z() + 5 + self.pdg / 100 * num1; position1 = obstacle_0.Position; num = position1.get_Z() + obstacle_0.Trees + mocMultiplier; z1 = 100 * ((num - (self.ptDER.get_Z() + 5)) / num1); if num1 < 0.00001: num1 = None criticalObstacleType = CriticalObstacleType.No; if (z1 > self.pdg): criticalObstacleType = CriticalObstacleType.Yes; closeInObstacleType = CloseInObstacleType.No; if (num <= self.ptDER.get_Z() + 60): closeInObstacleType = CloseInObstacleType.Yes; checkResult = [num1, num2, mocMultiplier, z, num, z1, criticalObstacleType, closeInObstacleType]; self.addObstacleToModel(obstacle_0, checkResult)
def imethod_0(self, obstacle_0): criticalObstacleType = CriticalObstacleType.No if (self.poaOIS.pointInPolygon(obstacle_0.Position, obstacle_0.Tolerance)): z = self.elevOIS num = 1 if (self.poaOCS.pointInPolygon(obstacle_0.Position, obstacle_0.Tolerance)): point3d1 = MathHelper.distanceBearingPoint( obstacle_0.Position, self.track, 100) point3d = MathHelper.getIntersectionPoint( obstacle_0.Position, point3d1, self.ptsOCSL[0], self.ptsOCSR[0]) num1 = max( MathHelper.calcDistance(point3d, obstacle_0.Position) - obstacle_0.Tolerance, 0) z = num1 * self.tang + self.ptHRP.get_Z() num = 0 position = obstacle_0.Position z1 = position.get_Z() + obstacle_0.Trees - z if (z1 > 0): criticalObstacleType = CriticalObstacleType.Yes return [ z, z1, criticalObstacleType, PinsSurfaceType.PinsSurfaceType_OCS if num == 0 else PinsSurfaceType.PinsSurfaceType_LevelOIS ]
def getWaypoint(self): if (self.type == RnavCommonWaypoint.FAWP): nauticalMiles = float(self.txtDistance.text()) value = float(self.txtBearing.text()) num1 = math.fabs(self.rethr - value) if (num1 > 180): num1 = 360 - num1 num2 = math.sin(Unit.smethod_0(num1)) * 0.7559395 num3 = Unit.smethod_1(math.asin(num2 / nauticalMiles)) num4 = math.cos(Unit.smethod_0(num1)) * 0.755939525 num5 = math.cos(Unit.smethod_0(num3)) * nauticalMiles return RnavWaypoints.smethod_3(self.pos1400m, float(self.txtBearing.text()), Distance(math.fabs(num5 - num4), DistanceUnits.NM)) if (self.type != RnavCommonWaypoint.MAWP): return RnavWaypoints.smethod_3(self.from1, float(self.txtBearing.text()), Distance(float(self.txtDistance.text()), DistanceUnits.NM)) angle = 90 if (float(self.txtBearing.text()) > self.thrre or float(self.txtBearing.text()) - self.thrre >= 90): if self.flagStrName == "Y-Bar": angle = 70 num = self.rethr - angle if (num < 0): num = num + 360 else: num = self.rethr + angle if (num > 360): num = num - 360 point3d1 = self.from1 point3d2 = self.getThrPoint3D() point3d = MathHelper.getIntersectionPoint(point3d1, RnavWaypoints.smethod_3(self.from1, float(self.txtBearing.text()), Distance(1000)), point3d2, RnavWaypoints.smethod_3(self.getThrPoint3D(), num, Distance(1000))) if point3d == None: raise UserWarning, Messages.ERR_FAILED_TO_CALCULATE_INTERSECTION_POINT return RnavWaypoints.smethod_3(self.getThrPoint3D(), num, Distance(MathHelper.calcDistance(point3d2, point3d)))
def checkObstacle(self, obstacle_0): if not self.surfaceArea.pointInPolygon(obstacle_0.Position, obstacle_0.Tolerance): return point3d = MathHelper.getIntersectionPoint( self.ptStart, self.ptStart2, obstacle_0.Position, MathHelper.distanceBearingPoint(obstacle_0.Position, self.outbound + 3.14159265358979, obstacle_0.Tolerance)) num = max([ 0.001, MathHelper.calcDistance(obstacle_0.Position, point3d) - obstacle_0.Tolerance ]) z = num * self.tang + self.ptStart.get_Z() position = obstacle_0.Position z1 = position.get_Z() + obstacle_0.Trees - z criticalObstacleType = CriticalObstacleType.No if (z1 > 0): criticalObstacleType = CriticalObstacleType.Yes disregardableObstacleType = DisregardableObstacleType.No if (obstacle_0.Position.get_Z() + obstacle_0.Trees <= self.ptStart.get_Z() + 15): disregardableObstacleType = DisregardableObstacleType.Yes self.addObstacleToModel( obstacle_0, [z, z1, criticalObstacleType, disregardableObstacleType])
def method_37(self, point3d_0, double_0, point3d_1, point3d_2, double_1, ficorInput_0): point3d = None; point3d = MathHelper.getIntersectionPoint(point3d_1, point3d_2, point3d_0, MathHelper.distanceBearingPoint(point3d_0, double_0 + Unit.ConvertDegToRad(90), 100)) if (point3d != None): num = MathHelper.getBearing(point3d_0, point3d); num1 = MathHelper.calcDistance(point3d_0, point3d); if (num1 <= double_1): num2 = math.acos(num1 / double_1); point3d1 = MathHelper.distanceBearingPoint(point3d_0, num + num2, double_1); point3d2 = MathHelper.distanceBearingPoint(point3d_0, num - num2, double_1); if (ficorInput_0 == FicorInput.C): if (MathHelper.smethod_99(MathHelper.getBearing(point3d_1, point3d2), MathHelper.getBearing(point3d_1, point3d1), 0.1)): return FicorResult(FicorStatus.TWO); return FicorResult(FicorStatus.ONE); if (ficorInput_0 == FicorInput.F): if (MathHelper.smethod_99(MathHelper.getBearing(point3d_1, point3d_2), MathHelper.getBearing(point3d_1, point3d1), 0.1)): return FicorResult(point3d1); return FicorResult(point3d2); if (ficorInput_0 == FicorInput.L): if (MathHelper.calcDistance(point3d_1, point3d2) < MathHelper.calcDistance(point3d_1, point3d1)): return FicorResult(point3d1); return FicorResult(point3d2); if (ficorInput_0 == FicorInput.S): if (MathHelper.calcDistance(point3d_1, point3d2) > MathHelper.calcDistance(point3d_1, point3d1)): return FicorResult(point3d1); return FicorResult(point3d2); return FicorResult(None, FicorStatus.NID);
def method_1(self, obstacle_0): point3d1 = MathHelper.distanceBearingPoint(obstacle_0.Position, self.tr180, obstacle_0.tolerance) point3d = MathHelper.getIntersectionPoint( self.ptTHR, self.ptEND, point3d1, MathHelper.distanceBearingPoint(point3d1, self.trm90, 100)) num = MathHelper.calcDistance(self.ptTHR, point3d) if (MathHelper.smethod_119(point3d, self.ptTHR, self.ptTHRm90)): num = num * -1 return num
def vmethod_3(self, point3d_0, bool_0): point3d = Point3D() point3d = MathHelper.getIntersectionPoint( self.ptTHR, self.ptEND, point3d_0, MathHelper.distanceBearingPoint(point3d_0, self.trm90, 100)) num = MathHelper.calcDistance(self.ptTHR, point3d) if not MathHelper.smethod_115(point3d, self.ptTHR, self.ptTHRm90): num = num + self.xstart else: num = self.xstart - min([num, self.xstart]) num1 = num * self.tanslope if (bool_0): num1 = num1 + self.mocma return self.ptTHR.z() + num1
def vmethod_3(self, point3d_0, bool_0): point3d = Point3D() point3d = MathHelper.getIntersectionPoint( self.ptTHR, self.ptEND, point3d_0, MathHelper.distanceBearingPoint(point3d_0, self.trm90, 100)) num = 0 if (MathHelper.smethod_115(point3d, self.ptTHR, self.ptTHRm90)): num = max([ MathHelper.calcDistance(self.ptTHR, point3d), self.xstart ]) - self.xstart num1 = 0 if (bool_0): num1 = self.mocma + num * self.tanslope return self.ptTHR.z() + num1
def vmethod_3(self, point3d_0, bool_0): point3d = MathHelper.getIntersectionPoint( self.ptTHR, self.ptEND, point3d_0, MathHelper.distanceBearingPoint(point3d_0, self.trm90, 100)) item = 0 if (MathHelper.smethod_115(point3d, self.ptTHR, self.ptTHRm90)): num = MathHelper.calcDistance(self.ptTHR, point3d) num1 = 0 count = len(self.segments) while (num1 < count): if (num < self.segments[num1].xstart): if (not bool_0): return self.ptTHR.z() + item item = item + self.segments[num1].moc return self.ptTHR.z() + item elif (num < self.segments[num1].xstart or num >= self.segments[num1].xend): if (num1 + 1 >= len(self.segments)): item = (self.segments[num1].xend - self.segments[num1].xfas ) * self.segments[num1].tanafas if (bool_0): item = item + self.segments[num1].moc elif (num <= self.segments[num1 + 1].xstart): item = (self.segments[num1].xend - self.segments[num1].xfas ) * self.segments[num1].tanafas if (not bool_0): return self.ptTHR.z() + item item1 = self.segments[num1].moc item2 = self.segments[num1 + 1].moc num2 = (item2 - item1) / (self.segments[num1 + 1].xstart - self.segments[num1].xend) item3 = item1 + (num - self.segments[num1].xend) * num2 item = item + item3 return self.ptTHR.z() + item num1 += 1 else: item = (num - self.segments[num1].xfas ) * self.segments[num1].tanafas if (not bool_0): return self.ptTHR.z() + item item = item + self.segments[num1].moc return self.ptTHR.z() + item elif (bool_0): item = item + self.segments[0].moc return self.ptTHR.z() + item
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]
def getMOC(self, point3d_0): point3d = MathHelper.getIntersectionPoint( self.ptTHR, self.ptEND, point3d_0, MathHelper.distanceBearingPoint(point3d_0, self.trm90, 100)) if (MathHelper.smethod_115(point3d, self.ptTHR, self.ptTHRm90)): num = MathHelper.calcDistance(self.ptTHR, point3d) for current in self.segments: if (num < current.xstart): return current.moc if (num >= current.xstart and num <= current.xend): return current.moc if self.segments.index(current) == len(self.segments) - 1: return current.moc if (num <= self.segments[self.segments.index(current) + 1].xstart): item = current.moc item1 = self.segments[self.segments.index(current) + 1].moc num1 = (item1 - item) / ( self.segments[self.segments.index(current) + 1].xstart - current.xend) return item + (num - current.xend) * num1 return self.segments[0].moc
def imethod_0(self, obstacle_0): criticalObstacleType = CriticalObstacleType.No if (self.poaOIS.pointInPolygon(obstacle_0.Position, obstacle_0.Tolerance)): point3d1 = MathHelper.distanceBearingPoint(obstacle_0.Position, self.trackOIS, 100) point3d = MathHelper.getIntersectionPoint(obstacle_0.Position, point3d1, self.ptL1, self.ptR1) num = max([ MathHelper.calcDistance(point3d, obstacle_0.Position) - obstacle_0.Tolerance, 0 ]) num1 = min( [self.ptHRP.get_Z() + num * self.tanOIS, self.maxSurfAlt]) position = obstacle_0.Position z = position.get_Z() + obstacle_0.Trees - num1 if (z > 0): criticalObstacleType = CriticalObstacleType.Yes return [ num1, z, criticalObstacleType, PinsSurfaceType.PinsSurfaceType_OIS ]
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 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])
def method_0(self, point3dCollection_0, point3dCollection_1, point3dCollection_2, point3dCollection_3, point3d_0, point3d_1): point3d = Point3D() point3d1 = Point3D() point3d2 = Point3D() point3d3 = Point3D() flag = False flag1 = False count = len(point3dCollection_0) num = 1 while (True): if (num < count): num1 = num - 1 num2 = num if (num1 < 0): num1 = num num2 = num + 1 if (flag == False and MathHelper.smethod_117( point3d_0, point3dCollection_3[num], point3dCollection_0[num], False)): point3d4 = MathHelper.distanceBearingPoint( point3d_0, self.trm90, 100) point3d = MathHelper.getIntersectionPoint( point3dCollection_0[num1], point3dCollection_0[num2], point3d_0, point3d4) point3d1 = MathHelper.getIntersectionPoint( point3dCollection_1[num1], point3dCollection_1[num2], point3d_0, point3d4) point3d2 = MathHelper.getIntersectionPoint( point3dCollection_2[num1], point3dCollection_2[num2], point3d_0, point3d4) point3d3 = MathHelper.getIntersectionPoint( point3dCollection_3[num1], point3dCollection_3[num2], point3d_0, point3d4) self.linesl.append( point3d.smethod_167(self.vmethod_3(point3d, True))) self.linepl.append( point3d1.smethod_167(self.vmethod_3(point3d1, False))) self.linepr.append( point3d2.smethod_167(self.vmethod_3(point3d2, False))) self.linesr.append( point3d3.smethod_167(self.vmethod_3(point3d3, True))) flag = True if (flag1 or not MathHelper.smethod_117( point3d_1, point3dCollection_3[num], point3dCollection_0[num], False)): if (flag and not flag1): self.linesl.append( point3dCollection_0[num].smethod_167( self.vmethod_3(point3dCollection_0[num], True))) self.linepl.append( point3dCollection_1[num].smethod_167( self.vmethod_3(point3dCollection_1[num], False))) self.linepr.append( point3dCollection_2[num].smethod_167( self.vmethod_3(point3dCollection_2[num], False))) self.linesr.append( point3dCollection_3[num].smethod_167( self.vmethod_3(point3dCollection_3[num], True))) num += 1 else: point3d5 = MathHelper.distanceBearingPoint( point3d_1, self.trm90, 100) point3d = MathHelper.getIntersectionPoint( point3dCollection_0[num1], point3dCollection_0[num2], point3d_1, point3d5) point3d1 = MathHelper.getIntersectionPoint( point3dCollection_1[num1], point3dCollection_1[num2], point3d_1, point3d5) point3d2 = MathHelper.getIntersectionPoint( point3dCollection_2[num1], point3dCollection_2[num2], point3d_1, point3d5) point3d3 = MathHelper.getIntersectionPoint( point3dCollection_3[num1], point3dCollection_3[num2], point3d_1, point3d5) self.linesl.append( point3d.smethod_167(self.vmethod_3(point3d, True))) self.linepl.append( point3d1.smethod_167(self.vmethod_3(point3d1, False))) self.linepr.append( point3d2.smethod_167(self.vmethod_3(point3d2, False))) self.linesr.append( point3d3.smethod_167(self.vmethod_3(point3d3, True))) flag1 = True break else: break # if define._canvas.mapUnits() != QGis.Meters: # self.linesl = QgisHelper.transformPoints(self.linesl, True) # self.linepl = QgisHelper.transformPoints(self.linepl, True) # self.linepr = QgisHelper.transformPoints(self.linepr, True) # self.linesr = QgisHelper.transformPoints(self.linesr, True) # for point3d_enum in self.linepl: self.primaryArea.append(point3d_enum) self.linepr.reverse() for point3d_enum in self.linepr: self.primaryArea.append(point3d_enum) self.linepr.reverse() # for (int m = 1; m < self.linesl.get_Count(); m++) # { # self.secondaryAreas.append(new SecondaryObstacleArea(self.linepl[m - 1), self.linepl[m), self.linesl[m), self.linesl[m - 1), self.tr)); # self.secondaryAreas.append(new SecondaryObstacleArea(self.linepr[m - 1), self.linepr[m), self.linesr[m), self.linesr[m - 1), self.tr)); # } # } m = 1 count = len(self.linesl) while m < count: self.secondaryAreas.append( SecondaryObstacleArea(self.linepl[m - 1], self.linepl[m], self.linesl[m], self.linesl[m - 1], self.tr)) self.secondaryAreas.append( SecondaryObstacleArea(self.linepr[m - 1], self.linepr[m], self.linesr[m], self.linesr[m - 1], self.tr)) m += 1
def vmethod_0(self, obstacle_0, returnList): double_0 = None double_3 = None point3d = MathHelper.getIntersectionPoint( self.ptTHR, self.ptEND, obstacle_0.Position, MathHelper.distanceBearingPoint(obstacle_0.Position, self.trm90, 100)) obstacleAreaResult_0 = ObstacleAreaResult.Primary num = MathHelper.calcDistance(self.ptTHR, point3d) - obstacle_0.tolerance if not MathHelper.smethod_115(point3d, self.ptTHR, self.ptTHRm90): num = self.xstart else: num = max([self.xstart, num]) double_1 = self.mocma + (num - self.xstart) * self.tanslope double_2 = double_1 if not MathHelper.pointInPolygon(self.primaryArea, obstacle_0.Position, obstacle_0.tolerance): double_0 = 0.0 double_2 = 0.0 for current in self.secondaryAreas: try: num1 = None num2 = None resultList = [] obstacleAreaResult = current.imethod_1( obstacle_0.Position, obstacle_0.tolerance, double_1, resultList) if obstacleAreaResult == ObstacleAreaResult.Outside: obstacleAreaResult_0 = ObstacleAreaResult.Outside continue num1 = resultList[0] num2 = resultList[1] # obstacleAreaResult = current.imethod_1(obstacle_0.Position, obstacle_0.tolerance, double_1, out num1, out num2); if obstacleAreaResult == ObstacleAreaResult.Primary: obstacleAreaResult_0 = obstacleAreaResult double_2 = num1 double_0 = num2 break elif obstacleAreaResult == ObstacleAreaResult.Secondary and ( num1 > double_2 or double_2 == 0.0): obstacleAreaResult_0 = obstacleAreaResult double_2 = num1 double_0 = num2 except IndexError: pass if obstacleAreaResult_0 != ObstacleAreaResult.Outside: obstacle_0.area = obstacleAreaResult_0 point3d1 = MathHelper.distanceBearingPoint(obstacle_0.Position, self.tr, obstacle_0.tolerance) double_3 = self.vmethod_3(point3d1, False) if obstacleAreaResult_0 == ObstacleAreaResult.Primary: double_3 = double_3 + (double_1 - double_2) returnList.append(double_0) returnList.append(double_1) returnList.append(double_2) returnList.append(double_3) return True return False
def checkObstacle(self, obstacle): if self.manualPolygon != None: if not self.manualPolygon.contains(obstacle.Position): return point3d = MathHelper.getIntersectionPoint( obstacle.Position, MathHelper.distanceBearingPoint(obstacle.Position, self.tr90p, 100), self.ptTHR, self.ptTHR2) tolerance = MathHelper.calcDistance(self.ptTHR, point3d) if (not MathHelper.smethod_115(point3d, self.ptTHR, self.ptTHRm90)): tolerance = tolerance * -1 num = tolerance + obstacle.tolerance tolerance = tolerance - obstacle.tolerance num1 = MathHelper.calcDistance(point3d, obstacle.Position) - obstacle.tolerance # if MathHelper.smethod_99(num1, 237.633410911, 0.0001): # pass if (num1 < 0): num1 = 0 # if MathHelper.smethod_115(obstacle.position, self.ptTHR, point3d): # num1 *= 1 if tolerance > 0 else -1 # else: # num1 *= -1 if tolerance > 0 else 1 z = obstacle.Position.z() + obstacle.trees for surface in self.surfacesList: oasSurfacesList = [ OasSurface.OFZ, OasSurface.W, OasSurface.X1, OasSurface.X2, OasSurface.Y1, OasSurface.Y2, OasSurface.Z ] if len(surface.WS) > 3: oasSurfacesList.append(OasSurface.WS) for oasSurface in oasSurfacesList: num2 = 0 num3 = tolerance num4 = num1 calcList = [num3, num4, num2] if not surface.method_0(oasSurface, obstacle, calcList): continue num3 = calcList[0] num4 = calcList[1] num2 = calcList[2] if (num2 < 0): num2 = 0 z1 = self.ptTHR.z() + num2 zC = None if (z > z1): if (self.method != OasMaEvaluationMethod.Standard): zC = (self.xe + (num + (z - self.ptTHR.z()) / self.tanmacg) ) * self.tanmacg * self.tangpa / (self.tanmacg + self.tangpa) zC = None if zC >= z - self.ptTHR.z( ) else zC + self.ptTHR.z() elif (num < -self.xe): zC = self.ptTHR.z() + ( (z - self.ptTHR.z()) * (1 / self.tanmacg) + (self.xe + num)) / (1 / self.tanmacg + 1 / self.tangpa) OasObstacles.resultCriticalObst.method_0( obstacle, zC, oasSurface) if zC == None: oca = obstacle.Position.z( ) + obstacle.trees + self.hlAltitude.Metres och = oca - self.ptTHR.z() else: oca = zC + self.hlAltitude.Metres och = oca - self.ptTHR.z() # if oca < 0: # oca = None self.addObstacleToModel(obstacle, [ num3, num4, zC, z1, z - z1, oca, CriticalObstacleType.No if z - z1 <= 0 else CriticalObstacleType.Yes, oasSurface ]) return True
def method_36(self, bool_0): # Point3d point3d; # Point3d point3d1; # Point3d point3d2; # Point3d point3d3; # Point3d point3d4; # double num; polylines = [] point3d5 = self.parametersPanel.pnlWaypoint.Point3d value = float(self.parametersPanel.txtTrack.text()) value1 = float(self.parametersPanel.txtRnpValue.text()) speed = Speed(float(self.parametersPanel.txtIas.text())) altitude = Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT) num1 = float(self.parametersPanel.txtIsa.text()) value2 = float(self.parametersPanel.txtTime.text()) speed1 = Speed(float(self.parametersPanel.pnlWind.speedBox.text())) num = 15 if (altitude.Feet >= 24500) else 23 speed2 = Speed.smethod_0(speed, num1, altitude) metresPerSecond = value2 * 60 * speed2.MetresPerSecond num2 = math.pow(speed2.Knots + speed1.Knots, 2) / ( 34313 * math.tan(Unit.ConvertDegToRad(num))) * 1852 num3 = value1 * 1852 num4 = num2 * (1 - math.sin(Unit.ConvertDegToRad(20))) / ( 2 * math.cos(Unit.ConvertDegToRad(20))) num5 = value1 * 1852 + 3704 if (num5 < 9260): num5 = 9260 point3d4 = MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(value + 90), num2 / 2) if (self.parametersPanel.cmbOrientation.currentText() != OrientationType.Left) else MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(value - 90), num2 / 2) point3d6 = MathHelper.distanceBearingPoint(point3d4, Unit.ConvertDegToRad(value), num4) point3d7 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value + 180), metresPerSecond) num6 = num2 / 2 + 1.414 * num3 num7 = num2 / 2 + num3 point3d8 = MathHelper.distanceBearingPoint(point3d6, Unit.ConvertDegToRad(value), num6) point3d9 = MathHelper.distanceBearingPoint( point3d6, Unit.ConvertDegToRad(value + 90) - math.acos(num7 / num6), num6) point3d10 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 90) + math.acos(num7 / num6), num6) point3d11 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 180), num6) point3d12 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value - 90) - math.acos(num7 / num6), num6) point3d13 = MathHelper.distanceBearingPoint( point3d6, Unit.ConvertDegToRad(value - 90) + math.acos(num7 / num6), num6) point3d = MathHelper.getIntersectionPoint( point3d9, MathHelper.distanceBearingPoint( point3d9, MathHelper.getBearing(point3d6, point3d9) - Unit.ConvertDegToRad(90), 100), point3d8, MathHelper.distanceBearingPoint(point3d8, Unit.ConvertDegToRad(value + 90), 100)) point3d1 = MathHelper.getIntersectionPoint( point3d10, MathHelper.distanceBearingPoint( point3d10, MathHelper.getBearing(point3d7, point3d10) + Unit.ConvertDegToRad(90), 100), point3d11, MathHelper.distanceBearingPoint(point3d11, Unit.ConvertDegToRad(value + 90), 100)) point3d2 = MathHelper.getIntersectionPoint( point3d12, MathHelper.distanceBearingPoint( point3d12, MathHelper.getBearing(point3d7, point3d12) - Unit.ConvertDegToRad(90), 100), point3d11, MathHelper.distanceBearingPoint(point3d11, Unit.ConvertDegToRad(value - 90), 100)) point3d3 = MathHelper.getIntersectionPoint( point3d13, MathHelper.distanceBearingPoint( point3d13, MathHelper.getBearing(point3d6, point3d13) + Unit.ConvertDegToRad(90), 100), point3d8, MathHelper.distanceBearingPoint(point3d8, Unit.ConvertDegToRad(value - 90), 100)) polylines1 = [] if (bool_0): num8 = num2 / 2 point3d14 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value + 90), num8) point3d15 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 90), num8) point3d16 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value - 90), num8) point3d17 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value - 90), num8) point3dArray = [point3d14, point3d15, point3d16, point3d17] polylineArea = PolylineArea(point3dArray) # for point3d0 in point3dArray: # polyline.Add(point3d0) polylineArea.method_19( 1, MathHelper.smethod_57(TurnDirection.Right, point3d15, point3d16, point3d7)) polylineArea.method_19( 3, MathHelper.smethod_57(TurnDirection.Right, point3d17, point3d14, point3d4)) # polyline.set_closed(True) # polyline.SetDatabaseDefaults() polylines1.append(polylineArea) point3dArray1 = [point3d9, point3d10, point3d12, point3d13] polylineArea1 = PolylineArea(point3dArray1) # for point3d0 in point3dArray1: # polyline1.Add(point3d0) polylineArea1.method_19( 1, MathHelper.smethod_57(TurnDirection.Right, point3d10, point3d12, point3d7)) polylineArea1.method_19( 3, MathHelper.smethod_57(TurnDirection.Right, point3d13, point3d9, point3d6)) # polylineArea1.set_closed(True) # polyline1.SetDatabaseDefaults(); polylines1.append(polylineArea1) num9 = num5 / 5 for i in range(1, 6): polylineArea0 = polylineArea1.getOffsetCurve(num9 * i) polylines1.append(polylineArea0) # try: # OffsetGapType offsetType = AcadHelper.OffsetType; # try # { # AcadHelper.OffsetType = OffsetGapType.Extend; # num9 = num5 / 5 # for i in range(4): # n = i + 1 # point3dCollection = polyline1.GetOffsetCurves(5) # polyline0 = Polyline() # for point3d0 in point3dCollection: # polyline0.Add(point3d0) # polylines1.append(polyline0) # polylines = polylines1 # } # finally # { # AcadHelper.OffsetType = offsetType; # } # } # catch # { # foreach (Polyline polyline2 in polylines1) # { # if (polyline2 == null) # { # continue; # } # polyline2.Dispose(); # } # throw; # } return polylines1
def method_36_Construct(self, bool_0): polylines = [] point3d5 = self.parametersPanel.pnlWaypoint.Point3d value = float(self.parametersPanel.txtTrack.Value) value1 = float(self.parametersPanel.txtRnpValue.text()) speed = Speed(float(self.parametersPanel.txtIas.text())) altitude = Altitude(float(self.parametersPanel.txtAltitude.text()), AltitudeUnits.FT) num1 = float(self.parametersPanel.txtIsa.text()) value2 = float(self.parametersPanel.txtTime.text()) speed1 = Speed(float(self.parametersPanel.pnlWind.speedBox.text())) num = 15 if (altitude.Feet >= 24500) else 23 speed2 = Speed.smethod_0(speed, num1, altitude) metresPerSecond = value2 * 60 * speed2.MetresPerSecond num2 = math.pow(speed2.Knots + speed1.Knots, 2) / ( 34313 * math.tan(Unit.ConvertDegToRad(num))) * 1852 num3 = value1 * 1852 num4 = num2 * (1 - math.sin(Unit.ConvertDegToRad(20))) / ( 2 * math.cos(Unit.ConvertDegToRad(20))) num5 = value1 * 1852 + 3704 if (num5 < 9260): num5 = 9260 point3d4 = MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(value + 90), num2 / 2) if (self.parametersPanel.cmbOrientation.currentText() != OrientationType.Left) else MathHelper.distanceBearingPoint( point3d5, Unit.ConvertDegToRad(value - 90), num2 / 2) point3d6 = MathHelper.distanceBearingPoint(point3d4, Unit.ConvertDegToRad(value), num4) point3d7 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value + 180), metresPerSecond) num6 = num2 / 2 + 1.414 * num3 num7 = num2 / 2 + num3 point3d8 = MathHelper.distanceBearingPoint(point3d6, Unit.ConvertDegToRad(value), num6) point3d9 = MathHelper.distanceBearingPoint( point3d6, Unit.ConvertDegToRad(value + 90) - math.acos(num7 / num6), num6) point3d10 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 90) + math.acos(num7 / num6), num6) point3d11 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 180), num6) point3d12 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value - 90) - math.acos(num7 / num6), num6) point3d13 = MathHelper.distanceBearingPoint( point3d6, Unit.ConvertDegToRad(value - 90) + math.acos(num7 / num6), num6) point3d = MathHelper.getIntersectionPoint( point3d9, MathHelper.distanceBearingPoint( point3d9, MathHelper.getBearing(point3d6, point3d9) - Unit.ConvertDegToRad(90), 100), point3d8, MathHelper.distanceBearingPoint(point3d8, Unit.ConvertDegToRad(value + 90), 100)) point3d1 = MathHelper.getIntersectionPoint( point3d10, MathHelper.distanceBearingPoint( point3d10, MathHelper.getBearing(point3d7, point3d10) + Unit.ConvertDegToRad(90), 100), point3d11, MathHelper.distanceBearingPoint(point3d11, Unit.ConvertDegToRad(value + 90), 100)) point3d2 = MathHelper.getIntersectionPoint( point3d12, MathHelper.distanceBearingPoint( point3d12, MathHelper.getBearing(point3d7, point3d12) - Unit.ConvertDegToRad(90), 100), point3d11, MathHelper.distanceBearingPoint(point3d11, Unit.ConvertDegToRad(value - 90), 100)) point3d3 = MathHelper.getIntersectionPoint( point3d13, MathHelper.distanceBearingPoint( point3d13, MathHelper.getBearing(point3d6, point3d13) + Unit.ConvertDegToRad(90), 100), point3d8, MathHelper.distanceBearingPoint(point3d8, Unit.ConvertDegToRad(value - 90), 100)) polylines1 = [] polylineArea = None if (bool_0): num8 = num2 / 2 point3d14 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value + 90), num8) point3d15 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value + 90), num8) point3d16 = MathHelper.distanceBearingPoint( point3d7, Unit.ConvertDegToRad(value - 90), num8) point3d17 = MathHelper.distanceBearingPoint( point3d4, Unit.ConvertDegToRad(value - 90), num8) point3dArray = [point3d14, point3d15, point3d16, point3d17] polylineArea = PolylineArea(point3dArray) polylineArea.method_19( 1, -1 ) #MathHelper.smethod_57(TurnDirection.Right, point3d15, point3d16, point3d7)) polylineArea.method_19( 3, -1 ) #MathHelper.smethod_57(TurnDirection.Right, point3d17, point3d14, point3d4)) polylines1.append(polylineArea) point3dArray1 = [point3d9, point3d10, point3d12, point3d13] polylineArea1 = PolylineArea(point3dArray1) # for point3d0 in point3dArray1: # polyline1.Add(point3d0) polylineArea1.method_19( 1, MathHelper.smethod_57(TurnDirection.Right, point3d10, point3d12, point3d7)) polylineArea1.method_19( 3, MathHelper.smethod_57(TurnDirection.Right, point3d13, point3d9, point3d6)) # polylineArea1.set_closed(True) # polyline1.SetDatabaseDefaults(); polylines1.append(polylineArea1) polylineAreaLineList = [ PolylineArea( [polylineArea1[0].Position, polylineArea1[1].Position]), PolylineArea( [polylineArea1[2].Position, polylineArea1[3].Position]) ] polylineAreaArc0 = PolylineArea() polylineAreaArc0.Add(polylineArea1[1]) polylineAreaArc0.Add(PolylineAreaPoint(polylineArea1[2].Position)) polylineAreaArc1 = PolylineArea() polylineAreaArc1.Add(polylineArea1[3]) polylineAreaArc1.Add(PolylineAreaPoint(polylineArea1[0].Position)) polylineAreaArcList = [polylineAreaArc0, polylineAreaArc1] num9 = num5 / 5 polylineAreaArcListResult = [] polylineAreaLineListResult = [] for i in range(1, 6): polylineAreaL0 = polylineAreaLineList[0].getOffsetCurveNo( num9 * i, 4) polylineAreaLineListResult.append(polylineAreaL0) polylineAreaA0 = polylineAreaArcList[0].getOffsetCurveNo( num9 * i, 4) polylineAreaT = PolylineArea() polylineAreaT.Add( PolylineAreaPoint( polylineAreaA0[0].Position, MathHelper.smethod_60( polylineAreaA0[0].Position, polylineAreaA0[int(len(polylineAreaA0) / 2)].Position, polylineAreaA0[len(polylineAreaA0) - 1].Position))) polylineAreaT.Add( PolylineAreaPoint(polylineAreaA0[len(polylineAreaA0) - 1].Position)) polylineAreaArcListResult.append(polylineAreaT) polylineAreaL1 = polylineAreaLineList[1].getOffsetCurveNo( num9 * i, 4) polylineAreaLineListResult.append(polylineAreaL1) polylineAreaA1 = polylineAreaArcList[1].getOffsetCurveNo( num9 * i, 4) polylineAreaT = PolylineArea() polylineAreaT.Add( PolylineAreaPoint( polylineAreaA1[0].Position, MathHelper.smethod_60( polylineAreaA1[0].Position, polylineAreaA1[int(len(polylineAreaA1) / 2)].Position, polylineAreaA1[len(polylineAreaA1) - 1].Position))) polylineAreaT.Add( PolylineAreaPoint(polylineAreaA1[len(polylineAreaA1) - 1].Position)) polylineAreaArcListResult.append(polylineAreaT) polylineAreaLineListResult.append( PolylineArea([ polylineAreaL0[len(polylineAreaL0) - 1].Position, polylineAreaA0[0].Position ])) polylineAreaLineListResult.append( PolylineArea([ polylineAreaA0[len(polylineAreaA0) - 1].Position, polylineAreaL1[0].Position ])) polylineAreaLineListResult.append( PolylineArea([ polylineAreaL1[len(polylineAreaL1) - 1].Position, polylineAreaA1[0].Position ])) polylineAreaLineListResult.append( PolylineArea([ polylineAreaA1[len(polylineAreaA1) - 1].Position, polylineAreaL0[0].Position ])) return polylineAreaLineListResult, polylineAreaArcListResult, polylineArea
def method_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_18(self, double_0): if (len(self) == 0): raise UserWarning, Messages.ERR_INVALID_POLYLINE_AREA_FOR_OFFSET if (MathHelper.smethod_96(double_0)): return self if (self.isCircle): return PolylineArea(None, self.CenterPoint(), self.Radius() + double_0) if (len(self) == 1): return PolylineArea(None, self[0].position, double_0) direction = self.Direction() if (direction != TurnDirection.Left): if (direction != TurnDirection.Right): raise UserWarning, Messages.ERR_INVALID_POLYLINE_AREA_FOR_OFFSET num = -1.5707963267949 else: num = 1.5707963267949 polylineArea = PolylineArea() count = len(self) i = 0 while i < count: position = self[i].position bulge = self[i].Bulge if i != count - 1 : point3d = self[i + 1].position else: point3d = self[0].position if not position.smethod_170(point3d): if not MathHelper.smethod_96(bulge): turnDirection = MathHelper.smethod_7(bulge) point3d1 = MathHelper.smethod_71(position, point3d, bulge) if (turnDirection != direction): point3d2 = MathHelper.distanceBearingPoint(point3d1, MathHelper.getBearing(point3d1, position), MathHelper.calcDistance(point3d1, position) - double_0); point3d3 = MathHelper.distanceBearingPoint(point3d1, MathHelper.getBearing(point3d1, point3d), MathHelper.calcDistance(point3d1, point3d) - double_0); else: point3d2 = MathHelper.distanceBearingPoint(point3d1, MathHelper.getBearing(point3d1, position), MathHelper.calcDistance(point3d1, position) + double_0); point3d3 = MathHelper.distanceBearingPoint(point3d1, MathHelper.getBearing(point3d1, point3d), MathHelper.calcDistance(point3d1, point3d) + double_0); polylineArea.Add(PolylineAreaPoint(point3d2, MathHelper.smethod_57(turnDirection, point3d2, point3d3, point3d1))) polylineArea.Add(PolylineAreaPoint(point3d3, 5)) else: num3 = MathHelper.getBearing(position, point3d) polylineArea.Add(PolylineAreaPoint(MathHelper.distanceBearingPoint(position, num3 + num, double_0))) polylineArea.Add(PolylineAreaPoint(MathHelper.distanceBearingPoint(point3d, num3 + num, double_0), 5)) i += 1 count = polylineArea.Count j = 0 while j < count: position = polylineArea[j].position bulge = polylineArea[j].Bulge if j != 0: num1 = j - 1 else: num1 = count - 1 position1 = polylineArea[num1].position if j != count - 1: num2 = j + 1 else: num2 = 0 point3d = polylineArea[num2].position if (MathHelper.smethod_98(bulge, 5)): bulge1 = polylineArea[num1].Bulge bulge2 = polylineArea[num2].Bulge if (MathHelper.smethod_96(bulge1) and MathHelper.smethod_96(bulge2)): num4 = j + 2 if (j == count - 2): num4 = 0 elif (j == count - 1): num4 = 1 position2 = polylineArea[num4].position num5 = MathHelper.getBearing(position1, position) num6 = MathHelper.getBearing(point3d, position2) turnDirection1 = MathHelper.smethod_63(num5, num6, AngleUnits.Radians) if (turnDirection1 == TurnDirection.Nothing): polylineArea[j].Bulge = 0 elif (turnDirection1 != direction): point3d6 = MathHelper.distanceBearingPoint(position, MathHelper.getBearing(position, position1), 100); point3d7 = MathHelper.distanceBearingPoint(point3d, MathHelper.getBearing(point3d, position2), 100); point3d4 = MathHelper.getIntersectionPoint(point3d6, position, point3d, point3d7) if point3d4 == None: # point3d4 = Point3D.get_Origin() j += 1 continue polylineArea[j].position = point3d4 polylineArea[j].Bulge = 0 polylineArea[num2].position = point3d4 polylineArea[num2].Bulge = 0 else: point3d8 = MathHelper.distanceBearingPoint(position, MathHelper.getBearing(position, position1) + num, double_0) polylineArea[j].Bulge = MathHelper.smethod_57(direction, position, point3d, point3d8) elif not MathHelper.smethod_96(bulge1): turnDirection2 = MathHelper.smethod_7(bulge1) point3d5 = MathHelper.smethod_71(position1, position, bulge1) if turnDirection2 != direction : point3d5 = MathHelper.distanceBearingPoint(point3d5, MathHelper.getBearing(point3d5, position), MathHelper.calcDistance(point3d5, position) + double_0) else: point3d5 = MathHelper.distanceBearingPoint(point3d5, MathHelper.getBearing(point3d5, position), MathHelper.calcDistance(point3d5, position) - double_0) polylineArea[j].Bulge = MathHelper.smethod_57(direction, position, point3d, point3d5) else: point3d9 = MathHelper.distanceBearingPoint(position, MathHelper.getBearing(position, position1) + num, double_0) polylineArea[j].Bulge = MathHelper.smethod_57(direction, position, point3d, point3d9) j += 1 # i = 0 # while i < len(polylineArea): # if polylineArea[i].position == None: # polylineArea.pop(i) # i -= 1 # i += 1 # for i in range(len(polylineArea: # if polylineAreaPoint.position == None: # polylineArea.pop(polylineArea.index(polylineAreaPoint)) return polylineArea
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