B-Feld Berechnung fertig, funktioniert aber scheinbar noch nicht richtig (richtung falsch, vllt auch anderes)
git-svn-id: http://svn.lsim.tuxzone.org/trunk@9 4bec179b-ab65-46ed-a5f8-55b8b5c735d0
This commit is contained in:
Binary file not shown.
@@ -1,12 +1,12 @@
|
|||||||
<?xml version = '1.0' encoding = 'UTF-8'?>
|
<?xml version = '1.0' encoding = 'UTF-8'?>
|
||||||
<!DOCTYPE KDevPrjSession>
|
<!DOCTYPE KDevPrjSession>
|
||||||
<KDevPrjSession>
|
<KDevPrjSession>
|
||||||
<DocsAndViews NumberOfDocuments="18" >
|
<DocsAndViews NumberOfDocuments="19" >
|
||||||
<Doc0 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/homoefielditem.cpp" >
|
<Doc0 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/homoefielditem.cpp" >
|
||||||
<View0 Encoding="" Type="Source" />
|
<View0 Encoding="" Type="Source" />
|
||||||
</Doc0>
|
</Doc0>
|
||||||
<Doc1 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/graphicsellipseitem.cpp" >
|
<Doc1 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/graphicsellipseitem.cpp" >
|
||||||
<View0 Encoding="" line="66" Type="Source" />
|
<View0 Encoding="" Type="Source" />
|
||||||
</Doc1>
|
</Doc1>
|
||||||
<Doc2 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/graphicsellipseitem.h" >
|
<Doc2 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/graphicsellipseitem.h" >
|
||||||
<View0 Encoding="" Type="Source" />
|
<View0 Encoding="" Type="Source" />
|
||||||
@@ -54,8 +54,11 @@
|
|||||||
<View0 Encoding="" Type="Source" />
|
<View0 Encoding="" Type="Source" />
|
||||||
</Doc16>
|
</Doc16>
|
||||||
<Doc17 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/fielditem.cpp" >
|
<Doc17 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/fielditem.cpp" >
|
||||||
<View0 Encoding="" line="30" Type="Source" />
|
<View0 Encoding="" line="48" Type="Source" />
|
||||||
</Doc17>
|
</Doc17>
|
||||||
|
<Doc18 NumberOfViews="1" URL="file:///mnt/sdb1/c%2B%2B/lsim/src/homobfieldwidget.cpp" >
|
||||||
|
<View0 Encoding="" line="86" Type="Source" />
|
||||||
|
</Doc18>
|
||||||
</DocsAndViews>
|
</DocsAndViews>
|
||||||
<pluginList>
|
<pluginList>
|
||||||
<kdevdebugger>
|
<kdevdebugger>
|
||||||
|
|||||||
@@ -18,5 +18,10 @@
|
|||||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
//! Diese Datei definiert Konstanten
|
||||||
|
/**
|
||||||
|
@author Peter Dahlberg <pdahlberg@gmail.com>
|
||||||
|
*/
|
||||||
|
|
||||||
const double PI = acos( -1.0 );
|
const double PI = acos( -1.0 );
|
||||||
const double SPEED_OF_LIGHT = 2.99792458e+8;
|
const double SPEED_OF_LIGHT = 2.99792458e+8;
|
||||||
@@ -81,8 +81,8 @@ void GraphicsEllipseItem::calculateProbePath(QPointF startPoint, double startSpe
|
|||||||
for(int i = 1; i< steps;++i) {
|
for(int i = 1; i< steps;++i) {
|
||||||
double myMasse = getMasse( sqrt( speedListX->at(i-1)*speedListX->at(i-1) + speedListY->at(i-1)*speedListY->at(i-1) ) );
|
double myMasse = getMasse( sqrt( speedListX->at(i-1)*speedListX->at(i-1) + speedListY->at(i-1)*speedListY->at(i-1) ) );
|
||||||
//qDebug()<< myMasse;
|
//qDebug()<< myMasse;
|
||||||
double powerX = myScene->getPowerAt(currProbePath->at(i-1), charge, '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, 'y');
|
double powerY = myScene->getPowerAt(currProbePath->at(i-1), charge, speedListX->at(i-1),speedListY->at(i-1), 'y');
|
||||||
|
|
||||||
double newspeedX = speedListX->at(i-1) + (powerX/myMasse * (timePerStep/1000.0));
|
double newspeedX = speedListX->at(i-1) + (powerX/myMasse * (timePerStep/1000.0));
|
||||||
double newspeedY = speedListY->at(i-1) + (powerY/myMasse * (timePerStep/1000.0));
|
double newspeedY = speedListY->at(i-1) + (powerY/myMasse * (timePerStep/1000.0));
|
||||||
@@ -110,8 +110,8 @@ void GraphicsEllipseItem::calculateProbePath(QPointF startPoint, double startSpe
|
|||||||
qDebug()<< "speed x: "<<*speedListX;
|
qDebug()<< "speed x: "<<*speedListX;
|
||||||
qDebug()<< "speed y: "<<*speedListY;
|
qDebug()<< "speed y: "<<*speedListY;
|
||||||
qDebug()<<speedListY->at(12);
|
qDebug()<<speedListY->at(12);
|
||||||
qDebug()<<"power x: "<< (double)myScene->getPowerAt(QPointF(0,0), charge, 'x');
|
//qDebug()<<"power x: "<< (double)myScene->getPowerAt(QPointF(0,0), charge, 'x');
|
||||||
qDebug()<<"power y: " << (double)myScene->getPowerAt(QPointF(0,0), charge, 'y');
|
//qDebug()<<"power y: " << (double)myScene->getPowerAt(QPointF(0,0), charge, 'y');
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -132,4 +132,3 @@ void HomoBFieldWidget::createWidget() {
|
|||||||
HomoBFieldWidget::~HomoBFieldWidget() {
|
HomoBFieldWidget::~HomoBFieldWidget() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -598,15 +598,15 @@ void SimulScene::setSteps(int steps) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
double SimulScene::getPowerAt(QPointF point, double charge, char xy) {
|
double SimulScene::getPowerAt(QPointF point, double charge, double speedX, double speedY, char xy) {
|
||||||
double dPower = 0;
|
double dPower = 0;
|
||||||
for(int i = 0; i < items(point).size(); ++i) {
|
for(int i = 0; i < items(point).size(); ++i) {
|
||||||
//HomoEFieldItems Abarbeiten
|
//HomoEFieldItems Abarbeiten
|
||||||
if (qgraphicsitem_cast<HomoEFieldItem*> (items(point).at(i)) != 0) {
|
if (qgraphicsitem_cast<HomoEFieldItem*> (items(point).at(i)) != 0) {
|
||||||
HomoEFieldItem* myHomoEfieldItem = qgraphicsitem_cast<HomoEFieldItem*> (items(point).at(i));
|
HomoEFieldItem* myHomoEFieldItem = qgraphicsitem_cast<HomoEFieldItem*> (items(point).at(i));
|
||||||
double power = (myHomoEfieldItem->getFieldPower() * charge);
|
double power = (myHomoEFieldItem->getFieldPower() * charge);
|
||||||
double degAngle = myHomoEfieldItem->getRotation();
|
double degAngle = myHomoEFieldItem->getRotation();
|
||||||
double radAngle = degAngle/180.0l*PI;
|
double radAngle = degAngle/180.0*PI;
|
||||||
|
|
||||||
if(xy == 'x') {
|
if(xy == 'x') {
|
||||||
if (degAngle != 180.0) dPower += power * -sin(radAngle);
|
if (degAngle != 180.0) dPower += power * -sin(radAngle);
|
||||||
@@ -615,6 +615,28 @@ double SimulScene::getPowerAt(QPointF point, double charge, char xy) {
|
|||||||
if (degAngle != 90.0 && degAngle != 270.0) dPower += power * cos(radAngle);
|
if (degAngle != 90.0 && degAngle != 270.0) dPower += power * cos(radAngle);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//HomoBFieldItems Abarbeiten
|
||||||
|
if (qgraphicsitem_cast<HomoBFieldItem*> (items(point).at(i)) != 0) {
|
||||||
|
HomoBFieldItem* myHomoBFieldItem = qgraphicsitem_cast<HomoBFieldItem*>(items(point).at(i));
|
||||||
|
double absSpeed = sqrt(speedX * speedX + speedY * speedY); // Geschwindigkeit im Betrag |v|=sqrt(vx^2+vy^2)
|
||||||
|
double absLorentzPower = (charge * absSpeed * myHomoBFieldItem->getFluxDensity() ); //Kraft im Betrag: |F| = q*v*B
|
||||||
|
double speedRadAngle = atan2(speedY,speedX); //Winkel des Geschwindigkeitsvekors zur x-Achse im Bogenmass
|
||||||
|
|
||||||
|
double PowerRadAngle; //Winkel des Lorentzkraftvektors zur x-Achse im Bogenmass
|
||||||
|
if (myHomoBFieldItem->getIsDirectionIntoPlane()) {
|
||||||
|
PowerRadAngle = speedRadAngle - PI/2.0;
|
||||||
|
} else {
|
||||||
|
PowerRadAngle = speedRadAngle + PI/2.0;
|
||||||
|
}
|
||||||
|
//qDebug()<< PowerRadAngle;
|
||||||
|
|
||||||
|
if (xy == 'x') {
|
||||||
|
dPower += absLorentzPower * cos(PowerRadAngle);
|
||||||
|
}
|
||||||
|
if (xy == 'y') {
|
||||||
|
dPower += absLorentzPower * sin(PowerRadAngle);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return dPower;
|
return dPower;
|
||||||
|
|||||||
@@ -49,10 +49,13 @@ class SimulScene : public QGraphicsScene {
|
|||||||
/*!
|
/*!
|
||||||
\param point der Punkt der abgeprüft werden soll
|
\param point der Punkt der abgeprüft werden soll
|
||||||
\param charge Die Ladung, auf die die Kraft ausgeübt wird
|
\param charge Die Ladung, auf die die Kraft ausgeübt wird
|
||||||
\param xy x oder y-Richtung
|
\param speedX Aktuelle Geschwindigkeit in x-Richtung
|
||||||
|
\param speedY Aktuelle Geschwindigkeit in y-Richtung
|
||||||
|
\param xy rückgabe in x oder y-Richtung
|
||||||
*/
|
*/
|
||||||
double getPowerAt(QPointF point, double charge, char xy);
|
double getPowerAt(QPointF point, double charge, double speedX, double speedY, char xy);
|
||||||
QWidget* getProbeDockWidget() const;
|
|
||||||
|
QWidget* getProbeDockWidget() const;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void setSceneMode(SceneMode mode);
|
void setSceneMode(SceneMode mode);
|
||||||
|
|||||||
Reference in New Issue
Block a user