...
This commit is contained in:
@@ -281,6 +281,9 @@ static constexpr void mcc_copy_celestial_point(mcc_celestial_point_c auto const&
|
||||
|
||||
template <typename T>
|
||||
concept mcc_eqt_hrz_coord_c = mcc_celestial_point_c<T> && requires(T t) {
|
||||
requires mcc_angle_c<decltype(t.RA_ICRS)>; // ICRS right ascention
|
||||
requires mcc_angle_c<decltype(t.DEC_ICRS)>; // ICRS declination
|
||||
|
||||
requires mcc_angle_c<decltype(t.RA_APP)>; // right ascension
|
||||
requires mcc_angle_c<decltype(t.DEC_APP)>; // declination
|
||||
requires mcc_angle_c<decltype(t.HA)>; // hour angle
|
||||
@@ -311,6 +314,9 @@ static constexpr void mcc_copy_eqt_hrz_coord(mcc_eqt_hrz_coord_c auto const& fro
|
||||
to_pt->X = (double)from_pt.X;
|
||||
to_pt->Y = (double)from_pt.Y;
|
||||
|
||||
to_pt->RA_ICRS = (double)from_pt.RA_ICRS;
|
||||
to_pt->DEC_ICRS = (double)from_pt.DEC_ICRS;
|
||||
|
||||
to_pt->RA_APP = (double)from_pt.RA_APP;
|
||||
to_pt->DEC_APP = (double)from_pt.DEC_APP;
|
||||
|
||||
@@ -582,47 +588,6 @@ concept mcc_hardware_c = requires(T t, const T t_const) {
|
||||
|
||||
/* MOUNT TELEMETRY DATA CLASS CONCEPT */
|
||||
|
||||
template <typename T>
|
||||
concept mcc_pointing_target_coord_c = mcc_eqt_hrz_coord_c<T> && requires(T t) {
|
||||
requires mcc_angle_c<decltype(t.RA_ICRS)>; // ICRS right ascention
|
||||
requires mcc_angle_c<decltype(t.DEC_ICRS)>; // ICRS declination
|
||||
};
|
||||
|
||||
|
||||
static constexpr void mcc_copy_pointing_target_coord(mcc_pointing_target_coord_c auto const& from_pt,
|
||||
mcc_pointing_target_coord_c auto* to_pt)
|
||||
{
|
||||
if (to_pt == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
using from_pt_t = std::remove_cvref_t<decltype(from_pt)>;
|
||||
using to_pt_t = std::remove_cvref_t<decltype(*to_pt)>;
|
||||
|
||||
if constexpr (std::derived_from<to_pt_t, from_pt_t> && std::copyable<to_pt_t>) {
|
||||
*to_pt = from_pt;
|
||||
return;
|
||||
}
|
||||
|
||||
to_pt->pair_kind = from_pt.pair_kind;
|
||||
to_pt->time_point =
|
||||
std::chrono::time_point_cast<typename decltype(to_pt->time_point)::duration>(from_pt.time_point);
|
||||
to_pt->X = (double)from_pt.X;
|
||||
to_pt->Y = (double)from_pt.Y;
|
||||
|
||||
to_pt->RA_ICRS = (double)from_pt.RA_ICRS;
|
||||
to_pt->DEC_ICRS = (double)from_pt.DEC_ICRS;
|
||||
|
||||
to_pt->RA_APP = (double)from_pt.RA_APP;
|
||||
to_pt->DEC_APP = (double)from_pt.DEC_APP;
|
||||
|
||||
to_pt->HA = (double)from_pt.HA;
|
||||
to_pt->AZ = (double)from_pt.AZ;
|
||||
to_pt->ZD = (double)from_pt.ZD;
|
||||
to_pt->ALT = (double)from_pt.ALT;
|
||||
}
|
||||
|
||||
|
||||
|
||||
template <typename T>
|
||||
concept mcc_telemetry_data_c = mcc_eqt_hrz_coord_c<T> && std::default_initializable<T> && requires(T t) {
|
||||
@@ -630,7 +595,7 @@ concept mcc_telemetry_data_c = mcc_eqt_hrz_coord_c<T> && std::default_initializa
|
||||
requires mcc_celestial_point_c<decltype(t.entered_target)>;
|
||||
|
||||
// target target coordinates
|
||||
requires mcc_pointing_target_coord_c<decltype(t.target)>;
|
||||
requires mcc_eqt_hrz_coord_c<decltype(t.target)>;
|
||||
|
||||
// t.X and t.Y (from mcc_celestial_point_c) are encoder coordinates
|
||||
// t.* from mcc_eqt_hrz_coord_c are apparent mount pointing coordinates
|
||||
@@ -673,6 +638,9 @@ static constexpr void mcc_copy_telemetry_data(mcc_telemetry_data_c auto const& f
|
||||
to_pt->speedX = (double)from_pt.speedX;
|
||||
to_pt->speedY = (double)from_pt.speedY;
|
||||
|
||||
to_pt->RA_ICRS = (double)from_pt.RA_ICRS;
|
||||
to_pt->DEC_ICRS = (double)from_pt.DEC_ICRS;
|
||||
|
||||
to_pt->RA_APP = (double)from_pt.RA_APP;
|
||||
to_pt->DEC_APP = (double)from_pt.DEC_APP;
|
||||
|
||||
@@ -686,7 +654,9 @@ static constexpr void mcc_copy_telemetry_data(mcc_telemetry_data_c auto const& f
|
||||
|
||||
to_pt->refCorr = (double)from_pt.refCorr;
|
||||
|
||||
mcc_copy_pointing_target_coord(from_pt.target, &to_pt->target);
|
||||
mcc_copy_eqt_hrz_coord(from_pt.target, &to_pt->target);
|
||||
|
||||
mcc_copy_celestial_point(from_pt.entered_target, &to_pt->entered_target);
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user