From 8ce6ffc41c5ec66c781d0a209c4a253f16e08d1f Mon Sep 17 00:00:00 2001 From: "Timur A. Fatkhullin" Date: Mon, 22 Dec 2025 22:56:49 +0300 Subject: [PATCH] ... --- mcc/mcc_coord.h | 63 ++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 62 insertions(+), 1 deletion(-) diff --git a/mcc/mcc_coord.h b/mcc/mcc_coord.h index 2a6f1d0..8db60cd 100644 --- a/mcc/mcc_coord.h +++ b/mcc/mcc_coord.h @@ -567,16 +567,77 @@ protected: auto comp_func = [&, this](this auto& self, MccCoordPairKind cp_kind) { if (cp_kind == MccCoordPairKind::COORDS_KIND_AZALT) { + if constexpr (mccIsAppCoordPairKind) { + // correct for refraction: alt -= dz_refr + } + + azalt2hadec(az, alt, phi, ha, dec); + cpair.setY(dec); + if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_RADEC_APP) { + ra = lst + eo - ha; + cpair.setX(ra); } else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_RADEC_OBS) { + ra = lst + eo - ha; + cpair.setX(ra); } else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_HADEC_APP) { + cpair.setX(ha); } else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_HADEC_OBS) { - } else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_AZALT) { + cpair.setX(ha); + // } else if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_AZALT) { } else { // unsupported transformation!!! return; } } else if (cp_kind == MccCoordPairKind::COORDS_KIND_AZZD) { alt = half_pi - _y; + self(MccCoordPairKind::COORDS_KIND_AZALT); + } else if (cp_kind == MccCoordPairKind::COORDS_KIND_HADEC_OBS) { + if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_RADEC_OBS) { + ra = lst + eo - ha; + cpair.setX(ra); + cpair.setY(dec); + } else { + hadec2azalt(ha, dec, phi, az, alt); + if constexpr (mccIsAppCoordPairKind) { // RADEC_APP, HADEC_APP + self(MccCoordPairKind::COORDS_KIND_AZALT); + } else { // AZALT, AZZD + cpair.setX(az); + if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_AZZD) { + zd = half_pi - alt; + cpair.setY(zd); + } else { + cpair.setY(alt); + } + } + } + } else if (cp_kind == MccCoordPairKind::COORDS_KIND_HADEC_APP) { + if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_RADEC_APP) { + ra = lst + eo - ha; + cpair.setX(ra); + cpair.setY(dec); + } else { + hadec2azalt(ha, dec, phi, az, alt); + if constexpr (mccIsObsCoordPairKind) { // RADEC_OBS, HADEC_OBS, AZALT, AZZD + // correct for refraction: alt += dz_refr + self(MccCoordPairKind::COORDS_KIND_AZALT); + } + } + } else if (cp_kind == MccCoordPairKind::COORDS_KIND_RADEC_OBS) { + ha = lst + eo - ra; + if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_HADEC_OBS) { + cpair.setX(ha); + cpair.setY(dec); + } else { + self(MccCoordPairKind::COORDS_KIND_HADEC_OBS); + } + } else if (cp_kind == MccCoordPairKind::COORDS_KIND_RADEC_APP) { + ha = lst + eo - ra; + if constexpr (PT::pairKind == MccCoordPairKind::COORDS_KIND_HADEC_APP) { + cpair.setX(ha); + cpair.setY(dec); + } else { + self(MccCoordPairKind::COORDS_KIND_HADEC_APP); + } } }; }