110 lines
2.8 KiB
C++
110 lines
2.8 KiB
C++
#include "platesolving.h"
|
|
#include "ui_platesolving.h"
|
|
#include "solver.h"
|
|
#include "imageringlist.h"
|
|
|
|
PlateSolving::PlateSolving(QWidget *parent)
|
|
: QDockWidget(parent)
|
|
, ui(new Ui::PlateSolving)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
_solver = new Solver(this);
|
|
|
|
auto profiles = StellarSolver::getBuiltInProfiles();
|
|
for(auto &profile : profiles)
|
|
{
|
|
ui->profileComboBox->addItem(profile.listName);
|
|
}
|
|
|
|
connect(ui->profileComboBox, &QComboBox::currentIndexChanged, [this](int index){
|
|
auto profiles = StellarSolver::getBuiltInProfiles();
|
|
_solver->setParameters(profiles[index]);
|
|
});
|
|
|
|
connect(ui->extractButton, &QPushButton::clicked, this, &PlateSolving::extract);
|
|
connect(ui->solveButton, &QPushButton::clicked, this, &PlateSolving::solve);
|
|
connect(_solver, &Solver::solvingDone, this, &PlateSolving::solvingDone);
|
|
connect(_solver, &Solver::extractionDone, this, &PlateSolving::extractionDone);
|
|
}
|
|
|
|
PlateSolving::~PlateSolving()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void PlateSolving::extract()
|
|
{
|
|
ui->solveButton->setDisabled(true);
|
|
ui->extractButton->setDisabled(true);
|
|
|
|
_solver->loadImage(_rawImage, _path);
|
|
_solver->extractSources(ui->withHFR->isChecked());
|
|
}
|
|
|
|
void PlateSolving::extractionDone()
|
|
{
|
|
auto stars = _solver->getStars();
|
|
float a = 0;
|
|
float b = 0;
|
|
float hfr = 0;
|
|
for(auto &star : stars)
|
|
{
|
|
a += star.a;
|
|
b += star.b;
|
|
hfr += star.HFR;
|
|
}
|
|
if(size_t size = stars.size())
|
|
{
|
|
a /= size;
|
|
b /= size;
|
|
hfr /= size;
|
|
}
|
|
|
|
ui->stars->setText(QString::number(stars.size()));
|
|
ui->hfr->setText(QString("%1 %2x%3").arg(hfr).arg(a).arg(b));
|
|
|
|
ui->solveButton->setDisabled(false);
|
|
ui->extractButton->setDisabled(false);
|
|
}
|
|
|
|
void PlateSolving::solve()
|
|
{
|
|
ui->solveButton->setDisabled(true);
|
|
ui->extractButton->setDisabled(true);
|
|
|
|
_solver->loadImage(_rawImage, _path);
|
|
_solver->solveImage();
|
|
}
|
|
|
|
void PlateSolving::solvingDone()
|
|
{
|
|
ui->solveButton->setDisabled(false);
|
|
ui->extractButton->setDisabled(false);
|
|
|
|
auto solution = _solver->getSolution();
|
|
ui->ra->setText(QString::number(solution.ra));
|
|
ui->dec->setText(QString::number(solution.dec));
|
|
ui->orientation->setText(QString::number(solution.orientation));
|
|
ui->fieldWidth->setText(QString::number(solution.fieldWidth));
|
|
ui->fieldHeight->setText(QString::number(solution.fieldHeight));
|
|
ui->pixelScale->setText(QString::number(solution.pixscale));
|
|
}
|
|
|
|
void PlateSolving::imageLoaded(Image *image)
|
|
{
|
|
if(image)
|
|
{
|
|
_rawImage = image->rawImage();
|
|
_path = image->name();
|
|
ui->ra->clear();
|
|
ui->dec->clear();
|
|
ui->orientation->clear();
|
|
ui->fieldWidth->clear();
|
|
ui->fieldHeight->clear();
|
|
ui->pixelScale->clear();
|
|
ui->hfr->clear();
|
|
ui->stars->clear();
|
|
}
|
|
}
|