def test_getAcuteAngle(self): v5 = constructIntersection(withMovements=True) e15 = v5.getInEdge("1") e52 = v5.getOutEdge("2") e25 = v5.getInEdge("2") e35 = v5.getInEdge("3") e54 = v5.getOutEdge("4") e45 = v5.getInEdge("4") assert e15.getAcuteAngle(e52) == 90 assert e52.getAcuteAngle(e15) == 90 assert e15.getAcuteAngle(e54) == 180 assert e15.getAcuteAngle(e45) == 180 net = getSimpleNet() v5 = net.getVertex("5") v8 = net.getVertex("8") e58 = Edge(v5, v8, 3) net.addEdge(e58) e15 = net.getEdge("1", "5") e51 = net.getEdge("5", "1") assert e15.getAcuteAngle(e58) == 135 assert e51.getAcuteAngle(e58) == 135 assert e58.getAcuteAngle(e15) == 135 assert e58.getAcuteAngle(e51) == 135 e85 = Edge(v8, v5, 2) net.addEdge(e85) assert e15.getAcuteAngle(e85) == 135 assert e51.getAcuteAngle(e85) == 135 assert e85.getAcuteAngle(e15) == 135 assert e85.getAcuteAngle(e51) == 135
def test_construction(self): v1 = Vertex("1", 1.0, 1.0) v2 = Vertex("2", 2.0, 2.0) edge12 = Edge(v1, v2, 3) assert edge12.getNumLanes() == 3 assert edge12.getNumOutMovements() == 0 assert edge12.getNumInMovements() == 0 assert not edge12.hasOutMovement("33") assert not edge12.hasInMovement("2345")
def splitEdge(self, edgeToSplit): upVertex = edgeToSplit.startVertex downVertex = edgeToSplit.endVertex midX = (upVertex.x + downVertex.x) / 2 midY = (upVertex.y + downVertex.y) / 2 middleVertex = Vertex(self.getNewVertexId(), midX, midY) self.addVertex(middleVertex) iMovs = [(mov.inEdge, mov.numLanes) for mov in edgeToSplit.iterInMovements()] eMovs = [(mov.outEdge, mov.numLanes) for mov in edgeToSplit.iterOutMovements()] numLanes = edgeToSplit.getNumLanes() self.deleteEdge(edgeToSplit) newEdge1 = Edge(upVertex, middleVertex, numLanes) newEdge2 = Edge(middleVertex, downVertex, numLanes) self.addEdge(newEdge1) self.addEdge(newEdge2) for upEdge, numInLanes in iMovs: newMovement = Movement(upEdge, newEdge1, numInLanes) upEdge.addOutMovement(newMovement) for downEdge, numOutLanes, in eMovs: newMovement = Movement(newEdge2, downEdge, numOutLanes) newEdge2.addOutMovement(newMovement) movement = Movement(newEdge1, newEdge2, numLanes) newEdge1.addOutMovement(movement) return newEdge1, newEdge2