7#include <janus/janus.hpp>
24template <
typename Scalar>
34template <
typename Scalar> Scalar
speed(
const Vec3<Scalar> &velocity) {
35 return janus::norm(velocity);
42template <
typename Scalar>
44 Scalar v_mag = janus::norm(velocity);
45 return velocity / (v_mag + Scalar(1e-12));
67template <
typename Scalar>
69 const Vec3<Scalar> &velocity,
70 const Vec3<Scalar> &force,
72 const Vec3<Scalar> &omega_earth) {
74 Vec3<Scalar> a_force = force /
mass;
77 Vec3<Scalar> coriolis = Scalar(-2) * janus::cross(omega_earth, velocity);
80 Vec3<Scalar> centrifugal =
81 -janus::cross(omega_earth, janus::cross(omega_earth, position));
83 return a_force + coriolis + centrifugal;
94template <
typename Scalar>
104template <
typename Scalar>
105Vec3<Scalar>
g_load(
const Vec3<Scalar> &acceleration,
106 const Scalar &g0 = Scalar(9.80665)) {
107 return acceleration / g0;
115template <
typename Scalar>
117 const Scalar &g0 = Scalar(9.80665)) {
118 return janus::norm(acceleration) / g0;
134template <
typename Scalar>
136 Scalar v_mag = janus::norm(velocity);
138 return janus::asin(-velocity(2) / (v_mag + Scalar(1e-12)));
150template <
typename Scalar> Scalar
heading_angle(
const Vec3<Scalar> &velocity) {
151 return janus::atan2(velocity(1), velocity(0));
160template <
typename Scalar>
163 Scalar cos_gamma = janus::cos(gamma);
164 Scalar sin_gamma = janus::sin(gamma);
165 Scalar cos_chi = janus::cos(chi);
166 Scalar sin_chi = janus::sin(chi);
169 speed * cos_gamma * cos_chi,
170 speed * cos_gamma * sin_chi,
183template <
typename Scalar>
185 return Scalar(0.5) * janus::dot(velocity, velocity);
193template <
typename Scalar>
196 return -mu / janus::norm(position);
205template <
typename Scalar>
207 const Vec3<Scalar> &velocity,
const Scalar &mu) {
Definition Guided5Dof.hpp:13
Scalar speed(const Vec3< Scalar > &velocity)
Definition PointMass.hpp:34
Vec3< Scalar > point_mass_acceleration(const Vec3< Scalar > &force, const Scalar &mass)
Definition PointMass.hpp:25
Vec3< Scalar > g_load(const Vec3< Scalar > &acceleration, const Scalar &g0=Scalar(9.80665))
Definition PointMass.hpp:105
Vec3< Scalar > point_mass_acceleration_ecef(const Vec3< Scalar > &position, const Vec3< Scalar > &velocity, const Vec3< Scalar > &force, const Scalar &mass, const Vec3< Scalar > &omega_earth)
Definition PointMass.hpp:68
Vec3< Scalar > specific_force(const Vec3< Scalar > &acceleration)
Definition PointMass.hpp:95
Scalar specific_potential_energy(const Vec3< Scalar > &position, const Scalar &mu)
Definition PointMass.hpp:194
Vec3< Scalar > velocity_direction(const Vec3< Scalar > &velocity)
Definition PointMass.hpp:43
Scalar g_load_magnitude(const Vec3< Scalar > &acceleration, const Scalar &g0=Scalar(9.80665))
Definition PointMass.hpp:116
Vec3< Scalar > velocity_from_angles(const Scalar &speed, const Scalar &gamma, const Scalar &chi)
Definition PointMass.hpp:161
Scalar specific_kinetic_energy(const Vec3< Scalar > &velocity)
Definition PointMass.hpp:184
Scalar flight_path_angle(const Vec3< Scalar > &velocity)
Definition PointMass.hpp:135
Scalar heading_angle(const Vec3< Scalar > &velocity)
Definition PointMass.hpp:150
Scalar specific_energy(const Vec3< Scalar > &position, const Vec3< Scalar > &velocity, const Scalar &mu)
Definition PointMass.hpp:206
Definition MassProperties.hpp:12