diff --git a/Car.py b/Car.py index 3ed449d..42853cf 100644 --- a/Car.py +++ b/Car.py @@ -50,6 +50,8 @@ class Car(): self.v=0 self.a=10 self.b=20 + self.leaderBefore=False + self.distToInter=0 self.vmax=0 @@ -125,7 +127,9 @@ class Car(): edgeInd+=1 carComing = self.getLeaderAtIntersection(prevInd,edgeInd) if(carComing is not None): - self.leaderDist = l + 0.3*carComing[0] + self.distToInter = l + self.leaderDist = carComing[0] + self.leaderBefore = True return carComing[1] if(not self.route[edgeInd].isSpecial()): prevInd = edgeInd @@ -143,6 +147,7 @@ class Car(): l+=dist(laneShape[shapeInd], closest.pos) if l <= maxDist: self.leaderDist = l + self.leaderBefore = False return closest else: return @@ -227,14 +232,15 @@ class Car(): painter.drawText(QPointF(0,0),"vroom") self.vroom -= 1 painter.restore() - #painter.drawEllipse(pt,100,100) + elSize = self.v * self.T + painter.drawEllipse(pt,elSize, elSize) def conduite(self,vmax,leader,dt): - if self.id == "f_00" and self.controller.t%10>5: + """if self.id == "f_00" and self.controller.t%10>5: self.v = 0 return - + """ if(leader is None): self.v = self.vmax self.updateGraph(self.v, vmax, 0) @@ -245,6 +251,16 @@ class Car(): vleader=leader.v # vitesse de la voiture leader bleader=leader.b + if(self.leaderBefore): + if(vleader == 0): + return + if(self.distToInter > (self.T * self.vmax) or ((self.distToInter / self.vmax) < (self.leaderDist / vleader) - 2*self.T)): + self.v=self.vmax + else: + self.v = 0 + self.updateGraph(self.v, vmax, 0) + return + vbar=(self.v+vleader)/2 bbar=(bleader+self.b)/2