This commit is contained in:
Timur A. Fatkhullin 2025-07-24 19:23:31 +03:00
parent 961c72f17f
commit 1033506c11

View File

@ -248,6 +248,28 @@ public:
template <traits::mcc_celestial_point_c CT>
error_t toHardware(CT coord, astrom_engine_t::time_point_t time_point, coord_t& X, coord_t& Y)
{
typedef typename astrom_engine_t::jd_t jd_t;
jd_t jd;
typedef typename astrom_engine_t::eo_t eo_t;
eo_t eo;
typedef typename astrom_engine_t::sideral_time_t sideral_time_t;
sideral_time_t lst;
auto get_jd_lst_eo = [&time_point, this](jd_t& jd, sideral_time_t& lst, eo_t& eo) {
auto ast_err = _astromEngine.greg2jul(time_point, jd);
if (!ast_err) {
ast_err = _astromEngine.apparentSiderTime(jd, lst, true);
if (!ast_err) {
ast_err = _astromEngine->eqOrigins(jd, eo);
}
}
return ast_err;
};
typename astrom_engine_t::error_t ast_err;
typename pec_t::error_t pec_err;
@ -257,10 +279,40 @@ public:
return {};
} else if (coord.coordPairKind == MccCoordPairKind::COORDS_KIND_RADEC_APP) { // from app RA-DEC
ast_err = get_jd_lst_eo(jd, lst, eo);
if (!ast_err) {
coord.x = lst - coord.x + eo; // HA
coord.coordPairKind == MccCoordPairKind::COORDS_KIND_HADEC_APP;
ast_err = toHardware(std::move(coord), std::move(time_point), X, Y);
}
} else if (coord.coordPairKind == MccCoordPairKind::COORDS_KIND_HADEC_APP) { // from app HA-DEC
} else if (coord.coordPairKind == MccCoordPairKind::COORDS_KIND_AZALT) { // from app AZ-ALT
} else if (coord.coordPairKind == MccCoordPairKind::COORDS_KIND_AZZD) { // from app AZ-ZD
if constexpr (equatorialMount) {
typename pec_t::pec_result_t pec_res;
pec_err = _pec.compute(coord.x, coord.y, pec_res);
if (!pec_err) {
X = coord.x - pec_res.dx;
Y = coord.y - pec_res.dy;
return {};
}
} else if constexpr (altAzMount) {
coord_t az, alt;
ast_err = _astromEngine.hadec2azalt(coord.x, coord.y, az, alt);
if (!ast_err) {
coord.coordPairKind == MccCoordPairKind::COORDS_KIND_AZALT;
coord.x = az;
coord.y = alt;
ast_err = toHardware(std::move(coord), std::move(time_point), X, Y);
}
} else {
static_assert(false, "UNSUPPORTED MOUNT TYPE!");
}
} else if (coord.coordPairKind == MccCoordPairKind::COORDS_KIND_AZALT) { // from app AZ-ALT
} else if (coord.coordPairKind == MccCoordPairKind::COORDS_KIND_AZZD) { // from app AZ-ZD
coord.coordPairKind == MccCoordPairKind::COORDS_KIND_AZALT;
coord.y = std::numbers::pi / 2.0 - coord.y;
ast_err = toICRS(std::move(coord), std::move(time_point), X, Y);