增加轨道模型模拟
parent
9585c74111
commit
57ffed3e09
|
|
@ -53,8 +53,8 @@ RasterMainWidget::RasterMainWidget(QWidget *parent)
|
||||||
setupActions();
|
setupActions();
|
||||||
setRightToolbox();
|
setRightToolbox();
|
||||||
|
|
||||||
mUi->panAction->trigger();
|
//mUi->panAction->trigger();
|
||||||
mUi->layerList->setCurrentItem(mLayerList.first());
|
//mUi->layerList->setCurrentItem(mLayerList.first());
|
||||||
}
|
}
|
||||||
|
|
||||||
RasterMainWidget::~RasterMainWidget() {
|
RasterMainWidget::~RasterMainWidget() {
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
#include <QDate>
|
#include <QDate>
|
||||||
#include <QTime>
|
#include <QTime>
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
|
#include <BaseTool.h>
|
||||||
|
|
||||||
OrbitElements::OrbitElements() : semiMajorAxis(0), eccentricity(0), inclination(0),
|
OrbitElements::OrbitElements() : semiMajorAxis(0), eccentricity(0), inclination(0),
|
||||||
longitudeOfAscendingNode(0), argumentOfPeriapsis(0), trueAnomaly(0) {}
|
longitudeOfAscendingNode(0), argumentOfPeriapsis(0), trueAnomaly(0) {}
|
||||||
|
|
@ -224,6 +225,7 @@ double OrbitEstimator::solveKeplerEquation(double M, double e) const {
|
||||||
/** ¶àÏîʽ¹ìµÀÄâºÏÄ£ÐÍ************************************************************************************/
|
/** ¶àÏîʽ¹ìµÀÄâºÏÄ£ÐÍ************************************************************************************/
|
||||||
|
|
||||||
void PolynomialOrbitModel::fitPolynomial(const QList<SatellitePos>& nodes, int degree) {
|
void PolynomialOrbitModel::fitPolynomial(const QList<SatellitePos>& nodes, int degree) {
|
||||||
|
|
||||||
QList<double> times;
|
QList<double> times;
|
||||||
QList<double> positionsX;
|
QList<double> positionsX;
|
||||||
QList<double> positionsY;
|
QList<double> positionsY;
|
||||||
|
|
@ -242,7 +244,7 @@ void PolynomialOrbitModel::fitPolynomial(const QList<SatellitePos>& nodes, int d
|
||||||
velocitiesZ.append(node.Vz);
|
velocitiesZ.append(node.Vz);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qDebug() << "fit degree " << degree;
|
||||||
|
|
||||||
coefficientsX = leastSquaresFit(times, positionsX, degree);
|
coefficientsX = leastSquaresFit(times, positionsX, degree);
|
||||||
coefficientsY = leastSquaresFit(times, positionsY, degree);
|
coefficientsY = leastSquaresFit(times, positionsY, degree);
|
||||||
|
|
@ -298,7 +300,7 @@ Eigen::VectorXd PolynomialOrbitModel::leastSquaresFit(const QList<double>& x, co
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Eigen::Vector2d coefficients = A.colPivHouseholderQr().solve(b);
|
Eigen::VectorXd coefficients = A.colPivHouseholderQr().solve(b);
|
||||||
//Eigen::Vector2d coefficientsVector = Eigen::Vector2d::Zero(degree);
|
//Eigen::Vector2d coefficientsVector = Eigen::Vector2d::Zero(degree);
|
||||||
//coefficientsVector = coefficients.array();
|
//coefficientsVector = coefficients.array();
|
||||||
return coefficients;
|
return coefficients;
|
||||||
|
|
@ -616,7 +618,7 @@ QList<SatellitePos> loadNodesFromXml(const QString& filename) {
|
||||||
QDomElement paramElement = gpsParamNodes.at(i).toElement();
|
QDomElement paramElement = gpsParamNodes.at(i).toElement();
|
||||||
|
|
||||||
SatellitePos node;
|
SatellitePos node;
|
||||||
node.time = paramElement.firstChildElement("TimeStamp").text().toDouble();
|
node.time = convertToMilliseconds(paramElement.firstChildElement("TimeStamp").text().toStdString());
|
||||||
node.Px = paramElement.firstChildElement("xPosition").text().toDouble();
|
node.Px = paramElement.firstChildElement("xPosition").text().toDouble();
|
||||||
node.Py = paramElement.firstChildElement("yPosition").text().toDouble();
|
node.Py = paramElement.firstChildElement("yPosition").text().toDouble();
|
||||||
node.Pz = paramElement.firstChildElement("zPosition").text().toDouble();
|
node.Pz = paramElement.firstChildElement("zPosition").text().toDouble();
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ void QSimulationPolynomialSAROrbitModel::onpushButtonOrbitModelClicked(bool)
|
||||||
u8"xml Files (*.xml)"); // 文件类型过滤器
|
u8"xml Files (*.xml)"); // 文件类型过滤器
|
||||||
|
|
||||||
if (!fileName.isEmpty()) {
|
if (!fileName.isEmpty()) {
|
||||||
this->ui->gpsXmlPathEdit->setText(fileName);
|
this->ui->modelxmlPathEdit->setText(fileName);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
QMessageBox::information(this, u8"没有选择文件", u8"没有选择任何文件");
|
QMessageBox::information(this, u8"没有选择文件", u8"没有选择任何文件");
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue