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
+
+