From c8ca381faa7e82682e572c87a150fb58b466e241 Mon Sep 17 00:00:00 2001 From: catdog2 Date: Thu, 6 Nov 2008 21:05:13 +0000 Subject: [PATCH] viel zeugs usw. git-svn-id: http://svn.lsim.tuxzone.org/trunk@11 4bec179b-ab65-46ed-a5f8-55b8b5c735d0 --- lsim.kdevelop.pcs | Bin 105570 -> 111111 bytes lsim.kdevses | 29 ++++++------ src/expdoublespinbox.cpp | 11 ++++- src/graphicsellipseitem.cpp | 36 +++++++++++++-- src/graphicsellipseitem.h | 12 ++++- src/homobfieldwidget.cpp | 3 +- src/homoefieldwidget.cpp | 6 ++- src/probechargewidget.cpp | 86 ++++++++++++++++++++++-------------- src/simulscene.cpp | 7 +-- 9 files changed, 130 insertions(+), 60 deletions(-) diff --git a/lsim.kdevelop.pcs b/lsim.kdevelop.pcs index 690f6af43eb92c36ad75269ea3661f94b93c27a9..1dd25dbddc043b28d8b23eb39f4e82ee8f859bac 100644 GIT binary patch delta 6094 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 F{|_vw%I^RG delta 4531 zcmY*c3s_af7T#+g4xE8=D=Ke`0`wLUzBx%#f*yAKA!FqBL3_I--B}~-Oe47CHA#9nP{7ISxwR`LFl^$NlOck)hJ!m6xw^WU zBjY46|BJT|gVCh_%?b(piUeki$$om-O$ov`)ASjX&usx4CfEBsxBq73<;> z-E=qnB>oVap>r2^;o8v_V#4Fod@&?3m1XLPEP;Uecr@`HmaX%qYg)But=K%~6q}%P zGjv<$Sfb7u*J*vvxHBwC=Z^2fHQ}D5Wc)3;fZ23uVCOV=tvgtGm=E-jC0A|R{%#7} zmf}rY@PHGbnxJ7=H6|Fp zNHbx5dMS6fgNsoB1F=uWV-`g{6SXL8xZ~UkhohP$5XX~Rf^y5@0jz+!B8CFIpZP5l zo7I3D{cI8{4u|(LK|QxzkR1<>&}O zM^JMJgcAL1e_&aVMT6= zw%a{t=Hnf5C04#a9-DcVw|LMhx)b;bESmKyi=mz?wHWL-dkq^!Js}%~M`y2RvD6a_ z5sPv8>9RCMsmXVfjo%oeE=$U;f&f?WP%bRoVqj|sBfhniY(AJ#G6KBuA2mLFm;t)s zf;D~d`l39x-HDNQ=%8S1sB^{YB}ds7U9wF`l#G&Dpp-v%5!eQuU!!T*%A&CTY$(3D ztQl7Qh4bU`5z3+!HrYcmfvy7lQVPV1`#0Dm4JvJuLMrYktYQPOzB(eE&#ZtYl*h^7 zffp8r;~(2|EdC@E`75Xo?R5`~FOR~JRqN_@gIRg6>LB38>Jm1Q#NsxZi1lxa`G&9n z8j0^O^Iop8MZyL+w=BMVI8AsWuS|n5EjBaB#90)JY{N%`g|S?GW^E2j*15@eVJ*kd zsb-wLG#$&I3&5irbC|fSL{0`N)=k5~V%LX)iX+nlzpR}_3+2#ECFs%w+#KwqNoc|F z7?!eNT@p+O&j)Q~IkXFJoxd`1qOH`1Db2gQfQ9M9Fl^p683(ov)&>M%|j~1@bYk(eRakHP;Q~kO({~4s z;aSP}kTJR|JYHy1rr%6;fhz6H?rRI+3EmKd9&M#;wH|V{F0wPJn-i)$xsWWxJ2oPHy;c{+o#dI)&NuGm9JpSgFdRO3p5%GMUq^16K3$% z-BeXfy`HTWo8Z2Q(&WAU#cF{Uq`I(8re#42J-h_VyLSfjs0X@Z**s7{j*& zg9$$G0BVwMe18z6vl88kwi-f>ao=EA)+G&e>x?%C!%8e@>hDD5g+O`df^F_F%~aPR zU;y^DZua*Mft6EmCVpZbxbot?;Lj`LAeH|-5EAJTb%LQce;5j%xl4cOV}n)=2zOq* zVFV{$92QZVoXxYFo42KGs(y7-IV?9m4)S@u(l(~Nd zMDsHvV4h_%dGMensEubn2}5{R1mv+vI)9RSDFQwM)jtZt-2hZa9DL?{|HNaI#UtWj z1^;XunALOfa1t!yu@o1up#Ayzc!*RR6QNetiYD{DIVpDXjBqT_{?wHKDm`SQkXV8Rvad-Ap#8tpA4pL)e8ukNs`1}=cVftUXB z$~#1y)bd2?bI(Qaprf3W9o)Pae)1ab^e&6i%0Ml(1L@CSs|RmBwFsKDSA%3Qw8M=v z{ET9_+WBOE&{ejM7jxQ$H;W)mmgZt=u}v(Z&|1Z}?}Wjc#9g}XbPj=Cbq_k1?5Zxi zrpv;x{5KPS|7D8ltND-xC{i#&3xtXU2XEO!4m`_fQS>Q6L|3bS9*i7*dJ&{s^a5NK zB^Pk(VhHD3mcegqq|>jQpw=#jOz0@KWxIO!dCCl!(-9BUb_m+ysZjOS_*Z9pn*=r=c`~jFt-fC#H6zK>-2RRYh)lkCC)#NP5$?#qS z^Z2`h@q}Q+pzW>+`lxga<^wAuMNw;%tF*-XWQ+L45@SLAxYsTi&OPUXo$pu=DVEW? zP|yLqY8xH&g#DDCl>8;EvrNJI_kGmbjqp71eFy1+Iys;AF02t!wBHs{J|yvW8N_k& zRj<^*4>B)$35+70OF<3U2Boq^yd5G8L5GSkMsmtP6TiD1S}Ym5P|zXHFd7cfirlM% zi$U3;cnl=qf4d$lc%umQ;N#s6I{2eoh>W z>B!7HHcm&4WWG!wYP>u0CC;pJ(FU71$hseTU^! z*PB|tr~?nPY19>)IE}AvB&oRc&D19IDaT+xn?+qw1(sVlDXrF`FUsL}2) f@jH^uBTtYiaUO-KEdH$+ieoBFWvaVQ!eaP8MgRt{ diff --git a/lsim.kdevses b/lsim.kdevses index e200843..6ee4192 100644 --- a/lsim.kdevses +++ b/lsim.kdevses @@ -1,7 +1,7 @@ - + @@ -9,7 +9,7 @@ - + @@ -18,25 +18,25 @@ - + - + - + - + - + - + @@ -45,10 +45,10 @@ - + - + @@ -60,17 +60,20 @@ - + - + - + + + + diff --git a/src/expdoublespinbox.cpp b/src/expdoublespinbox.cpp index 20800a1..27d7717 100644 --- a/src/expdoublespinbox.cpp +++ b/src/expdoublespinbox.cpp @@ -38,7 +38,10 @@ ExpDoubleSpinBox::~ExpDoubleSpinBox() { double ExpDoubleSpinBox::valueFromText ( const QString& text ) const { - return text.toDouble(); + QString myText(text); + myText.chop(suffix().size()); + myText.remove(prefix().size()); + return myText.toDouble(); } QString ExpDoubleSpinBox::textFromValue ( double val ) const { @@ -58,13 +61,17 @@ QString ExpDoubleSpinBox::textFromValue ( double val ) const { } QValidator::State ExpDoubleSpinBox::validate ( QString & input, int & pos ) const { + QString myInput(input); + myInput.chop(suffix().size()); + myInput.remove(prefix().size()); + QLocale loc; QChar decpoint = loc.decimalPoint(); //Locale abhaengiger dezimaltrenner QString regExpString =QString("[\\-,\\+]?\\d*\\%1?\\d+([e,E][\\-,\\+]\\d+)?").arg(decpoint); QRegExp regExp(regExpString); QValidator *validator = new QRegExpValidator(regExp, 0); //qDebug() << validator->validate(input,pos); - return validator->validate(input,pos); + return validator->validate(myInput,pos); } QDoubleSpinBox::StepEnabled ExpDoubleSpinBox::stepEnabled () const { diff --git a/src/graphicsellipseitem.cpp b/src/graphicsellipseitem.cpp index 6f07ac3..e8a2412 100644 --- a/src/graphicsellipseitem.cpp +++ b/src/graphicsellipseitem.cpp @@ -33,9 +33,10 @@ GraphicsEllipseItem::GraphicsEllipseItem() { setFlag(ItemIsFocusable); //setCacheMode(QGraphicsItem::DeviceCoordinateCache); //startTimer(100); + myProbeChargeWidget = new ProbeChargeWidget(0,0,this); setMasse(9.10938188e-31); setCharge(-1.6e-19); - myProbeChargeWidget = new ProbeChargeWidget(0,0,this); + currProbePath = new QList; speedListX = new QList; speedListY = new QList; @@ -54,12 +55,23 @@ void GraphicsEllipseItem::mousePressEvent ( QGraphicsSceneMouseEvent *event ) { //QGraphicsEllipseItem::mousePressEvent(event); } +void GraphicsEllipseItem::handleSceneChange(const QList & /*region*/) { + if (myScenePos != scenePos()) { + myScenePos = scenePos(); + emit ScenePosChanged(myScenePos); + emit ScenePosXChanged(myScenePos.x()); + emit ScenePosYChanged(myScenePos.y()); + } + +} /*! \fn GraphicsEllipseItem::calculateProbePath() */ -void GraphicsEllipseItem::calculateProbePath(QPointF startPoint, double startSpeedX , double startSpeedY) { +void GraphicsEllipseItem::calculateProbePath(QPointF startPoint) { + double startSpeedX = getStartSpeedX(); + double startSpeedY = getStartSpeedY(); SimulScene* myScene = dynamic_cast(scene()); //wenn noch zu keiner scene gehoerend abbruch if (myScene == 0) return; @@ -137,7 +149,7 @@ double GraphicsEllipseItem::getCharge() const { } -void GraphicsEllipseItem::setCharge ( const long double& theValue ) { +void GraphicsEllipseItem::setCharge ( const double& theValue ) { if (charge == theValue) return; charge = theValue; emit chargeChanged(theValue); @@ -174,3 +186,21 @@ void GraphicsEllipseItem::setStartSpeedY ( double theValue ) { startSpeedY = theValue; emit startSpeedYChanged(theValue); } + + +/*! + \fn GraphicsEllipseItem::setScenePosY(double posY) + */ +void GraphicsEllipseItem::setScenePosY(double newPosY) +{ + moveBy(0, newPosY - scenePos().y()); +} + + +/*! + \fn GraphicsEllipseItem::setScenePosX(double posX) + */ +void GraphicsEllipseItem::setScenePosX(double newPosX) +{ + moveBy(newPosX - scenePos().x(),0 ); +} diff --git a/src/graphicsellipseitem.h b/src/graphicsellipseitem.h index df62f45..3f66ab1 100644 --- a/src/graphicsellipseitem.h +++ b/src/graphicsellipseitem.h @@ -71,25 +71,33 @@ class GraphicsEllipseItem : public QObject , public QGraphicsEllipseItem { ///Startgeschwindigkeit des teilchens in y-Richtung double startSpeedY; + QPointF myScenePos; + public slots: //! Berechnet die Bewegung der Probeladung /*! \param steps Anzahl der auszufürenden Schriite */ - void calculateProbePath (QPointF startPoint = QPointF(0,0) , double startSpeedX = 0, double startSpeedY = 0); + void calculateProbePath (QPointF startPoint = QPointF(0,0)); void setMasse ( const double& theValue ); - void setCharge ( const long double& theValue ); + void setCharge ( const double& theValue ); void setStartSpeedX ( double theValue ); void setStartSpeedY ( double theValue ); + void setScenePosY(double newPosY); + void setScenePosX(double newPosX); + void handleSceneChange(const QList & /*region*/); signals: void startSpeedXChanged(double speed); void startSpeedYChanged(double speed); void masseChanged(double masse); void chargeChanged(double Charge); + void ScenePosChanged(QPointF newpos); + void ScenePosXChanged(double newX); + void ScenePosYChanged(double newY); diff --git a/src/homobfieldwidget.cpp b/src/homobfieldwidget.cpp index 6ada381..4dc20af 100644 --- a/src/homobfieldwidget.cpp +++ b/src/homobfieldwidget.cpp @@ -87,8 +87,9 @@ void HomoBFieldWidget::createWidget() { ExpDoubleSpinBox* fieldFluxDensityBox = new ExpDoubleSpinBox; fieldFluxDensityBox->setRange(-1e+200,1e+200); fieldFluxDensityBox->setDecimals(40); - fieldFluxDensityBox->setDisplayDecimals(2); + fieldFluxDensityBox->setDisplayDecimals(3); fieldFluxDensityBox->setKeyboardTracking(false); + fieldFluxDensityBox->setSuffix(" T"); connect(homoBField ,SIGNAL(fluxDensityChanged(double)),fieldFluxDensityBox, SLOT(setValue(double)) ); connect(fieldFluxDensityBox, SIGNAL(valueChanged(double)),homoBField ,SLOT(setFluxDensity(double)) ); diff --git a/src/homoefieldwidget.cpp b/src/homoefieldwidget.cpp index 2ed1f6e..d01afba 100644 --- a/src/homoefieldwidget.cpp +++ b/src/homoefieldwidget.cpp @@ -112,14 +112,16 @@ void HomoEFieldWidget::createWidget() fieldPowerBox->setDecimals(35); fieldPowerBox->setDisplayDecimals(3); fieldPowerBox->setKeyboardTracking(false); + fieldPowerBox->setSuffix(" V/m"); connect(homoEField ,SIGNAL(fieldPowerChanged(double)),fieldPowerBox, SLOT(setValue(double)) ); connect(fieldPowerBox, SIGNAL(valueChanged(double)),homoEField ,SLOT(setFieldPower(double)) ); ExpDoubleSpinBox* voltageBox = new ExpDoubleSpinBox; voltageBox->setRange(-1e+200,1e+200); - fieldPowerBox->setDecimals(35); - fieldPowerBox->setDisplayDecimals(3); + voltageBox->setDecimals(35); + voltageBox->setDisplayDecimals(3); voltageBox->setKeyboardTracking(false); + voltageBox->setSuffix(" V"); QGridLayout* constGridLayout = new QGridLayout; //constGridLayout->setSizeConstraint(QLayout::SetFixedSize); diff --git a/src/probechargewidget.cpp b/src/probechargewidget.cpp index ba936c1..97dbbc3 100644 --- a/src/probechargewidget.cpp +++ b/src/probechargewidget.cpp @@ -27,6 +27,7 @@ #include ProbeChargeWidget::ProbeChargeWidget ( QWidget* parent, Qt::WindowFlags f, GraphicsEllipseItem* ellipse ) : QWidget (parent, f ) { + ellipseItem = ellipse; createWidget(); } @@ -43,72 +44,90 @@ void ProbeChargeWidget::createWidget() rotationDial->setWrapping(true); - QDoubleSpinBox *heightBox = new QDoubleSpinBox; + ExpDoubleSpinBox *startSpeedYBox = new ExpDoubleSpinBox; + startSpeedYBox->setDecimals(50); + startSpeedYBox->setDisplayDecimals(3); + startSpeedYBox->setRange(-3e+8, 3e+8); + startSpeedYBox->setKeyboardTracking(false); + connect(startSpeedYBox, SIGNAL(valueChanged(double)), ellipseItem, SLOT(setStartSpeedY(double)) ); + connect(ellipseItem, SIGNAL(startSpeedYChanged(double)), startSpeedYBox, SLOT(setValue(double)) ); - - - QDoubleSpinBox *widthBox = new QDoubleSpinBox; + ExpDoubleSpinBox *startSpeedXBox = new ExpDoubleSpinBox; + startSpeedXBox->setDecimals(50); + startSpeedXBox->setDisplayDecimals(3); + startSpeedXBox->setRange(-3e+8, 3e+8); + startSpeedXBox->setKeyboardTracking(false); + connect(startSpeedXBox, SIGNAL(valueChanged(double)), ellipseItem, SLOT(setStartSpeedX(double)) ); + connect(ellipseItem, SIGNAL(startSpeedXChanged(double)), startSpeedXBox, SLOT(setValue(double)) ); QLabel* xLabel = new QLabel(tr("x:")); QLabel* yLabel = new QLabel(tr("y:")); - QLabel* widthLabel = new QLabel(tr("Breite(l):")); - QLabel* heightLabel = new QLabel(tr("H\366he(d):")); - QLabel* rotationLabel = new QLabel(tr("Rotation:")); + QLabel* startSpeedYLabel = new QLabel(tr("Startgeschwindigkeit y:")); + QLabel* startSpeedXLabel = new QLabel(tr("Startgeschwindigkeit x:")); QDoubleSpinBox *posXBox = new QDoubleSpinBox; posXBox->setRange(-5000, 5000); + posXBox->setKeyboardTracking(false); + connect(posXBox, SIGNAL(valueChanged(double)), ellipseItem, SLOT(setScenePosX(double)) ); + connect(ellipseItem, SIGNAL(ScenePosXChanged(double)), posXBox, SLOT(setValue(double)) ); QDoubleSpinBox *posYBox = new QDoubleSpinBox; posYBox->setRange(-5000, 5000); - - - QSpinBox* rotationBox = new QSpinBox; - rotationBox->setRange(0,359); - rotationBox->setSuffix("\260"); - rotationBox->setWrapping(true); - + posYBox->setKeyboardTracking(false); + connect(posYBox, SIGNAL(valueChanged(double)), ellipseItem, SLOT(setScenePosY(double)) ); + connect(ellipseItem, SIGNAL(ScenePosYChanged(double)), posYBox, SLOT(setValue(double)) ); QGridLayout* geomGridLayout = new QGridLayout; //geomGridLayout->setSizeConstraint(QLayout::SetFixedSize); - geomGridLayout->addWidget(heightBox,4,1); - geomGridLayout->addWidget(rotationBox,0,1); + geomGridLayout->addWidget(startSpeedYBox,4,1); geomGridLayout->addWidget(posYBox,2,1); geomGridLayout->addWidget(posXBox,1,1); geomGridLayout->addWidget(xLabel,1,0,Qt::AlignRight); geomGridLayout->addWidget(yLabel,2,0,Qt::AlignRight); - geomGridLayout->addWidget(heightLabel,4,0,Qt::AlignRight); - geomGridLayout->addWidget(widthLabel,3,0,Qt::AlignRight); - geomGridLayout->addWidget(rotationLabel,0,0,Qt::AlignRight); - geomGridLayout->addWidget(widthBox,3,1); + geomGridLayout->addWidget(startSpeedYLabel,4,0,Qt::AlignRight); + geomGridLayout->addWidget(startSpeedXLabel,3,0,Qt::AlignRight); + geomGridLayout->addWidget(startSpeedXBox,3,1); //geomGridLayout->addWidget(rotationDial, 1,0,2,2); QGroupBox* geometryBox = new QGroupBox(tr("Geometrie")); geometryBox->setLayout(geomGridLayout); - QLabel* fieldPowerLabel = new QLabel(tr("Feldst\344rke:")); - QLabel* voltageLabel = new QLabel(tr("Spannung:")); + QLabel* chargeLabel = new QLabel(tr("Ladung:")); + QLabel* masseLabel = new QLabel(tr("Masse:")); - ExpDoubleSpinBox* fieldPowerBox = new ExpDoubleSpinBox; - fieldPowerBox->setRange(-1e+200,1e+200); + ExpDoubleSpinBox* chargeBox = new ExpDoubleSpinBox; + chargeBox->setRange(-1e+200,1e+200); + chargeBox->setDecimals(50); + chargeBox->setDisplayDecimals(3); + chargeBox->setKeyboardTracking(false); + chargeBox->setSuffix(" As"); + connect(chargeBox, SIGNAL(valueChanged(double)), ellipseItem, SLOT(setCharge(double)) ); + connect(ellipseItem, SIGNAL(chargeChanged(double)), chargeBox, SLOT(setValue(double)) ); - ExpDoubleSpinBox* voltageBox = new ExpDoubleSpinBox; - voltageBox->setRange(-1e+200,1e+200); + ExpDoubleSpinBox* masseBox = new ExpDoubleSpinBox; + masseBox->setRange(-1e+200,1e+200); + masseBox->setDecimals(50); + masseBox->setDisplayDecimals(3); + masseBox->setKeyboardTracking(false); + masseBox->setSuffix(" kg"); + connect(masseBox, SIGNAL(valueChanged(double)), ellipseItem, SLOT(setMasse(double)) ); + connect(ellipseItem, SIGNAL(masseChanged(double)), masseBox, SLOT(setValue(double)) ); QGridLayout* constGridLayout = new QGridLayout; //constGridLayout->setSizeConstraint(QLayout::SetFixedSize); - constGridLayout->addWidget(fieldPowerBox,0,1); - constGridLayout->addWidget(voltageBox,1,1); - constGridLayout->addWidget(fieldPowerLabel,0,0,Qt::AlignRight); - constGridLayout->addWidget(voltageLabel,1,0,Qt::AlignRight); + constGridLayout->addWidget(chargeBox,0,1); + constGridLayout->addWidget(masseBox,1,1); + constGridLayout->addWidget(chargeLabel,0,0,Qt::AlignRight); + constGridLayout->addWidget(masseLabel,1,0,Qt::AlignRight); - QGroupBox* fieldConstantsBox = new QGroupBox(tr("Feldkonstanten")); + QGroupBox* fieldConstantsBox = new QGroupBox(tr("Konstanten")); fieldConstantsBox->setLayout(constGridLayout); @@ -117,10 +136,9 @@ void ProbeChargeWidget::createWidget() mainLayout -> addWidget(fieldConstantsBox); mainLayout -> addStretch(); - QWidget::setTabOrder (rotationBox, posXBox); QWidget::setTabOrder (posXBox, posYBox); - QWidget::setTabOrder (posYBox, widthBox); - QWidget::setTabOrder (widthBox, heightBox); + QWidget::setTabOrder (posYBox, startSpeedYBox); + QWidget::setTabOrder (startSpeedYBox, startSpeedXBox); this -> setLayout(mainLayout); } diff --git a/src/simulscene.cpp b/src/simulscene.cpp index fc33ce9..f0ae3b9 100644 --- a/src/simulscene.cpp +++ b/src/simulscene.cpp @@ -74,7 +74,8 @@ SimulScene::SimulScene ( QObject* parent ) : QGraphicsScene ( parent ) { ellipse1->setBrush(Qt::red); ellipse1->setZValue(1); //ellipse1->scale(4,4); - ellipse1->setAcceptDrops(true); + ellipse1->setAcceptDrops(true); + connect(this,SIGNAL(changed(QList)),ellipse1,SLOT(handleSceneChange(QList))); addItem(ellipse1); @@ -629,9 +630,9 @@ double SimulScene::getPowerAt(QPointF point, double charge, double speedX, doubl double PowerRadAngle; //Winkel des Lorentzkraftvektors zur x-Achse im Bogenmass if (myHomoBFieldItem->getIsDirectionIntoPlane()) { - PowerRadAngle = speedRadAngle - PI/2.0; - } else { PowerRadAngle = speedRadAngle + PI/2.0; + } else { + PowerRadAngle = speedRadAngle - PI/2.0; } //qDebug()<< PowerRadAngle;