This commit is contained in:
Timur A. Fatkhullin
2025-06-15 01:48:22 +03:00
parent 4c8e3f4caf
commit a8ef274d4c
3 changed files with 182 additions and 74 deletions

View File

@@ -324,17 +324,32 @@ class MccAngleAZ : public MccAngle
using MccAngle::MccAngle;
};
class MccAngleALT;
class MccAngleZD : public MccAngle
{
using MccAngle::MccAngle;
MccAngleZD(const MccAngleALT&);
};
class MccAngleALT : public MccAngle
{
using MccAngle::MccAngle;
MccAngleALT(const MccAngleZD& zd)
{
_angleInRads = std::numbers::pi / 2.0 - (double)zd;
}
};
MccAngleZD::MccAngleZD(const MccAngleALT& alt)
{
_angleInRads = std::numbers::pi / 2.0 - (double)alt;
}
class MccAngleX : public MccAngle // some co-longitude coordinate
{
using MccAngle::MccAngle;
@@ -358,15 +373,44 @@ class MccAngleLON : public MccAngle
};
enum class MccCoordKind : size_t {
COORDS_KIND_GENERIC = traits::mcc_type_hash<MccAngle>,
COORDS_KIND_RA_ICRS = traits::mcc_type_hash<MccAngleRA_ICRS>,
COORDS_KIND_DEC_ICRS = traits::mcc_type_hash<MccAngleDEC_ICRS>,
COORDS_KIND_RA_APP = traits::mcc_type_hash<MccAngleRA_APP>,
COORDS_KIND_DEC_APP = traits::mcc_type_hash<MccAngleDEC_APP>,
COORDS_KIND_HA = traits::mcc_type_hash<MccAngleHA>,
COORDS_KIND_AZ = traits::mcc_type_hash<MccAngleAZ>,
COORDS_KIND_ZD = traits::mcc_type_hash<MccAngleZD>,
COORDS_KIND_ALT = traits::mcc_type_hash<MccAngleALT>,
COORDS_KIND_X = traits::mcc_type_hash<MccAngleX>,
COORDS_KIND_Y = traits::mcc_type_hash<MccAngleY>,
COORDS_KIND_LAT = traits::mcc_type_hash<MccAngleLAT>,
COORDS_KIND_LON = traits::mcc_type_hash<MccAngleLON>
};
enum class MccCoordPairKind : size_t {
COORDS_KIND_GENERIC = traits::mcc_type_pair_hash<MccAngle, MccAngle>(),
COORDS_KIND_RADEC_ICRS = traits::mcc_type_pair_hash<MccAngleRA_ICRS, MccAngleDEC_ICRS>(),
COORDS_KIND_RADEC_APP = traits::mcc_type_pair_hash<MccAngleRA_APP, MccAngleDEC_APP>(),
COORDS_KIND_HADEC = traits::mcc_type_pair_hash<MccAngleHA, MccAngleDEC_APP>(),
COORDS_KIND_HADEC_APP = traits::mcc_type_pair_hash<MccAngleHA, MccAngleDEC_APP>(),
COORDS_KIND_AZZD = traits::mcc_type_pair_hash<MccAngleAZ, MccAngleZD>(),
COORDS_KIND_AZALT = traits::mcc_type_pair_hash<MccAngleAZ, MccAngleALT>(),
COORDS_KIND_XY = traits::mcc_type_pair_hash<MccAngleX, MccAngleY>(),
COORDS_KIND_LATLON = traits::mcc_type_pair_hash<MccAngleLAT, MccAngleLON>()
};
template <MccCoordPairKind KIND>
static constexpr std::string_view MccCoordPairKindStr =
KIND == MccCoordPairKind::COORDS_KIND_RADEC_ICRS ? "RADEC-IRCS"
: KIND == MccCoordPairKind::COORDS_KIND_RADEC_APP ? "RADEC-APP"
: KIND == MccCoordPairKind::COORDS_KIND_HADEC_APP ? "HADEC-APP"
: KIND == MccCoordPairKind::COORDS_KIND_AZALT ? "Azimuth-Altitude"
: KIND == MccCoordPairKind::COORDS_KIND_AZZD ? "Azimuth-Zendist"
: KIND == MccCoordPairKind::COORDS_KIND_XY ? "X-Y"
: KIND == MccCoordPairKind::COORDS_KIND_LATLON ? "Latitude-Longitude"
: "UNKNOWN";
} // namespace mcc