This commit is contained in:
2026-04-13 19:03:42 +03:00
parent 59560704b0
commit c21b4c4771
2 changed files with 71 additions and 45 deletions

View File

@@ -477,88 +477,102 @@ std::string MccAngleFancyString(std::convertible_to<MccAngle> auto const& ang,
/* HELPER TYPES TO REPERESENT ANGLES ON THE CELESTIAL SPHERE */ /* HELPER TYPES TO REPERESENT ANGLES ON THE CELESTIAL SPHERE */
template <MccAngle::norm_kind_t NORM_KIND> template <MccAngle::norm_kind_t NORM_KIND>
class MccCelestialAngle : public MccAngle class MccNormalizedAngle : public MccAngle
{ {
public: public:
template <typename... CtorArgTs> template <typename... CtorArgTs>
MccCelestialAngle(CtorArgTs&&... args) : MccAngle(std::forward<CtorArgTs>(args)...) MccNormalizedAngle(CtorArgTs&&... args) : MccAngle(std::forward<CtorArgTs>(args)...)
{ {
normalize<NORM_KIND>(); normalize<NORM_KIND>();
} }
MccCelestialAngle(MccCelestialAngle const&) = default; MccNormalizedAngle(MccNormalizedAngle const&) = default;
MccCelestialAngle(MccCelestialAngle&&) = default; MccNormalizedAngle(MccNormalizedAngle&&) = default;
MccCelestialAngle& operator=(MccCelestialAngle const&) = default; MccNormalizedAngle& operator=(MccNormalizedAngle const&) = default;
MccCelestialAngle& operator=(MccCelestialAngle&&) = default; MccNormalizedAngle& operator=(MccNormalizedAngle&&) = default;
}; };
class MccAngleRA_ICRS : public MccCelestialAngle<MccAngle::NORM_KIND_0_360> class MccAngleRA_ICRS : public MccNormalizedAngle<MccAngle::NORM_KIND_0_360>
{ {
public: public:
using MccCelestialAngle<MccAngle::NORM_KIND_0_360>::MccCelestialAngle; using MccNormalizedAngle<MccAngle::NORM_KIND_0_360>::MccNormalizedAngle;
}; };
class MccAngleDEC_ICRS : public MccCelestialAngle<MccAngle::NORM_KIND_90_90> class MccAngleDEC_ICRS : public MccNormalizedAngle<MccAngle::NORM_KIND_90_90>
{ {
public: public:
using MccCelestialAngle<MccAngle::NORM_KIND_90_90>::MccCelestialAngle; using MccNormalizedAngle<MccAngle::NORM_KIND_90_90>::MccNormalizedAngle;
}; };
class MccAngleRA_APP : public MccCelestialAngle<MccAngle::NORM_KIND_0_360> class MccAngleRA_APP : public MccNormalizedAngle<MccAngle::NORM_KIND_0_360>
{ {
public: public:
using MccCelestialAngle<MccAngle::NORM_KIND_0_360>::MccCelestialAngle; using MccNormalizedAngle<MccAngle::NORM_KIND_0_360>::MccNormalizedAngle;
}; };
class MccAngleDEC_APP : public MccCelestialAngle<MccAngle::NORM_KIND_90_90> class MccAngleDEC_APP : public MccNormalizedAngle<MccAngle::NORM_KIND_90_90>
{ {
public: public:
using MccCelestialAngle<MccAngle::NORM_KIND_90_90>::MccCelestialAngle; using MccNormalizedAngle<MccAngle::NORM_KIND_90_90>::MccNormalizedAngle;
}; };
class MccAngleRA_OBS : public MccCelestialAngle<MccAngle::NORM_KIND_0_360> class MccAngleRA_OBS : public MccNormalizedAngle<MccAngle::NORM_KIND_0_360>
{ {
public: public:
using MccCelestialAngle<MccAngle::NORM_KIND_0_360>::MccCelestialAngle; using MccNormalizedAngle<MccAngle::NORM_KIND_0_360>::MccNormalizedAngle;
}; };
class MccAngleDEC_OBS : public MccCelestialAngle<MccAngle::NORM_KIND_90_90> class MccAngleDEC_OBS : public MccNormalizedAngle<MccAngle::NORM_KIND_90_90>
{ {
public: public:
using MccCelestialAngle<MccAngle::NORM_KIND_90_90>::MccCelestialAngle; using MccNormalizedAngle<MccAngle::NORM_KIND_90_90>::MccNormalizedAngle;
}; };
class MccAngleHA_APP : public MccCelestialAngle<MccAngle::NORM_KIND_180_180> class MccAngleHA_APP : public MccNormalizedAngle<MccAngle::NORM_KIND_180_180>
{ {
public: public:
using MccCelestialAngle<MccAngle::NORM_KIND_180_180>::MccCelestialAngle; using MccNormalizedAngle<MccAngle::NORM_KIND_180_180>::MccNormalizedAngle;
}; };
class MccAngleHA_OBS : public MccCelestialAngle<MccAngle::NORM_KIND_180_180> class MccAngleHA_OBS : public MccNormalizedAngle<MccAngle::NORM_KIND_180_180>
{ {
public: public:
using MccCelestialAngle<MccAngle::NORM_KIND_180_180>::MccCelestialAngle; using MccNormalizedAngle<MccAngle::NORM_KIND_180_180>::MccNormalizedAngle;
}; };
class MccAngleAZ : public MccCelestialAngle<MccAngle::NORM_KIND_0_360> class MccAngleAZ : public MccNormalizedAngle<MccAngle::NORM_KIND_0_360>
{ {
public: public:
using MccCelestialAngle<MccAngle::NORM_KIND_0_360>::MccCelestialAngle; using MccNormalizedAngle<MccAngle::NORM_KIND_0_360>::MccNormalizedAngle;
}; };
class MccAngleZD : public MccCelestialAngle<MccAngle::NORM_KIND_0_180> class MccAngleZD : public MccNormalizedAngle<MccAngle::NORM_KIND_0_180>
{ {
public: public:
using MccCelestialAngle<MccAngle::NORM_KIND_0_180>::MccCelestialAngle; using MccNormalizedAngle<MccAngle::NORM_KIND_0_180>::MccNormalizedAngle;
}; };
class MccAngleALT : public MccCelestialAngle<MccAngle::NORM_KIND_90_90> class MccAngleALT : public MccNormalizedAngle<MccAngle::NORM_KIND_90_90>
{ {
public: public:
using MccCelestialAngle<MccAngle::NORM_KIND_90_90>::MccCelestialAngle; using MccNormalizedAngle<MccAngle::NORM_KIND_90_90>::MccNormalizedAngle;
};
class MccAngleLON : public MccNormalizedAngle<MccAngle::NORM_KIND_0_360>
{
public:
using MccNormalizedAngle<MccAngle::NORM_KIND_0_360>::MccNormalizedAngle;
};
class MccAngleLAT : public MccNormalizedAngle<MccAngle::NORM_KIND_90_90>
{
public:
using MccNormalizedAngle<MccAngle::NORM_KIND_90_90>::MccNormalizedAngle;
}; };
@@ -676,17 +690,17 @@ public:
class MccAngleLAT : public MccAngle // class MccAngleLAT : public MccAngle
{ // {
public: // public:
using MccAngle::MccAngle; // using MccAngle::MccAngle;
}; // };
class MccAngleLON : public MccAngle // class MccAngleLON : public MccAngle
{ // {
public: // public:
using MccAngle::MccAngle; // using MccAngle::MccAngle;
}; // };
class MccAngleUnknown : public MccAngle class MccAngleUnknown : public MccAngle
{ {

View File

@@ -69,7 +69,7 @@ public:
template <mcc_coord_epoch_c EpT = MccCelestialCoordEpoch> template <mcc_coord_epoch_c EpT = MccCelestialCoordEpoch>
MccCoordPair(CO_LON_T const& x, CO_LAT_T const& y, EpT const& epoch = EpT::now()) : _x(x), _y(y), _epoch(epoch) MccCoordPair(CO_LON_T const& x, CO_LAT_T const& y, EpT const& epoch = EpT::now()) : _x(x), _y(y), _epoch(epoch)
{ {
normalize(); // normalize();
} }
MccCoordPair(const MccCoordPair&) = default; MccCoordPair(const MccCoordPair&) = default;
@@ -87,7 +87,9 @@ public:
setY((double)other.y()); setY((double)other.y());
setEpoch(other.epoch()); setEpoch(other.epoch());
normalize(); if constexpr (T::pairKind != pairKind) {
normalize();
}
} }
@@ -100,7 +102,9 @@ public:
setY((double)other.y()); setY((double)other.y());
setEpoch(other.epoch()); setEpoch(other.epoch());
normalize(); if constexpr (T::pairKind != pairKind) {
normalize();
}
} }
@@ -113,7 +117,9 @@ public:
setY((double)other.y()); setY((double)other.y());
setEpoch(other.epoch()); setEpoch(other.epoch());
normalize(); if constexpr (T::pairKind != pairKind) {
normalize();
}
} }
@@ -126,7 +132,9 @@ public:
setY((double)other.y()); setY((double)other.y());
setEpoch(other.epoch()); setEpoch(other.epoch());
normalize(); if constexpr (T::pairKind != pairKind) {
normalize();
}
} }
@@ -171,14 +179,14 @@ public:
{ {
_x = x; _x = x;
normalize(); // normalize();
} }
void setY(const CO_LAT_T& y) void setY(const CO_LAT_T& y)
{ {
_y = y; _y = y;
normalize(); // normalize();
} }
void setEpoch(mcc_coord_epoch_c auto const& ep) void setEpoch(mcc_coord_epoch_c auto const& ep)
@@ -194,6 +202,9 @@ protected:
void normalize() void normalize()
{ {
_x = CO_LON_T{_x};
_y = CO_LAT_T{_y};
/*
if constexpr (pairKind != MccCoordPairKind::COORDS_KIND_GENERIC && if constexpr (pairKind != MccCoordPairKind::COORDS_KIND_GENERIC &&
pairKind != MccCoordPairKind::COORDS_KIND_XY) { pairKind != MccCoordPairKind::COORDS_KIND_XY) {
// if constexpr (pairKind == MccCoordPairKind::COORDS_KIND_HADEC_APP || // if constexpr (pairKind == MccCoordPairKind::COORDS_KIND_HADEC_APP ||
@@ -216,6 +227,7 @@ protected:
_y = (double)MccAngle(_y).normalize<MccAngle::NORM_KIND_0_180>(); _y = (double)MccAngle(_y).normalize<MccAngle::NORM_KIND_0_180>();
} }
} }
*/
} }
}; };