Esempio n. 1
0
    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
Esempio n. 2
0
    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")
Esempio n. 3
0
    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