...
This commit is contained in:
@@ -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
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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,8 +87,10 @@ public:
|
|||||||
setY((double)other.y());
|
setY((double)other.y());
|
||||||
setEpoch(other.epoch());
|
setEpoch(other.epoch());
|
||||||
|
|
||||||
|
if constexpr (T::pairKind != pairKind) {
|
||||||
normalize();
|
normalize();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template <mcc_coord_pair_c T>
|
template <mcc_coord_pair_c T>
|
||||||
@@ -100,8 +102,10 @@ public:
|
|||||||
setY((double)other.y());
|
setY((double)other.y());
|
||||||
setEpoch(other.epoch());
|
setEpoch(other.epoch());
|
||||||
|
|
||||||
|
if constexpr (T::pairKind != pairKind) {
|
||||||
normalize();
|
normalize();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template <mcc_coord_pair_c T>
|
template <mcc_coord_pair_c T>
|
||||||
@@ -113,8 +117,10 @@ public:
|
|||||||
setY((double)other.y());
|
setY((double)other.y());
|
||||||
setEpoch(other.epoch());
|
setEpoch(other.epoch());
|
||||||
|
|
||||||
|
if constexpr (T::pairKind != pairKind) {
|
||||||
normalize();
|
normalize();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template <mcc_coord_pair_c T>
|
template <mcc_coord_pair_c T>
|
||||||
@@ -126,8 +132,10 @@ public:
|
|||||||
setY((double)other.y());
|
setY((double)other.y());
|
||||||
setEpoch(other.epoch());
|
setEpoch(other.epoch());
|
||||||
|
|
||||||
|
if constexpr (T::pairKind != pairKind) {
|
||||||
normalize();
|
normalize();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
virtual ~MccCoordPair() = default;
|
virtual ~MccCoordPair() = default;
|
||||||
@@ -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>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user