...
This commit is contained in:
78
mcc/mcc_pzone.h
Normal file
78
mcc/mcc_pzone.h
Normal file
@@ -0,0 +1,78 @@
|
||||
#pragma once
|
||||
|
||||
/* MOUNT CONTROL COMPONENTS LIBRARY */
|
||||
|
||||
|
||||
/* IMPLEMENTATION OF SOME SIMPLE PROHIBITED ZONES */
|
||||
|
||||
#include "mcc_generics.h"
|
||||
|
||||
namespace mcc
|
||||
{
|
||||
|
||||
static constexpr double mcc_sideral_to_UT1_ratio = 1.002737909350795; // sideral/UT1
|
||||
|
||||
|
||||
/* MINIMAL OR MAXIMAL ALTITUDE PROHIBITED ZONES */
|
||||
|
||||
enum class MccAltLimitKind { MIN_ALT_LIMIT, MAX_ALT_LIMIT };
|
||||
|
||||
template <mcc_ccte_c CCTE_T, MccAltLimitKind KIND = MccAltLimitKind::MIN_ALT_LIMIT>
|
||||
class MccAltLimitPZ : public mcc_pzone_interface_t<std::error_code>
|
||||
{
|
||||
protected:
|
||||
double _altLimit, _cosALim, _sinAlim;
|
||||
double _cosLat, _sinLat, _absLat;
|
||||
|
||||
CCTE_T* _ccteEngine;
|
||||
|
||||
public:
|
||||
typedef std::error_code error_t;
|
||||
|
||||
MccAltLimitPZ(mcc_angle_c auto const& alt_limit, mcc_angle_c auto const& latitude, CCTE_T* ccte_engine)
|
||||
: _altLimit(alt_limit),
|
||||
_cosALim(cos(_altLimit)),
|
||||
_sinAlim(sin(_altLimit)),
|
||||
_cosLat(cos(latitude)),
|
||||
_sinLat(sin(latitude)),
|
||||
_absLat(abs(latitude)),
|
||||
_ccteEngine(ccte_engine)
|
||||
{
|
||||
}
|
||||
|
||||
consteval std::string_view name() const
|
||||
{
|
||||
return KIND == MccAltLimitKind::MIN_ALT_LIMIT ? "MINALT-ZONE"
|
||||
: KIND == MccAltLimitKind::MAX_ALT_LIMIT ? "MAXALT-ZONE"
|
||||
: "ALTLIMIT-UNKNOWN";
|
||||
}
|
||||
|
||||
|
||||
template <typename InputT>
|
||||
error_t inPZone(InputT coords, bool* result)
|
||||
requires(mcc_eqt_hrz_coord_c<InputT> || mcc_celestial_point_c<InputT>)
|
||||
{
|
||||
// auto ret =
|
||||
// return ret;
|
||||
}
|
||||
|
||||
template <typename InputT>
|
||||
error_t timeToPZone(InputT coords, traits::mcc_time_duration_c auto* res_time)
|
||||
requires(mcc_eqt_hrz_coord_c<InputT> || mcc_celestial_point_c<InputT>)
|
||||
{
|
||||
}
|
||||
|
||||
template <typename InputT>
|
||||
error_t timeFromPZone(InputT coords, traits::mcc_time_duration_c auto* res_time)
|
||||
requires(mcc_eqt_hrz_coord_c<InputT> || mcc_celestial_point_c<InputT>)
|
||||
{
|
||||
}
|
||||
|
||||
template <typename InputT>
|
||||
error_t intersectPZone(InputT coords, mcc_celestial_point_c auto* point)
|
||||
requires(mcc_eqt_hrz_coord_c<InputT> || mcc_celestial_point_c<InputT>)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace mcc
|
||||
Reference in New Issue
Block a user