...
This commit is contained in:
@@ -38,14 +38,11 @@ concept mcc_astrom_engine_c = requires(T t, const T t_const) {
|
||||
typename T::engine_state_t;
|
||||
requires std::movable<typename T::engine_state_t>;
|
||||
|
||||
typename T::coord_t;
|
||||
typename T::prop_motion_t;
|
||||
typename T::parallax_t;
|
||||
typename T::time_point_t;
|
||||
typename T::juldate_t;
|
||||
typename T::gst_t;
|
||||
typename T::pa_t;
|
||||
typename T::eo_t;
|
||||
typename T::coord_t; // type for coordinates representation
|
||||
typename T::time_point_t; // type to represent UTC time point
|
||||
typename T::juldate_t; // type to represent Julian date
|
||||
typename T::sideral_time_t; // type to represent sideral time
|
||||
typename T::pa_t; // type to represent parallactic angle
|
||||
|
||||
typename T::refract_result_t;
|
||||
|
||||
@@ -58,14 +55,12 @@ concept mcc_astrom_engine_c = requires(T t, const T t_const) {
|
||||
|
||||
/* coordinates conversional methods */
|
||||
|
||||
// ICRS RA and DEC to observed place: icrs2obs(ra, dec, pra, pdec, plx, jd, ra_app, dec_app, ha, az, alt, eo)
|
||||
// ICRS RA and DEC to observed place: icrs2obs(ra, dec, jd, ra_app, dec_app, ha, az, alt)
|
||||
{
|
||||
t.icrs2obs(std::declval<typename T::coord_t>(), std::declval<typename T::coord_t>(),
|
||||
std::declval<typename T::prop_motion_t>(), std::declval<typename T::prop_motion_t>(),
|
||||
std::declval<typename T::parallax_t>(), std::declval<typename T::juldate_t>(),
|
||||
std::declval<typename T::juldate_t>(), std::declval<typename T::coord_t&>(),
|
||||
std::declval<typename T::coord_t&>(), std::declval<typename T::coord_t&>(),
|
||||
std::declval<typename T::coord_t&>(), std::declval<typename T::coord_t&>(),
|
||||
std::declval<typename T::coord_t&>(), std::declval<typename T::eo_t&>())
|
||||
std::declval<typename T::coord_t&>(), std::declval<typename T::coord_t&>())
|
||||
} -> std::same_as<typename T::engine_err_t>;
|
||||
|
||||
// compute hour angle and declination from azimuth and altitude: hadec2azalt(ha, dec, az, alt)
|
||||
@@ -80,7 +75,7 @@ concept mcc_astrom_engine_c = requires(T t, const T t_const) {
|
||||
std::declval<typename T::coord_t&>(), std::declval<typename T::coord_t&>())
|
||||
} -> std::same_as<typename T::engine_err_t>;
|
||||
|
||||
// compute paralactic angle: hadec2pa(ha, dec, pa)
|
||||
// compute parallactic angle: hadec2pa(ha, dec, pa)
|
||||
{
|
||||
t.hadec2pa(std::declval<typename T::coord_t>(), std::declval<typename T::coord_t>(),
|
||||
std::declval<typename T::pa_t&>())
|
||||
@@ -93,12 +88,11 @@ concept mcc_astrom_engine_c = requires(T t, const T t_const) {
|
||||
{
|
||||
t.greg2jul(std::declval<typename T::time_point_t>(), std::declval<typename T::juldate_t&>())
|
||||
} -> std::same_as<typename T::engine_err_t>;
|
||||
// requires mcc_systime_c<mcc_func_arg1_t<decltype(&T::greg2jul)>>;
|
||||
// requires mcc_output_arg_c<mcc_func_argN_t<decltype(&T::greg2jul), 2>, typename T::juldate_t>;
|
||||
|
||||
// apparent sideral time: apparentSiderTime(jd, gst, islocal)
|
||||
// if islocal == false then the method must return the Greenwich apparent sideral time, otherwise - local one
|
||||
{
|
||||
t.apparentSiderTime(std::declval<typename T::juldate_t>(), std::declval<typename T::gst_t&>(),
|
||||
t.apparentSiderTime(std::declval<typename T::juldate_t>(), std::declval<typename T::sideral_time_t&>(),
|
||||
std::declval<bool>())
|
||||
} -> std::same_as<typename T::engine_err_t>;
|
||||
|
||||
@@ -120,14 +114,12 @@ concept mcc_hw_encoder_c = requires(T t, const T t_const) {
|
||||
typename T::coord_t;
|
||||
typename T::speed_t;
|
||||
typename T::accel_t;
|
||||
// typename T::high_order_deriv_t;
|
||||
|
||||
requires requires(typename T::state_t st) {
|
||||
std::same_as<decltype(st.time), typename T::time_point_t>;
|
||||
std::same_as<decltype(st.pos), typename T::coord_t>;
|
||||
std::same_as<decltype(st.speed), typename T::speed_t>;
|
||||
std::same_as<decltype(st.accel), typename T::accel_t>;
|
||||
// std::same_as<decltype(st.high_order), typename T::high_order_deriv_t>;
|
||||
requires std::same_as<decltype(st.time), typename T::time_point_t>;
|
||||
requires std::same_as<decltype(st.pos), typename T::coord_t>;
|
||||
requires std::same_as<decltype(st.speed), typename T::speed_t>;
|
||||
requires std::same_as<decltype(st.accel), typename T::accel_t>;
|
||||
};
|
||||
|
||||
{ t_const.errorString(std::declval<typename T::error_t>()) } -> mcc_formattable;
|
||||
@@ -147,9 +139,9 @@ concept mcc_hw_motor_c = requires(T t, const T t_const) {
|
||||
typename T::accel_t;
|
||||
|
||||
requires requires(typename T::pos_t st) {
|
||||
std::same_as<decltype(st.pos), typename T::coord_t>;
|
||||
std::same_as<decltype(st.speed), typename T::speed_t>; // means maximal allowed speed
|
||||
std::same_as<decltype(st.accel), typename T::accel_t>; // means a maximal allowed acceleration (jerk)
|
||||
requires std::same_as<decltype(st.pos), typename T::coord_t>;
|
||||
requires std::same_as<decltype(st.speed), typename T::speed_t>; // means maximal allowed speed
|
||||
requires std::same_as<decltype(st.accel), typename T::accel_t>; // means a maximal allowed acceleration (jerk)
|
||||
};
|
||||
|
||||
|
||||
@@ -157,7 +149,7 @@ concept mcc_hw_motor_c = requires(T t, const T t_const) {
|
||||
|
||||
{ t_const.id() } -> mcc_formattable;
|
||||
|
||||
{ t.rotate(std::declval<typename T::pos_t>()) } -> std::same_as<typename T::error_t>;
|
||||
{ t.toPos(std::declval<typename T::pos_t>()) } -> std::same_as<typename T::error_t>;
|
||||
|
||||
{ t.stop() } -> std::same_as<typename T::error_t>;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user