This commit is contained in:
leo 2022-02-21 21:30:30 +01:00
parent 06b0f0caf1
commit a8b3647ddd
Signed by: leo
GPG Key ID: 0DD993BFB2B307DB
3 changed files with 26 additions and 9 deletions

25
Car.py
View File

@ -91,14 +91,16 @@ class Car():
carsHere = self.controller.getCarsOnLane(self.route[edgeInd].getID(), laneId) carsHere = self.controller.getCarsOnLane(self.route[edgeInd].getID(), laneId)
while(l<maxDist): while(l<maxDist):
endPos = laneShape[shapeInd+1] endPos = laneShape[shapeInd+1]
carsHere = filter(lambda c: c.laneInd == shapeInd, carsHere) #carsHere = filter(lambda c: c.laneInd == shapeInd, carsHere)
if(shapeInd == self.laneInd and edgeInd == self.index):
if l == 0:
carsHere = filter(lambda c: dist(c.pos,endPos) < dist(self.pos,endPos),carsHere) carsHere = filter(lambda c: dist(c.pos,endPos) < dist(self.pos,endPos),carsHere)
closest = None closest = None
try: try:
closest = min(carsHere, key=lambda c: dist(c.pos,laneShape[shapeInd])) closest = min(carsHere, key=lambda c: dist(c.pos,laneShape[shapeInd]))
except ValueError: except ValueError as e:
if(shapeInd == self.laneInd and edgeInd == self.index): if l == 0:
l+=dist(self.pos,endPos) l+=dist(self.pos,endPos)
else: else:
l+=dist(laneShape[shapeInd],endPos) l+=dist(laneShape[shapeInd],endPos)
@ -113,12 +115,21 @@ class Car():
laneShape = newLane[0] laneShape = newLane[0]
laneId = newLane[2] laneId = newLane[2]
else: else:
return closest if l == 0:
l+=dist(self.pos, closest.pos)
else:
l+=dist(laneShape[shapeInd], closest.pos)
if l <= maxDist:
self.leaderDist = l
return closest
else:
return
return return
def draw(self,painter): def draw(self,painter):
pt = QPointF(*self.pos) pt = QPointF(*self.pos)
painter.drawEllipse(pt,3,3) painter.drawEllipse(pt,3,3)
#painter.drawEllipse(pt,100,100)
def conduite(self,vmax,leader,dt): def conduite(self,vmax,leader,dt):
if(leader is None): if(leader is None):
@ -140,7 +151,7 @@ class Car():
self.signals.addGraphPt.emit((1,self.controller.t,vsec)) self.signals.addGraphPt.emit((1,self.controller.t,vsec))
def update(self,dt): def update(self,dt):
self.leader=self.getLeader(50) self.leader=self.getLeader(100)
self.conduite(self.vmax,self.leader,dt) self.conduite(self.vmax,self.leader,dt)
@ -169,4 +180,4 @@ class Car():
self.signals.updateDisp.emit(("Position", self.pos)) self.signals.updateDisp.emit(("Position", self.pos))
self.signals.updateDisp.emit(("Vitesse", self.v)) self.signals.updateDisp.emit(("Vitesse", self.v))
self.signals.updateDisp.emit(("Leader", self.leader if self.leader is None else self.leader.id)) self.signals.updateDisp.emit(("Leader", self.leader if self.leader is None else f"{self.leader.id} @ {self.leaderDist:.2f}m"))

View File

@ -95,7 +95,7 @@ class CarController:
def getCarsOnLane(self,edgeID,laneID): def getCarsOnLane(self,edgeID,laneID):
cars = self.getCarsOnEdge(edgeID) cars = self.getCarsOnEdge(edgeID)
return cars #filter(lambda c: c.laneId == laneID,cars) return filter(lambda c: c.laneId == laneID,cars)
def update(self): def update(self):
if self.map.net is None: if self.map.net is None:

View File

@ -1,3 +1,5 @@
import sys
from Map import Map from Map import Map
from CarController import CarController from CarController import CarController
@ -32,7 +34,11 @@ class mainLoop(QObject):
self.fpsTimer.start() self.fpsTimer.start()
def update(self): def update(self):
self.controller.update() try:
self.controller.update()
except:
(type, value, traceback) = sys.exc_info()
print(type, value, traceback)
def openNetwork(self, filename): def openNetwork(self, filename):
if filename == '': if filename == '':