...
This commit is contained in:
parent
961c72f17f
commit
1033506c11
@ -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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user