diff --git a/Car.py b/Car.py index b176d3d..a171a1b 100644 --- a/Car.py +++ b/Car.py @@ -62,7 +62,7 @@ class Car(): self.alpha = 0.1 self.beta = 0.1 - self.nu = 0.1 + self.nu = 0 self.gamma = 10 self.delta = 0 self.T = uniform(0.9,1.6) @@ -206,7 +206,7 @@ class Car(): connections = self.route[prevInd].getConnections(self.route[edgeInd]) if(len(connections)==0): print("aaaaaaaaa") - return + return None connection = connections[0] linkInd = inter.getLinkIndex(connection) if(linkInd == -1): # Ca devrait pas arriver, mais de toute évidence ça arrive @@ -369,7 +369,7 @@ class Car(): tti, sai = self.calcTti(self.distToInter, self.v, self.route[nextInternalIndex].getLane(0).getSpeed(), self.a) # TODO : laneID ltti, lsai = self.calcTti(self.leaderDist, vleader, leader.vmax, leader.a) - lta = leader.vmax / leader.a # temps ou le leader accelere (i.e on ne gagne pas de vitesse relative) (on considere que leader.a==self.a) + lta = (leader.vmax-vleader) / leader.a # temps ou le leader accelere (i.e on ne gagne pas de vitesse relative) (on considere que leader.a==self.a) marg = lta + (lsai-sai) / self.a # marge à prendre pour accelerer après l'intersection sans que le leader nous rattrape tts = self.v/self.b # time to stop, temps pour s'arreter si on freine mnt @@ -378,6 +378,7 @@ class Car(): # si on est suffisement loin de l'intersection (i.e on s'en fout du leader) # ou si on as le temps d'arriver à l'intersection avant le leader (plus un marge pour garder un distance de sécu) # alors on accelere pour s'inserer + #print(tti, leader.T, marg, ltti) if self.distToInter > self.minSpace + dts or (tti + leader.T + marg) < ltti: self.v = min(vmax, self.v + self.a*dt) #print(self.id, "ca passe") diff --git a/CarController.py b/CarController.py index 8d1fd49..05b61c6 100644 --- a/CarController.py +++ b/CarController.py @@ -100,6 +100,7 @@ class CarController: self.cars=[] self.flows=[] self.t=0 + self.dt=1/60 self.spawnFailed = 0 self.infoWidget = None @@ -114,6 +115,7 @@ class CarController: varWidget.addWidget(varEdit(varWidget, self, "delta", 0.5)) varWidget.addWidget(varEdit(varWidget, self, "T", 0.3)) varWidget.addWidget(varEdit(varWidget, self, "size", 3)) + varWidget.addWidget(varEdit(varWidget, self, "dt", self.dt)) def fromPath(self,path): @@ -157,11 +159,11 @@ class CarController: return filter(lambda c: dist(c.pos, car.pos) < car.minSpace, cars) def update(self): - if self.map.net is None: + if self.map.net is None or self.dt == 0: return - self.t+=1/60 + self.t+=self.dt for car in self.cars: - car.update(1.0/60) + car.update(self.dt) for flow in self.flows: if flow.shouldSpawn(self.t): @@ -173,7 +175,7 @@ class CarController: else: self.spawnFailed += 1 flow.addCar2Counter() - print(f"nope, y as déjà une voiture ici : n°{self.spawnFailed}") + #print(f"nope, y as déjà une voiture ici : n°{self.spawnFailed}") def draw(self,painter): for ind,car in enumerate(self.cars): @@ -191,5 +193,8 @@ class CarController: self.cars.remove(car) def updateConstant(self, name, val): + if name == "dt": + self.dt = val + return for car in self.cars: car.__dict__[name] = val diff --git a/mainLoop.py b/mainLoop.py index a7d6531..07bd33f 100644 --- a/mainLoop.py +++ b/mainLoop.py @@ -86,9 +86,9 @@ class mainLoop(QObject): @threadSafe def quickLoad(self): - self.map.fromPath("test_calc_dist.net.xml") + self.map.fromPath("test12.net.xml") self.painter.generateTransform() - self.controller.fromPath("test_calc_dist.rou.xml") + self.controller.fromPath("test21.rou.xml") self.controller.prepareRoute() def updateFps(self): diff --git a/test21.rou.xml b/test21.rou.xml new file mode 100644 index 0000000..e7eefc8 --- /dev/null +++ b/test21.rou.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + diff --git a/varEdit.py b/varEdit.py index 523b3bd..e0ea353 100644 --- a/varEdit.py +++ b/varEdit.py @@ -3,7 +3,7 @@ ################################################################################ ## Form generated from reading UI file 'varEdit.ui' ## -## Created by: Qt User Interface Compiler version 6.2.3 +## Created by: Qt User Interface Compiler version 6.3.0 ## ## WARNING! All changes made in this file will be lost when recompiling UI file! ################################################################################ @@ -32,6 +32,7 @@ class Ui_varEdit(object): self.value = QDoubleSpinBox(varEdit) self.value.setObjectName(u"value") + self.value.setDecimals(5) self.horizontalLayout.addWidget(self.value) diff --git a/varEdit.ui b/varEdit.ui index 00341cd..2df432a 100644 --- a/varEdit.ui +++ b/varEdit.ui @@ -22,7 +22,11 @@ - + + + 5 + +