graph vitesse

This commit is contained in:
leo 2022-02-14 22:09:58 +01:00
parent 2c3cfd21a8
commit d6ce476f33
Signed by: leo
GPG Key ID: 0DD993BFB2B307DB
5 changed files with 50 additions and 0 deletions

3
Car.py
View File

@ -82,6 +82,9 @@ class Car:
vsec=vleader+(S-vmax*T)/(vbar/bbar+T) vsec=vleader+(S-vmax*T)/(vbar/bbar+T)
vd=min(self.v+self.a*dt,vmax,vsec) vd=min(self.v+self.a*dt,vmax,vsec)
self.v=max(0,vd) self.v=max(0,vd)
self.infoWidg.addSpeedPoint(2,self.controller.t,self.v)
self.infoWidg.addSpeedPoint(0,self.controller.t,vmax)
self.infoWidg.addSpeedPoint(1,self.controller.t,vsec)
def update(self,dt): def update(self,dt):
leaders=self.controller.getCarsOnEdge(self.route[self.index].getID()) leaders=self.controller.getCarsOnEdge(self.route[self.index].getID())

View File

@ -3,12 +3,39 @@ from Car import Car
from carInfo import Ui_carInfo from carInfo import Ui_carInfo
from PySide6.QtWidgets import QWidget, QLabel from PySide6.QtWidgets import QWidget, QLabel
from PySide6.QtCore import Qt from PySide6.QtCore import Qt
from PySide6.QtCharts import QChart, QSplineSeries, QLineSeries
class carInfo(QWidget): class carInfo(QWidget):
def __init__(self): def __init__(self):
super(carInfo,self).__init__() super(carInfo,self).__init__()
self.ui = Ui_carInfo() self.ui = Ui_carInfo()
self.ui.setupUi(self) self.ui.setupUi(self)
self.maxV = 0
self.chart = self.ui.speedGraph.chart()
speedsNames = ["vmax","vsec","Vitesse (m.s^-1)"]
self.speedSeries = []
for ind,s in enumerate(speedsNames):
self.speedSeries.append(QLineSeries())
self.speedSeries[ind].setName(s)
self.chart.addSeries(self.speedSeries[ind])
self.chart.createDefaultAxes()
def addSpeedPoint(self,ind,t,val):
if(t>500):
self.speedSeries[ind].remove(0)
self.speedSeries[ind].append(t,val)
xAxis = self.chart.axes(Qt.Horizontal,self.speedSeries[ind])[0]
xAxis.setRange(max(t-500,0),t)
if(val>self.maxV):
self.maxV = val
yAxis = self.chart.axes(Qt.Vertical, self.speedSeries[ind])[0]
yAxis.setMax(val+1)
self.ui.speedGraph.update()
def setVal(self,key,val): def setVal(self,key,val):
obj = self.findChild(QLabel,key) obj = self.findChild(QLabel,key)
@ -21,9 +48,11 @@ class CarController:
def __init__(self,parentMap): def __init__(self,parentMap):
self.map=parentMap self.map=parentMap
self.cars=[] self.cars=[]
self.t=0
def fromPath(self,path): def fromPath(self,path):
self.cars=[] self.cars=[]
self.t=0
while(self.infoWidget.count() != 0): while(self.infoWidget.count() != 0):
self.infoWidget.removeItem(0) self.infoWidget.removeItem(0)
@ -47,6 +76,7 @@ class CarController:
def update(self): def update(self):
if(self.map.net is None): if(self.map.net is None):
return return
self.t+=1
for car in self.cars: for car in self.cars:
car.update(1.0/60) car.update(1.0/60)

View File

@ -8,6 +8,7 @@
## WARNING! All changes made in this file will be lost when recompiling UI file! ## WARNING! All changes made in this file will be lost when recompiling UI file!
################################################################################ ################################################################################
from PySide6.QtCharts import QChartView
from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale, from PySide6.QtCore import (QCoreApplication, QDate, QDateTime, QLocale,
QMetaObject, QObject, QPoint, QRect, QMetaObject, QObject, QPoint, QRect,
QSize, QTime, QUrl, Qt) QSize, QTime, QUrl, Qt)
@ -50,6 +51,11 @@ class Ui_carInfo(object):
self.verticalLayout.addWidget(self.Leader) self.verticalLayout.addWidget(self.Leader)
self.speedGraph = QChartView(carInfo)
self.speedGraph.setObjectName(u"speedGraph")
self.verticalLayout.addWidget(self.speedGraph)
self.retranslateUi(carInfo) self.retranslateUi(carInfo)

View File

@ -49,8 +49,18 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QChartView" name="speedGraph"/>
</item>
</layout> </layout>
</widget> </widget>
<customwidgets>
<customwidget>
<class>QChartView</class>
<extends>QGraphicsView</extends>
<header>qchartview</header>
</customwidget>
</customwidgets>
<resources/> <resources/>
<connections/> <connections/>
</ui> </ui>

View File

@ -2,6 +2,7 @@ from Map import Map
from CarController import CarController from CarController import CarController
from PySide6.QtWidgets import QFileDialog from PySide6.QtWidgets import QFileDialog
from PySide6.QtCore import QElapsedTimer
class mainLoop(): class mainLoop():
def __init__(self, parent): def __init__(self, parent):