File frame_concepts.hpp¶
File List > astrea > astro > astro > frames > frame_concepts.hpp
Go to the documentation of this file
#pragma once
#include <concepts>
#include <astro/astro.fwd.hpp>
namespace astrea {
namespace astro {
template <typename Frame_T>
concept IsInertialFrame = (Frame_T::get_axis() == FrameAxis::ICRF || Frame_T::get_axis() == FrameAxis::J2000);
template <typename Frame_T>
concept IsBodyFixedFrame = (Frame_T::get_axis() == FrameAxis::BODY_FIXED);
template <typename Frame_T>
concept IsStaticFrame =
(Frame_T::get_axis() == FrameAxis::ICRF || Frame_T::get_axis() == FrameAxis::J2000 || Frame_T::get_axis() == FrameAxis::BODY_FIXED);
template <typename Frame_T>
concept IsDynamicFrame =
(Frame_T::get_axis() == FrameAxis::LVLH || Frame_T::get_axis() == FrameAxis::RIC || Frame_T::get_axis() == FrameAxis::VNB);
template <typename Frame_T, typename Frame_U>
concept HasSameOrigin = (Frame_T::get_origin() == Frame_U::get_origin());
template <typename Frame_T, typename Frame_U>
concept HasSameAxis = (Frame_T::get_axis() == Frame_U::get_axis());
template <typename Frame_T, typename Frame_U>
concept IsSameFrame = HasSameOrigin<Frame_T, Frame_U> && HasSameAxis<Frame_T, Frame_U>;
template <typename Frame_T, typename Frame_U>
concept HasDcm = requires(const Date& date) { get_dcm<Frame_T, Frame_U>(date); };
template <typename Frame_T, typename Frame_U>
concept HasDcmMethod =
requires(const Frame_T& frame, const Date& date) { frame.template get_dcm<Frame_T, Frame_U>(date); };
} // namespace astro
} // namespace astrea