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)
while(l<maxDist):
endPos = laneShape[shapeInd+1]
carsHere = filter(lambda c: c.laneInd == shapeInd, carsHere)
if(shapeInd == self.laneInd and edgeInd == self.index):
#carsHere = filter(lambda c: c.laneInd == shapeInd, carsHere)
if l == 0:
carsHere = filter(lambda c: dist(c.pos,endPos) < dist(self.pos,endPos),carsHere)
closest = None
try:
closest = min(carsHere, key=lambda c: dist(c.pos,laneShape[shapeInd]))
except ValueError:
if(shapeInd == self.laneInd and edgeInd == self.index):
except ValueError as e:
if l == 0:
l+=dist(self.pos,endPos)
else:
l+=dist(laneShape[shapeInd],endPos)
@ -113,12 +115,21 @@ class Car():
laneShape = newLane[0]
laneId = newLane[2]
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
def draw(self,painter):
pt = QPointF(*self.pos)
painter.drawEllipse(pt,3,3)
#painter.drawEllipse(pt,100,100)
def conduite(self,vmax,leader,dt):
if(leader is None):
@ -140,7 +151,7 @@ class Car():
self.signals.addGraphPt.emit((1,self.controller.t,vsec))
def update(self,dt):
self.leader=self.getLeader(50)
self.leader=self.getLeader(100)
self.conduite(self.vmax,self.leader,dt)
@ -169,4 +180,4 @@ class Car():
self.signals.updateDisp.emit(("Position", self.pos))
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):
cars = self.getCarsOnEdge(edgeID)
return cars #filter(lambda c: c.laneId == laneID,cars)
return filter(lambda c: c.laneId == laneID,cars)
def update(self):
if self.map.net is None:

View File

@ -1,3 +1,5 @@
import sys
from Map import Map
from CarController import CarController
@ -32,7 +34,11 @@ class mainLoop(QObject):
self.fpsTimer.start()
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):
if filename == '':