fix
This commit is contained in:
parent
06b0f0caf1
commit
a8b3647ddd
25
Car.py
25
Car.py
@ -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"))
|
||||
|
@ -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:
|
||||
|
@ -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 == '':
|
||||
|
Loading…
x
Reference in New Issue
Block a user