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:
catdog2
2008-12-20 17:26:58 +00:00
parent 792fecff9e
commit ef2f7e188e
8 changed files with 167 additions and 61 deletions

Binary file not shown.

View File

@@ -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" />

View File

@@ -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;
}

View File

@@ -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:
@@ -111,7 +113,7 @@ class GraphicsEllipseItem : public QObject , public QGraphicsEllipseItem {
void resetProbe(); void resetProbe();
void setAdaptiveStepControl ( bool theValue ); void setAdaptiveStepControl ( bool theValue );
void setAdaptiveStepLength ( double theValue ); void setAdaptiveStepLength ( double theValue );
signals: signals:
void startSpeedXChanged(double speed); void startSpeedXChanged(double speed);
@@ -123,6 +125,11 @@ class GraphicsEllipseItem : public QObject , public QGraphicsEllipseItem {
void ScenePosYChanged(double newY); void ScenePosYChanged(double newY);
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);

View File

@@ -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);

View File

@@ -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;

View File

@@ -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);
} }

View File

@@ -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 {