def initiateHGraph(self): self.sortByYValue(self.hCuts) for i in range(len(self.hCuts)): hCellCCW = polygonNode.polygonNode() hCellCW = polygonNode.polygonNode() ccwVerts = [] cwVerts = [] extCut = self.getExtendedHCut(self.hCuts[i]) if extCut == self.hCuts[i]: ccwVerts = self.findCounterclockwiseSubpolygonFromHCut(self.hCuts[i]) cwVerts = self.findClockwiseSubpolygonFromHCut(self.hCuts[i]) else: if self.poly.pointsUp(self.hCuts[i], extCut): ccwVerts = self.findCounterclockwiseSubpolygonFromHCut(self.hCuts[i]) if extCut.p1() == self.hCuts[i].p1(): cwVerts = self.findClockwiseSubpolygonFromHCut(extCut) else: cwVerts = self.findClockwiseSubpolygonFromHCut(self.hCuts[i]) if extCut.p1() == self.hCuts[i].p1(): ccwVerts = self.findCounterclockwiseSubpolygonFromHCut(extCut) if len(ccwVerts) > 0: hCellCCW.setPolygon(ccwVerts) print "h cell ccw:", print hCellCCW.getPolygon().getVertices() self.hGraph.append(hCellCCW) if len(cwVerts) > 0: hCellCW.setPolygon(cwVerts) print "h cell cw:", print hCellCW.getPolygon().getVertices() self.hGraph.append(hCellCW)
def initiateBeamGraph(self): self.sortByXValue(self.beams) for i in range(len(self.beams)): beamCellCCW = polygonNode.polygonNode() beamCellCW = polygonNode.polygonNode() ccwVerts = [] cwVerts = [] extBeam = self.getExtendedBeam(self.beams[i]) if extBeam == self.beams[i]: ccwVerts = self.findCounterclockwiseSubpolygonFromBeam(self.beams[i]) cwVerts = self.findClockwiseSubpolygonFromBeam(self.beams[i]) else: if self.poly.pointsRight(self.beams[i], extBeam): ccwVerts = self.findCounterclockwiseSubpolygonFromBeam(self.beams[i]) if extBeam.p1() == self.beams[i].p1(): cwVerts = self.findClockwiseSubpolygonFromBeam(extBeam) else: cwVerts = self.findClockwiseSubpolygonFromBeam(self.beams[i]) if extBeam.p1() == self.beams[i].p1(): ccwVerts = self.findCounterclockwiseSubpolygonFromBeam(extBeam) if len(ccwVerts) > 0: beamCellCCW.setPolygon(ccwVerts) print "beam cell ccw:", print beamCellCCW.getPolygon().getVertices() self.beamGraph.append(beamCellCCW) if len(cwVerts) > 0: beamCellCW.setPolygon(cwVerts) print "beam cell cw:", print beamCellCW.getPolygon().getVertices() self.beamGraph.append(beamCellCW)
def setCriticalBeam(self): pursuerCell = polygonNode.polygonNode() for cell in self.hGraph: if cell.hasPursuer(self.pursuerCoord): pursuerCell = cell for beam in self.beams: if beam.p1().x() >= self.evaderCoord.x() and beam.p1().x() <= self.pursuerCoord.x() or beam.p1().x() <= self.evaderCoord.x() and beam.p1().x() >= self.pursuerCoord.x(): extBeam = self.getExtendedBeam(beam) if self.beamIntersectsWithEdge(self.getExtendedBeam(beam), QLineF(pursuerCell.getPolygon().getVertices()[0], pursuerCell.getPolygon().getVertices()[len(pursuerCell.getPolygon().getVertices())-2]), QPointF()): print extBeam self.criticalBeam = extBeam