Program Listing for File attitude_dynamics.h¶
↰ Return to documentation for file (dynamics/attitude_dynamics.h)
#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