This commit is contained in:
2026-04-16 18:42:11 +03:00
parent a8a1d9a763
commit 3373bedb39
4 changed files with 268 additions and 84 deletions

View File

@@ -3,6 +3,7 @@
#include <mcc/mcc_pcm_construct.h>
#include <mcc/mcc_pcm_fit.h>
struct pcm_res_t {
double pcmX, pcmY;
@@ -14,9 +15,11 @@ int main()
{
using pcm_t = mcc::impl::MccDefaultPCM<MOUNT_TYPE>;
using pcm_const_t = mcc::impl::MccPCMConstructor<MOUNT_TYPE>;
using pcm_fit_t = mcc::impl::MccPCMFitter<MOUNT_TYPE>;
pcm_t pcm;
pcm_const_t pcm_const;
pcm_fit_t pcm_fitter;
pcm_t::pcm_data_t pcm_data{.type = mcc::impl::MccDefaultPCMType::PCM_TYPE_GEOMETRY,
.siteLatitude = 43.6466666667_degs,
@@ -37,9 +40,12 @@ int main()
size_t decM = 10; // number of B-spline inner knots along DEC-axis
double ha_step = 360.0_degs / (haM - 1);
pcm_data.bspline.knotsX.resize(haM); // [0, 360]
for (size_t i = 0; i < haM; ++i) {
pcm_data.bspline.knotsX[i] = i * ha_step;
pcm_data.bspline.knotsX.resize(haM);
// for (size_t i = 0; i < haM; ++i) { // [0, 360]
// pcm_data.bspline.knotsX[i] = i * ha_step;
// }
for (size_t i = 0; i < haM; ++i) { // [-180, 180]
pcm_data.bspline.knotsX[i] = i * ha_step - std::numbers::pi;
}
double dec_start = -35.0_degs;
@@ -100,7 +106,8 @@ int main()
// add 'noise'
double sigma = 24.3248792_arcsecs / 2.355;
// double sigma = 24.3248792_arcsecs / 2.355;
double sigma = 4.3248792_arcsecs;
std::random_device rd{};
std::mt19937 gen{rd()};
@@ -115,14 +122,18 @@ int main()
resX[i] = ha[i] - encX[i];
resY[i] = dec[i] - encY[i];
hadec.from(mcc::impl::MccSkyHADEC_OBS{(double)ha[i], (double)dec[i]});
// hadec.from(mcc::impl::MccSkyHADEC_OBS{(double)ha[i], (double)dec[i]});
pcm_const.addPoint(hadec, mcc::impl::MccGenXY{(double)encX[i], (double)encY[i]});
// pcm_const.addPoint(hadec, mcc::impl::MccGenXY{(double)encX[i], (double)encY[i]});
pcm_fitter.addPoint((double)ha[i], (double)dec[i], (double)encX[i], (double)encY[i],
mcc::impl::MccCelestialCoordEpoch{});
}
pcm_t::pcm_data_t fit_pcm_data{.type = pcm_data.type, .siteLatitude = pcm_data.siteLatitude};
auto r = pcm_const.computeModel(fit_pcm_data);
// auto r = pcm_const.computeModel(fit_pcm_data);
auto r = pcm_fitter.computeModel(fit_pcm_data);
if (r.error) {
std::println("error: {}", r.error.message());
return 1;
@@ -165,8 +176,10 @@ int main()
mcc::impl::MccAngle(pcm_data.geomCoefficients.forkFlexure).arcsecs());
std::println("\n\n{}", r.colon_res);
std::println("\n\n{}", r.colat_res);
// std::println("\n\n{}", r.colon_res);
// std::println("\n\n{}", r.colat_res);
std::println("\n\n{}", r.model_colonRES);
std::println("\n\n{}", r.model_colatRES);
return 0;
}