.. _program_listing_file_dynamics_attitude_dynamics.h: Program Listing for File attitude_dynamics.h ============================================ |exhale_lsh| :ref:`Return to documentation for file ` (``dynamics/attitude_dynamics.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #pragma once #include "lupnt/dynamics/dynamics.h" #include "lupnt/interfaces/yaml.h" #include "lupnt/states/state.h" namespace lupnt { class AttitudeDynamics : public Dynamics { public: AttitudeDynamics() = default; AttitudeDynamics(Config& config); StateType GetStateType() const override { return Attitude::TYPE; } using Dynamics::Propagate; virtual State Propagate(const State& qw, Real t0, Real tf, const State& rv); }; class FixedAttitudeDynamics : public AttitudeDynamics { public: FixedAttitudeDynamics() = default; FixedAttitudeDynamics(Config& config); using AttitudeDynamics::Propagate; State Propagate(const State& qw, Real t0, Real tf, const State* u = nullptr) override; StateType GetStateType() const override { return Attitude::TYPE; } }; class FixedPointingDynamics : public AttitudeDynamics { private: Axis primary_axis_, secondary_axis_; BodyId primary_body_id_, secondary_body_id_; public: FixedPointingDynamics() = default; FixedPointingDynamics(Config& config); void SetPrimaryPointing(Axis axis, BodyId body_id) { primary_axis_ = axis; primary_body_id_ = body_id; } void SetSecondaryPointing(Axis axis, BodyId body_id) { secondary_axis_ = axis; secondary_body_id_ = body_id; } using AttitudeDynamics::Propagate; State Propagate(const State& qw, Real t0, Real tf, const State& rv) override; State Propagate(const State& qw, Real t0, Real tf, const State* u) override; StateType GetStateType() const override { return Attitude::TYPE; } }; } // namespace lupnt