einiges zeugs usw ... blabla brummbrumm dada
git-svn-id: http://svn.lsim.tuxzone.org/trunk@33 4bec179b-ab65-46ed-a5f8-55b8b5c735d0
This commit is contained in:
Binary file not shown.
14
lsim.kdevses
14
lsim.kdevses
@@ -3,25 +3,25 @@
|
|||||||
<KDevPrjSession>
|
<KDevPrjSession>
|
||||||
<DocsAndViews NumberOfDocuments="8" >
|
<DocsAndViews NumberOfDocuments="8" >
|
||||||
<Doc0 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/graphicsellipseitem.cpp" >
|
<Doc0 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/graphicsellipseitem.cpp" >
|
||||||
<View0 Encoding="" line="185" Type="Source" />
|
<View0 Encoding="" Type="Source" />
|
||||||
</Doc0>
|
</Doc0>
|
||||||
<Doc1 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/simulscene.cpp" >
|
<Doc1 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/simulscene.cpp" >
|
||||||
<View0 Encoding="" line="57" Type="Source" />
|
<View0 Encoding="" line="818" Type="Source" />
|
||||||
</Doc1>
|
</Doc1>
|
||||||
<Doc2 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/main.cpp" >
|
<Doc2 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/main.cpp" >
|
||||||
<View0 Encoding="" line="0" Type="Source" />
|
<View0 Encoding="" Type="Source" />
|
||||||
</Doc2>
|
</Doc2>
|
||||||
<Doc3 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/graphicsellipseitem.h" >
|
<Doc3 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/graphicsellipseitem.h" >
|
||||||
<View0 Encoding="" line="81" Type="Source" />
|
<View0 Encoding="" Type="Source" />
|
||||||
</Doc3>
|
</Doc3>
|
||||||
<Doc4 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/lsim.h" >
|
<Doc4 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/lsim.h" >
|
||||||
<View0 Encoding="" line="124" Type="Source" />
|
<View0 Encoding="" Type="Source" />
|
||||||
</Doc4>
|
</Doc4>
|
||||||
<Doc5 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/lsim.cpp" >
|
<Doc5 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/lsim.cpp" >
|
||||||
<View0 Encoding="" line="105" Type="Source" />
|
<View0 Encoding="" Type="Source" />
|
||||||
</Doc5>
|
</Doc5>
|
||||||
<Doc6 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/graphicsview.cpp" >
|
<Doc6 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/graphicsview.cpp" >
|
||||||
<View0 Encoding="" line="105" Type="Source" />
|
<View0 Encoding="" Type="Source" />
|
||||||
</Doc6>
|
</Doc6>
|
||||||
<Doc7 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/graphicsview.h" >
|
<Doc7 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/graphicsview.h" >
|
||||||
<View0 Encoding="" line="40" Type="Source" />
|
<View0 Encoding="" line="40" Type="Source" />
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
#include "constants.h"
|
#include "constants.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <climits>
|
#include <climits>
|
||||||
|
#include <QLocale>
|
||||||
|
|
||||||
GraphicsEllipseItem::GraphicsEllipseItem() {
|
GraphicsEllipseItem::GraphicsEllipseItem() {
|
||||||
//setFlag(ItemIsMovable);
|
//setFlag(ItemIsMovable);
|
||||||
@@ -79,6 +80,22 @@ void GraphicsEllipseItem::handleSceneChange(const QList<QRectF> & /*region*/) {
|
|||||||
emit ScenePosChanged(myScenePos);
|
emit ScenePosChanged(myScenePos);
|
||||||
emit ScenePosXChanged(myScenePos.x());
|
emit ScenePosXChanged(myScenePos.x());
|
||||||
emit ScenePosYChanged(myScenePos.y());
|
emit ScenePosYChanged(myScenePos.y());
|
||||||
|
|
||||||
|
SimulScene* myScene = dynamic_cast<SimulScene*>(scene());
|
||||||
|
if (myScene != 0) {
|
||||||
|
QString ScenePosPxStringX(QLocale().toString(myScenePos.x(),'g',3));
|
||||||
|
ScenePosPxStringX.append(" px");
|
||||||
|
QString ScenePosPxStringY(QLocale().toString(myScenePos.y(),'g',3));
|
||||||
|
ScenePosPxStringY.append(" px");
|
||||||
|
QString ScenePosMStringX(QLocale().toString(myScenePos.x()*myScene->getMeterPerPx(),'g',3));
|
||||||
|
ScenePosMStringX.append(" m");
|
||||||
|
QString ScenePosMStringY(QLocale().toString(myScenePos.y()*myScene->getMeterPerPx(),'g',3));
|
||||||
|
ScenePosMStringY.append(" m");
|
||||||
|
emit ScenePosXChangedPixel(ScenePosPxStringX);
|
||||||
|
emit ScenePosYChangedPixel(ScenePosPxStringY);
|
||||||
|
emit ScenePosXChangedMeter(ScenePosMStringX);
|
||||||
|
emit ScenePosYChangedMeter(ScenePosMStringY);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -122,17 +139,16 @@ void GraphicsEllipseItem::calculateProbePath(QPointF startPoint) {
|
|||||||
|
|
||||||
double powerX = myScene->getPowerAt(currProbePath->at(i-1), charge, speedListX->at(i-1),speedListY->at(i-1), 'x');
|
double powerX = myScene->getPowerAt(currProbePath->at(i-1), charge, speedListX->at(i-1),speedListY->at(i-1), 'x');
|
||||||
double powerY = myScene->getPowerAt(currProbePath->at(i-1), charge, speedListX->at(i-1),speedListY->at(i-1), 'y');
|
double powerY = myScene->getPowerAt(currProbePath->at(i-1), charge, speedListX->at(i-1),speedListY->at(i-1), 'y');
|
||||||
|
|
||||||
//automatische Zeitschrittanpassung 0.008
|
|
||||||
if (isAdaptiveStepControlEnabled()&&combinedSpeed != 0) timePerStep = getAdaptiveStepLength()/(combinedSpeed/meterPerPx);
|
|
||||||
//if (timePerStep < (1/10.0 * myScene->getTimePerStep())) timePerStep = 1/10.0 * myScene->getTimePerStep();
|
|
||||||
//if (timePerStep > (19.0/10.0 * myScene->getTimePerStep())) timePerStep = 19.0/10.0 * myScene->getTimePerStep();
|
|
||||||
double combinedPower = sqrt(powerX*powerX+powerY*powerY);
|
double combinedPower = sqrt(powerX*powerX+powerY*powerY);
|
||||||
if (isAdaptiveStepControlEnabled() && combinedPower !=0) {
|
|
||||||
timePerStep = fabs((-combinedSpeed + sqrt(combinedSpeed*combinedSpeed + 2*(combinedPower/myMasse)*getAdaptiveStepLength()*meterPerPx)) / (combinedPower/myMasse));
|
//automatische Zeitschrittanpassung
|
||||||
|
//if (isAdaptiveStepControlEnabled()&&combinedSpeed != 0) timePerStep = getAdaptiveStepLength()/(combinedSpeed/meterPerPx);
|
||||||
|
//if (isAdaptiveStepControlEnabled() && combinedPower !=0) {
|
||||||
|
// timePerStep = fabs((-combinedSpeed + sqrt(combinedSpeed*combinedSpeed + 2*(combinedPower/myMasse)*getAdaptiveStepLength()*meterPerPx)) / (combinedPower/myMasse));
|
||||||
|
//}
|
||||||
|
if (isAdaptiveStepControlEnabled() && (combinedPower !=0||combinedSpeed != 0)) {
|
||||||
|
timePerStep = getAdaptiveStepLength()*meterPerPx/sqrt(2*(combinedPower/myMasse)*getAdaptiveStepLength()*meterPerPx+combinedSpeed*combinedSpeed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//qDebug()<<timePerStep;
|
//qDebug()<<timePerStep;
|
||||||
|
|
||||||
double deltaSpeedX = (powerX/myMasse * timePerStep);
|
double deltaSpeedX = (powerX/myMasse * timePerStep);
|
||||||
@@ -146,44 +162,6 @@ void GraphicsEllipseItem::calculateProbePath(QPointF startPoint) {
|
|||||||
|
|
||||||
//qDebug() << deltaDistY;
|
//qDebug() << deltaDistY;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//if (i >= 4) {
|
|
||||||
|
|
||||||
|
|
||||||
// double dvx = (-9*speedListX->at(i-4)+37*speedListX->at(i-3)-59*speedListX->at(i-2)+55*speedListX->at(i-1))/24.0;
|
|
||||||
// double dvy = (-9*speedListY->at(i-4)+37*speedListY->at(i-3)-59*speedListY->at(i-2)+55*speedListY->at(i-1))/24.0;
|
|
||||||
//double dvx = (xp) / timePerStep ;
|
|
||||||
//double dvy = (yp) / timePerStep ;
|
|
||||||
|
|
||||||
// deltaDistX = timePerStep/24.0 *(speedListX->at(i-3)- 5*speedListX->at(i-2)+19*speedListX->at(i-1)+9*dvx);
|
|
||||||
// deltaDistY = timePerStep/24.0 *(speedListY->at(i-3)- 5*speedListY->at(i-2)+19*speedListY->at(i-1)+9*dvy);
|
|
||||||
//qDebug()<< deltaDistX<< " "<< deltaDistY;
|
|
||||||
|
|
||||||
//}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// double k1x = deltaDistX;
|
|
||||||
// double k1y = deltaDistY;
|
|
||||||
// QPointF k2point = QPointF(currProbePath->at(i-1).x() * meterPerPx + k1x/2.0,currProbePath->at(i-1).y()* meterPerPx + k1y/2.0);
|
|
||||||
// double k2x = myScene->getPowerAt( k2point , charge, k1x/timePerStep,k1y/timePerStep, 'x') /myMasse * timePerStep/2.0 * timePerStep;
|
|
||||||
// double k2y = myScene->getPowerAt( k2point , charge, k1x/timePerStep,k1y/timePerStep, 'y') /myMasse * timePerStep/2.0 * timePerStep;
|
|
||||||
// QPointF k3point = QPointF(currProbePath->at(i-1).x()* meterPerPx + k2x/2.0,currProbePath->at(i-1).y()* meterPerPx + k2y/2.0);
|
|
||||||
// double k3x = myScene->getPowerAt( k3point , charge, k2x/timePerStep,k2y/timePerStep, 'x') /myMasse * timePerStep/2.0 * timePerStep;
|
|
||||||
// double k3y = myScene->getPowerAt( k3point , charge, k2x/timePerStep,k2y/timePerStep, 'y') /myMasse * timePerStep/2.0 * timePerStep;
|
|
||||||
// QPointF k4point = QPointF(currProbePath->at(i-1).x() + k3x,currProbePath->at(i-1).y() + k3y);
|
|
||||||
// double k4x = myScene->getPowerAt( k4point , charge, k3x/timePerStep,k3y/timePerStep, 'x') /myMasse * timePerStep * timePerStep;
|
|
||||||
// double k4y = myScene->getPowerAt( k4point , charge, k3x/timePerStep,k3y/timePerStep, 'y') /myMasse * timePerStep * timePerStep;
|
|
||||||
//
|
|
||||||
// deltaDistX = (k1x +2*k2x+2*k3x+k4x)/6.0;
|
|
||||||
// deltaDistY = (k1y +2*k2y+2*k3y+k4y)/6.0;
|
|
||||||
|
|
||||||
|
|
||||||
QPointF newPoint(currProbePath->at(i-1).x() + deltaDistX/meterPerPx ,currProbePath->at(i-1).y() + deltaDistY/meterPerPx);
|
QPointF newPoint(currProbePath->at(i-1).x() + deltaDistX/meterPerPx ,currProbePath->at(i-1).y() + deltaDistY/meterPerPx);
|
||||||
|
|
||||||
//Scrollbar int Probleme vermeiden
|
//Scrollbar int Probleme vermeiden
|
||||||
@@ -205,7 +183,7 @@ void GraphicsEllipseItem::calculateProbePath(QPointF startPoint) {
|
|||||||
if (i%path_entry_step == 0 || i==currProbePath->count()) flightPath.lineTo(currProbePath->at(i));
|
if (i%path_entry_step == 0 || i==currProbePath->count()) flightPath.lineTo(currProbePath->at(i));
|
||||||
}
|
}
|
||||||
|
|
||||||
qDebug()<< "Probe Path: " <<*currProbePath;
|
//qDebug()<< "Probe Path: " <<*currProbePath;
|
||||||
//qDebug()<< "speed x: "<<*speedListX;
|
//qDebug()<< "speed x: "<<*speedListX;
|
||||||
//qDebug()<< "speed y: "<<*speedListY;
|
//qDebug()<< "speed y: "<<*speedListY;
|
||||||
//qDebug()<<speedListY->at(12);
|
//qDebug()<<speedListY->at(12);
|
||||||
@@ -335,3 +313,13 @@ void GraphicsEllipseItem::setAdaptiveStepLength ( double theValue ) {
|
|||||||
adaptiveStepLength = theValue;
|
adaptiveStepLength = theValue;
|
||||||
emit adaptiveStepLengthChanged(theValue);
|
emit adaptiveStepLengthChanged(theValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QList< double >* GraphicsEllipseItem::getSpeedListX() const {
|
||||||
|
return speedListX;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QList< double >* GraphicsEllipseItem::getSpeedListY() const {
|
||||||
|
return speedListY;
|
||||||
|
}
|
||||||
|
|||||||
@@ -54,6 +54,8 @@ class GraphicsEllipseItem : public QObject , public QGraphicsEllipseItem {
|
|||||||
double getRealSimulTime() const;
|
double getRealSimulTime() const;
|
||||||
bool isAdaptiveStepControlEnabled() const;
|
bool isAdaptiveStepControlEnabled() const;
|
||||||
double getAdaptiveStepLength() const;
|
double getAdaptiveStepLength() const;
|
||||||
|
QList< double >* getSpeedListX() const;
|
||||||
|
QList< double >* getSpeedListY() const;
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -124,6 +126,11 @@ class GraphicsEllipseItem : public QObject , public QGraphicsEllipseItem {
|
|||||||
void adaptiveStepControlChanged(bool truefalse);
|
void adaptiveStepControlChanged(bool truefalse);
|
||||||
void adaptiveStepLengthChanged(double length);
|
void adaptiveStepLengthChanged(double length);
|
||||||
|
|
||||||
|
void ScenePosXChangedPixel(QString newX);
|
||||||
|
void ScenePosYChangedPixel(QString newY);
|
||||||
|
void ScenePosXChangedMeter(QString newX);
|
||||||
|
void ScenePosYChangedMeter(QString newY);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
78
src/lsim.cpp
78
src/lsim.cpp
@@ -301,6 +301,7 @@ void lsim::initWindowMode(WindowMode newMode) {
|
|||||||
removeDockWidget(probeItemDock);
|
removeDockWidget(probeItemDock);
|
||||||
removeDockWidget(sceneDock);
|
removeDockWidget(sceneDock);
|
||||||
removeDockWidget(simulOptDock);
|
removeDockWidget(simulOptDock);
|
||||||
|
removeDockWidget(simulDataDock);
|
||||||
gview->setDragMode(QGraphicsView::NoDrag);
|
gview->setDragMode(QGraphicsView::NoDrag);
|
||||||
gview->setInteractive(true);
|
gview->setInteractive(true);
|
||||||
|
|
||||||
@@ -310,9 +311,9 @@ void lsim::initWindowMode(WindowMode newMode) {
|
|||||||
|
|
||||||
addToolBar(sceneModeBar);
|
addToolBar(sceneModeBar);
|
||||||
addToolBar(upDownBar);
|
addToolBar(upDownBar);
|
||||||
addDockWidget(Qt::LeftDockWidgetArea,fieldItemEditDock);
|
|
||||||
addDockWidget(Qt::LeftDockWidgetArea,probeItemDock);
|
addDockWidget(Qt::LeftDockWidgetArea,probeItemDock);
|
||||||
addDockWidget(Qt::LeftDockWidgetArea,sceneDock);
|
addDockWidget(Qt::LeftDockWidgetArea,sceneDock);
|
||||||
|
addDockWidget(Qt::LeftDockWidgetArea,fieldItemEditDock);
|
||||||
tabifyDockWidget(probeItemDock,sceneDock);
|
tabifyDockWidget(probeItemDock,sceneDock);
|
||||||
tabifyDockWidget(sceneDock,fieldItemEditDock);
|
tabifyDockWidget(sceneDock,fieldItemEditDock);
|
||||||
sceneDock->show();
|
sceneDock->show();
|
||||||
@@ -332,7 +333,10 @@ void lsim::initWindowMode(WindowMode newMode) {
|
|||||||
gview->setInteractive (false);
|
gview->setInteractive (false);
|
||||||
|
|
||||||
addDockWidget(Qt::LeftDockWidgetArea,simulOptDock);
|
addDockWidget(Qt::LeftDockWidgetArea,simulOptDock);
|
||||||
|
addDockWidget(Qt::LeftDockWidgetArea,simulDataDock);
|
||||||
simulOptDock->setVisible(true);
|
simulOptDock->setVisible(true);
|
||||||
|
simulDataDock->setVisible(true);
|
||||||
|
tabifyDockWidget(simulDataDock,simulOptDock);
|
||||||
|
|
||||||
acts.itemEditModeAct->trigger();
|
acts.itemEditModeAct->trigger();
|
||||||
simulscene->clearSelection();
|
simulscene->clearSelection();
|
||||||
@@ -501,6 +505,78 @@ void lsim::createDocks() {
|
|||||||
//************************************************************************
|
//************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
//simuldatadock
|
||||||
|
|
||||||
|
//labels position
|
||||||
|
QLabel *xPxPosLabel = new QLabel("0,00 px");
|
||||||
|
xPxPosLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
||||||
|
connect(simulscene->getProbeChargeItem(), SIGNAL(ScenePosXChangedPixel(QString)),xPxPosLabel, SLOT(setText(QString)));
|
||||||
|
|
||||||
|
QLabel *yPxPosLabel = new QLabel("0,00 px");
|
||||||
|
yPxPosLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
||||||
|
connect(simulscene->getProbeChargeItem(), SIGNAL(ScenePosYChangedPixel(QString)),yPxPosLabel, SLOT(setText(QString)));
|
||||||
|
|
||||||
|
QLabel *xMPosLabel = new QLabel("0,00 m");
|
||||||
|
xMPosLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
||||||
|
connect(simulscene->getProbeChargeItem(), SIGNAL(ScenePosXChangedMeter(QString)),xMPosLabel, SLOT(setText(QString)));
|
||||||
|
|
||||||
|
QLabel *yMPosLabel = new QLabel("0,00 m");
|
||||||
|
yMPosLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
||||||
|
connect(simulscene->getProbeChargeItem(), SIGNAL(ScenePosYChangedMeter(QString)),yMPosLabel, SLOT(setText(QString)));
|
||||||
|
//grid layout
|
||||||
|
QGridLayout *ProbePosGridLayout = new QGridLayout;
|
||||||
|
ProbePosGridLayout->addWidget(new QLabel("x:"),0,0,Qt::AlignCenter);
|
||||||
|
ProbePosGridLayout->addWidget(xPxPosLabel,0,1,Qt::AlignCenter);
|
||||||
|
ProbePosGridLayout->addWidget(xMPosLabel,0,2,Qt::AlignCenter);
|
||||||
|
ProbePosGridLayout->addWidget(new QLabel("y:"),1,0,Qt::AlignCenter);
|
||||||
|
ProbePosGridLayout->addWidget(yPxPosLabel,1,1,Qt::AlignCenter);
|
||||||
|
ProbePosGridLayout->addWidget(yMPosLabel,1,2,Qt::AlignCenter);
|
||||||
|
|
||||||
|
QGroupBox *ProbePosGroupBox = new QGroupBox(tr("Position"));
|
||||||
|
ProbePosGroupBox->setLayout(ProbePosGridLayout);
|
||||||
|
|
||||||
|
//labels speed
|
||||||
|
QLabel *xSpeedLabel = new QLabel("0,00 m/s");
|
||||||
|
xSpeedLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
||||||
|
connect(simulscene, SIGNAL(probeSpeedXChanged(QString)),xSpeedLabel, SLOT(setText(QString)));
|
||||||
|
|
||||||
|
QLabel *ySpeedLabel = new QLabel("0,00 m/s");
|
||||||
|
ySpeedLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
||||||
|
connect(simulscene, SIGNAL(probespeedYChanged(QString)),ySpeedLabel, SLOT(setText(QString)));
|
||||||
|
|
||||||
|
QLabel *gesSpeedLabel = new QLabel("0,00 m/s");
|
||||||
|
gesSpeedLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
|
||||||
|
connect(simulscene, SIGNAL(probeSpeedChanged(QString)),gesSpeedLabel, SLOT(setText(QString)));
|
||||||
|
//grid layout
|
||||||
|
QGridLayout *ProbeSpeedGridLayout = new QGridLayout;
|
||||||
|
ProbeSpeedGridLayout->addWidget(new QLabel("x:"),0,0,Qt::AlignCenter);
|
||||||
|
ProbeSpeedGridLayout->addWidget(xSpeedLabel,0,1,Qt::AlignCenter);
|
||||||
|
ProbeSpeedGridLayout->addWidget(new QLabel("y:"),1,0,Qt::AlignCenter);
|
||||||
|
ProbeSpeedGridLayout->addWidget(ySpeedLabel,1,1,Qt::AlignCenter);
|
||||||
|
ProbeSpeedGridLayout->addWidget(new QLabel(tr("Betrag gesamt:")),2,0,Qt::AlignCenter);
|
||||||
|
ProbeSpeedGridLayout->addWidget(gesSpeedLabel,2,1,Qt::AlignCenter);
|
||||||
|
|
||||||
|
QGroupBox *ProbeSpeedGroupBox = new QGroupBox(tr("Geschwindigkeit"));
|
||||||
|
ProbeSpeedGroupBox->setLayout(ProbeSpeedGridLayout);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
QVBoxLayout *simulDataVBoxLayout = new QVBoxLayout();
|
||||||
|
simulDataVBoxLayout->addWidget(ProbePosGroupBox);
|
||||||
|
simulDataVBoxLayout->addWidget(ProbeSpeedGroupBox);
|
||||||
|
simulDataVBoxLayout->addStretch();
|
||||||
|
|
||||||
|
QWidget *simulDataWidget = new QWidget;
|
||||||
|
simulDataWidget->setLayout(simulDataVBoxLayout);
|
||||||
|
|
||||||
|
simulDataDock = new QDockWidget(tr("Daten"), this);
|
||||||
|
simulDataDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
|
||||||
|
simulDataDock->setWidget(simulDataWidget);
|
||||||
|
|
||||||
|
//************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
fieldItemEditDock = new QDockWidget(tr("Feldeinstellungen"), this);
|
fieldItemEditDock = new QDockWidget(tr("Feldeinstellungen"), this);
|
||||||
fieldItemEditDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
|
fieldItemEditDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea | Qt::BottomDockWidgetArea);
|
||||||
|
|||||||
@@ -135,6 +135,8 @@ class lsim: public QMainWindow {
|
|||||||
QDockWidget *probeItemDock;
|
QDockWidget *probeItemDock;
|
||||||
QDockWidget *sceneDock;
|
QDockWidget *sceneDock;
|
||||||
QDockWidget *simulOptDock;
|
QDockWidget *simulOptDock;
|
||||||
|
QDockWidget *simulDataDock;
|
||||||
|
|
||||||
|
|
||||||
SimulScene *simulscene;
|
SimulScene *simulscene;
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,8 @@
|
|||||||
#include <QGraphicsPathItem>
|
#include <QGraphicsPathItem>
|
||||||
#include <QListWidget>
|
#include <QListWidget>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
#include <QMap>
|
||||||
|
#include <QPair>
|
||||||
|
|
||||||
|
|
||||||
SimulScene::SimulScene ( QObject* parent ) : QGraphicsScene ( parent ) {
|
SimulScene::SimulScene ( QObject* parent ) : QGraphicsScene ( parent ) {
|
||||||
@@ -98,6 +100,8 @@ SimulScene::SimulScene ( QObject* parent ) : QGraphicsScene ( parent ) {
|
|||||||
ani->setTimeLine(timer);
|
ani->setTimeLine(timer);
|
||||||
|
|
||||||
connect( timer, SIGNAL(finished()), this, SIGNAL(timeLineInRunningState()) );
|
connect( timer, SIGNAL(finished()), this, SIGNAL(timeLineInRunningState()) );
|
||||||
|
connect( timer, SIGNAL(valueChanged(qreal)), this, SLOT(handleTimeLineValueChange(qreal)) );
|
||||||
|
|
||||||
|
|
||||||
setupVars();
|
setupVars();
|
||||||
|
|
||||||
@@ -107,6 +111,27 @@ void SimulScene::drawBackground ( QPainter * painter, const QRectF & rect ) {
|
|||||||
QGraphicsScene::drawBackground(painter,rect);
|
QGraphicsScene::drawBackground(painter,rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SimulScene::handleTimeLineValueChange(qreal value ) {
|
||||||
|
int step = 0;
|
||||||
|
QList<QPair<qreal, QPointF> > poslist = ani->posList();
|
||||||
|
for(int i = 1;i<poslist.count() ; ++i ) {
|
||||||
|
if(value > poslist[i-1].first && value < poslist[i].first) {
|
||||||
|
step = floor((i-1) * ellipse1->getSpeedListY()->count()/poslist.count());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//qDebug()<<step <<"-->"<<ellipse1->getSpeedListY()->at(step);
|
||||||
|
double gesSpeed = sqrt(pow(ellipse1->getSpeedListX()->at(step),2) +pow(ellipse1->getSpeedListY()->at(step),2));
|
||||||
|
QString newSpeedStringX(QLocale().toString(ellipse1->getSpeedListX()->at(step) ,'g',3));
|
||||||
|
newSpeedStringX.append(" m/s");
|
||||||
|
QString newSpeedStringY(QLocale().toString(ellipse1->getSpeedListY()->at(step),'g',3));
|
||||||
|
newSpeedStringY.append(" m/s");
|
||||||
|
QString newSpeedGes(QLocale().toString(gesSpeed,'g',3));
|
||||||
|
newSpeedGes.append(" m/s");
|
||||||
|
emit probeSpeedXChanged(newSpeedStringX);
|
||||||
|
emit probespeedYChanged(newSpeedStringY);
|
||||||
|
emit probeSpeedChanged(newSpeedGes);
|
||||||
|
}
|
||||||
|
|
||||||
void SimulScene::setupVars() {
|
void SimulScene::setupVars() {
|
||||||
//variablen initialisieren
|
//variablen initialisieren
|
||||||
@@ -813,10 +838,13 @@ void SimulScene::startCalculation() {
|
|||||||
int currSteps = ellipse1->getCurrProbePath()->count();
|
int currSteps = ellipse1->getCurrProbePath()->count();
|
||||||
int entry_step = ceil(currSteps/2500.0); //jeder entry_step(te) step wird eingetragen
|
int entry_step = ceil(currSteps/2500.0); //jeder entry_step(te) step wird eingetragen
|
||||||
double totalTime = ellipse1->getElapsedTimeList()->at(currSteps-1);
|
double totalTime = ellipse1->getElapsedTimeList()->at(currSteps-1);
|
||||||
|
aniStepList.clear();
|
||||||
for (int i=0; i<currSteps; ++i) {
|
for (int i=0; i<currSteps; ++i) {
|
||||||
if (i%entry_step == 0 || i==currSteps) {
|
if (i%entry_step == 0 || i==currSteps) {
|
||||||
//Zeianteil anstatt Weganteil
|
//Zeianteil
|
||||||
ani->setPosAt(ellipse1->getElapsedTimeList()->at(i)/totalTime, ellipse1->getCurrProbePath()->at(i) );
|
double newStep = ellipse1->getElapsedTimeList()->at(i)/totalTime;
|
||||||
|
ani->setPosAt(newStep, ellipse1->getCurrProbePath()->at(i) );
|
||||||
|
//aniStepList.insert(ani->, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -827,8 +855,6 @@ void SimulScene::startCalculation() {
|
|||||||
|
|
||||||
//brauchbare Animationsdauer bestimmen
|
//brauchbare Animationsdauer bestimmen
|
||||||
setTimeLineDuration(ellipse1->getFlightPath().length()/getPxPerSec() * 1000.0);
|
setTimeLineDuration(ellipse1->getFlightPath().length()/getPxPerSec() * 1000.0);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include <QGraphicsScene>
|
#include <QGraphicsScene>
|
||||||
#include <graphicsellipseitem.h>
|
#include <graphicsellipseitem.h>
|
||||||
|
#include <QMap>
|
||||||
|
|
||||||
class QTimeLine;
|
class QTimeLine;
|
||||||
class HomoEFieldItem;
|
class HomoEFieldItem;
|
||||||
@@ -109,6 +110,7 @@ class SimulScene : public QGraphicsScene {
|
|||||||
void moveFieldItemOnBottom(QGraphicsItem* fieldItem);
|
void moveFieldItemOnBottom(QGraphicsItem* fieldItem);
|
||||||
void moveSelectedFieldItemOnBottom();
|
void moveSelectedFieldItemOnBottom();
|
||||||
void resetScene();
|
void resetScene();
|
||||||
|
void handleTimeLineValueChange(qreal value);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void displayResizeRects(bool move = false);
|
void displayResizeRects(bool move = false);
|
||||||
@@ -125,6 +127,10 @@ class SimulScene : public QGraphicsScene {
|
|||||||
void timeLineDurationChanged(int duration);
|
void timeLineDurationChanged(int duration);
|
||||||
void timeLineInRunningState(bool yesno = false);
|
void timeLineInRunningState(bool yesno = false);
|
||||||
void realSimulTimeChanged(QString theString);
|
void realSimulTimeChanged(QString theString);
|
||||||
|
|
||||||
|
void probeSpeedXChanged(QString text);
|
||||||
|
void probespeedYChanged(QString text);
|
||||||
|
void probeSpeedChanged(QString text);
|
||||||
private:
|
private:
|
||||||
QTimeLine *timer;
|
QTimeLine *timer;
|
||||||
|
|
||||||
@@ -159,6 +165,7 @@ class SimulScene : public QGraphicsScene {
|
|||||||
QGraphicsPathItem *pathItem1;
|
QGraphicsPathItem *pathItem1;
|
||||||
QListWidget* fieldListWidget;
|
QListWidget* fieldListWidget;
|
||||||
|
|
||||||
|
QMap<double, int> aniStepList;
|
||||||
|
|
||||||
//rechtecke zur groesenaenderung
|
//rechtecke zur groesenaenderung
|
||||||
struct resizeRects {
|
struct resizeRects {
|
||||||
|
|||||||
Reference in New Issue
Block a user