8#include <janus/math/Quaternion.hpp>
9#include <janus/math/Trig.hpp>
14template <
typename Scalar>
18 : q_(janus::Quaternion<Scalar>::from_euler(roll, pitch, yaw)) {}
20 explicit BodyProvider(
const janus::Quaternion<Scalar> &q_body_to_ned)
21 : q_(q_body_to_ned) {}
23 [[nodiscard]] Vec3<Scalar>
24 to_parent(
const Vec3<Scalar> &v_body)
const override {
25 return q_.rotate(v_body);
28 [[nodiscard]] Vec3<Scalar>
30 return q_.conjugate().rotate(v_ned);
33 [[nodiscard]]
const janus::Quaternion<Scalar> &
quaternion()
const {
38 janus::Quaternion<Scalar> q_;
42template <
typename Scalar>
46 const Scalar ca = janus::cos(alpha);
47 const Scalar sa = janus::sin(alpha);
48 const Scalar cb = janus::cos(beta);
49 const Scalar sb = janus::sin(beta);
65 [[nodiscard]] Vec3<Scalar>
66 to_parent(
const Vec3<Scalar> &v_wind)
const override {
70 [[nodiscard]] Vec3<Scalar>
72 return R_.transpose() * v_body;
75 [[nodiscard]]
const Mat3<Scalar> &
dcm()
const {
return R_; }
82template <
typename Scalar>
86 const Scalar ca = janus::cos(alpha);
87 const Scalar sa = janus::sin(alpha);
103 [[nodiscard]] Vec3<Scalar>
104 to_parent(
const Vec3<Scalar> &v_stability)
const override {
105 return R_ * v_stability;
108 [[nodiscard]] Vec3<Scalar>
110 return R_.transpose() * v_body;
const janus::Quaternion< Scalar > & quaternion() const
Definition VehicleProviders.hpp:33
Vec3< Scalar > from_parent(const Vec3< Scalar > &v_ned) const override
Definition VehicleProviders.hpp:29
Vec3< Scalar > to_parent(const Vec3< Scalar > &v_body) const override
Definition VehicleProviders.hpp:24
BodyProvider(const janus::Quaternion< Scalar > &q_body_to_ned)
Definition VehicleProviders.hpp:20
BodyProvider(Scalar yaw, Scalar pitch, Scalar roll)
Definition VehicleProviders.hpp:17
StabilityProvider(Scalar alpha)
Definition VehicleProviders.hpp:85
Vec3< Scalar > from_parent(const Vec3< Scalar > &v_body) const override
Definition VehicleProviders.hpp:109
Vec3< Scalar > to_parent(const Vec3< Scalar > &v_stability) const override
Definition VehicleProviders.hpp:104
const Mat3< Scalar > & dcm() const
Definition VehicleProviders.hpp:75
Vec3< Scalar > to_parent(const Vec3< Scalar > &v_wind) const override
Definition VehicleProviders.hpp:66
WindProvider(Scalar alpha, Scalar beta)
Definition VehicleProviders.hpp:45
Vec3< Scalar > from_parent(const Vec3< Scalar > &v_body) const override
Definition VehicleProviders.hpp:71
Definition Aerodynamics.hpp:11