This commit is contained in:
Timur A. Fatkhullin
2025-08-21 03:47:53 +03:00
parent 99a28d87ec
commit 33002f1711
8 changed files with 469 additions and 19 deletions

View File

@@ -142,6 +142,8 @@ static constexpr ErrT mcc_deduce_error(const DErrT& err, const ErrT& default_err
}
}
/* ATMOSPHERIC REFRACTION MODEL CLASS CONCEPT */
template <typename T>
@@ -179,7 +181,8 @@ static constexpr void mcc_copy_celestial_point(mcc_celestial_point_c auto const&
}
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);
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;
}
@@ -214,7 +217,8 @@ static constexpr void mcc_copy_eqt_hrz_coord(mcc_eqt_hrz_coord_c auto const& fro
}
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);
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;
@@ -321,7 +325,8 @@ static constexpr void mcc_copy_pointing_target_coord(mcc_pointing_target_coord_c
}
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);
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;
@@ -374,7 +379,8 @@ static constexpr void mcc_copy_telemetry_data(mcc_telemetry_data_c auto const& f
}
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);
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;
@@ -571,10 +577,10 @@ struct mcc_pzone_container_interface_t {
template <std::derived_from<mcc_pzone_container_interface_t> SelfT, typename InputT>
RetT inPZone(this SelfT&& self, InputT coords, std::ranges::output_range<bool> auto* result)
RetT inPZone(this SelfT&& self, InputT coords, bool* common_result, std::ranges::output_range<bool> auto* result)
requires(mcc_eqt_hrz_coord_c<InputT> || mcc_celestial_point_c<InputT>)
{
return std::forward<SelfT>(self).InPZone(std::move(coords), result);
return std::forward<SelfT>(self).InPZone(std::move(coords), common_result, result);
}
@@ -592,6 +598,14 @@ struct mcc_pzone_container_interface_t {
return std::forward<SelfT>(self).timeFromPZone(std::move(coords), res_time);
}
template <std::derived_from<mcc_pzone_container_interface_t> SelfT, typename InputT, mcc_celestial_point_c CPT>
RetT intersectPZone(this SelfT&& self, InputT coords, std::ranges::output_range<CPT> auto* result)
requires(mcc_eqt_hrz_coord_c<InputT> || mcc_celestial_point_c<InputT>)
{
return std::forward<SelfT>(self).intersectPZone(std::move(coords), result);
}
protected:
mcc_pzone_container_interface_t() = default;
};