...
This commit is contained in:
parent
961c72f17f
commit
1033506c11
@ -248,6 +248,28 @@ public:
|
|||||||
template <traits::mcc_celestial_point_c CT>
|
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)
|
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 astrom_engine_t::error_t ast_err;
|
||||||
typename pec_t::error_t pec_err;
|
typename pec_t::error_t pec_err;
|
||||||
|
|
||||||
@ -257,10 +279,40 @@ public:
|
|||||||
|
|
||||||
return {};
|
return {};
|
||||||
} else if (coord.coordPairKind == MccCoordPairKind::COORDS_KIND_RADEC_APP) { // from app RA-DEC
|
} 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_HADEC_APP) { // from app HA-DEC
|
||||||
} else if (coord.coordPairKind == MccCoordPairKind::COORDS_KIND_AZALT) { // from app AZ-ALT
|
if constexpr (equatorialMount) {
|
||||||
} else if (coord.coordPairKind == MccCoordPairKind::COORDS_KIND_AZZD) { // from app AZ-ZD
|
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.coordPairKind == MccCoordPairKind::COORDS_KIND_AZALT;
|
||||||
coord.y = std::numbers::pi / 2.0 - coord.y;
|
coord.y = std::numbers::pi / 2.0 - coord.y;
|
||||||
ast_err = toICRS(std::move(coord), std::move(time_point), X, Y);
|
ast_err = toICRS(std::move(coord), std::move(time_point), X, Y);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user