5#include <janus/math/Arithmetic.hpp>
6#include <janus/math/Logic.hpp>
16template <
typename Scalar>
constexpr Scalar
deg_to_rad(
const Scalar °) {
21template <
typename Scalar>
constexpr Scalar
rad_to_deg(
const Scalar &rad) {
26template <
typename Scalar>
constexpr Scalar
wrap_to_2pi(
const Scalar &angle) {
28 Scalar wrapped = janus::fmod(angle, Scalar(two_pi));
29 return janus::where(wrapped < 0.0, wrapped + two_pi, wrapped);
33template <
typename Scalar>
constexpr Scalar
wrap_to_pi(
const Scalar &angle) {
43template <
typename Scalar>
45 const double three_sixty = 360.0;
46 Scalar wrapped = janus::fmod(angle_deg, Scalar(three_sixty));
48 janus::where(wrapped < 0.0, wrapped + three_sixty, wrapped);
50 return janus::where(wrapped >= 180.0, wrapped - three_sixty, wrapped);
63template <
typename Scalar>
constexpr Scalar
ft_to_m(
const Scalar &ft) {
68template <
typename Scalar>
constexpr Scalar
m_to_ft(
const Scalar &m) {
73template <
typename Scalar>
constexpr Scalar
nm_to_m(
const Scalar &nm) {
78template <
typename Scalar>
constexpr Scalar
m_to_nm(
const Scalar &m) {
83template <
typename Scalar>
constexpr Scalar
km_to_m(
const Scalar &km) {
88template <
typename Scalar>
constexpr Scalar
m_to_km(
const Scalar &m) {
97template <
typename Scalar>
constexpr Scalar
kts_to_mps(
const Scalar &kts) {
98 return kts * 0.514444;
102template <
typename Scalar>
constexpr Scalar
mps_to_kts(
const Scalar &mps) {
103 return mps / 0.514444;
107template <
typename Scalar>
constexpr Scalar
fps_to_mps(
const Scalar &fps) {
112template <
typename Scalar>
constexpr Scalar
mps_to_fps(
const Scalar &mps) {
121template <
typename Scalar>
constexpr Scalar
lbm_to_kg(
const Scalar &lbm) {
122 return lbm * 0.45359237;
126template <
typename Scalar>
constexpr Scalar
kg_to_lbm(
const Scalar &kg) {
127 return kg / 0.45359237;
131template <
typename Scalar>
constexpr Scalar
slug_to_kg(
const Scalar &slug) {
132 return slug * 14.593903;
136template <
typename Scalar>
constexpr Scalar
kg_to_slug(
const Scalar &kg) {
137 return kg / 14.593903;
141template <
typename Scalar>
constexpr Scalar
slug_to_lbm(
const Scalar &slug) {
142 return slug * 32.17405;
146template <
typename Scalar>
constexpr Scalar
lbm_to_slug(
const Scalar &lbm) {
147 return lbm / 32.17405;
151template <
typename Scalar>
constexpr Scalar
lbf_to_N(
const Scalar &lbf) {
152 return lbf * 4.4482216;
156template <
typename Scalar>
constexpr Scalar
N_to_lbf(
const Scalar &N) {
157 return N / 4.4482216;
165template <
typename Scalar>
168 return slugft2 * 1.3558179;
172template <
typename Scalar>
174 return kgm2 / 1.3558179;
178template <
typename Scalar>
181 return lbmft2 * 0.04214011;
186 return kgm2 / 0.04214011;
190template <
typename Scalar>
193 return lbmin2 * 2.9263966e-4;
198 return kgm2 / 2.9263966e-4;
202template <
typename Scalar>
205 return slugin2 * 9.4154069e-3;
209template <
typename Scalar>
211 return kgm2 / 9.4154069e-3;
219template <
typename Scalar>
constexpr Scalar
psi_to_Pa(
const Scalar &psi) {
220 return psi * 6894.76;
224template <
typename Scalar>
constexpr Scalar
Pa_to_psi(
const Scalar &Pa) {
229template <
typename Scalar>
constexpr Scalar
atm_to_Pa(
const Scalar &atm) {
230 return atm * 101325.0;
234template <
typename Scalar>
constexpr Scalar
Pa_to_atm(
const Scalar &Pa) {
235 return Pa / 101325.0;
243template <
typename Scalar>
constexpr Scalar
C_to_K(
const Scalar &C) {
248template <
typename Scalar>
constexpr Scalar
K_to_C(
const Scalar &K) {
253template <
typename Scalar>
constexpr Scalar
F_to_K(
const Scalar &F) {
254 return (F - 32.0) * 5.0 / 9.0 + 273.15;
258template <
typename Scalar>
constexpr Scalar
K_to_F(
const Scalar &K) {
259 return (K - 273.15) * 9.0 / 5.0 + 32.0;
263template <
typename Scalar>
constexpr Scalar
R_to_K(
const Scalar &R) {
264 return R * 5.0 / 9.0;
268template <
typename Scalar>
constexpr Scalar
K_to_R(
const Scalar &K) {
269 return K * 9.0 / 5.0;
constexpr double rad2deg
Radians to degrees conversion factor.
Definition Constants.hpp:159
constexpr double deg2rad
Degrees to radians conversion factor.
Definition Constants.hpp:156
constexpr double pi
Pi.
Definition Constants.hpp:153
constexpr Scalar Pa_to_psi(const Scalar &Pa)
Convert Pascals to psi.
Definition Units.hpp:224
constexpr Scalar wrap_to_180(const Scalar &angle_deg)
Wrap angle to [-180, 180) degrees.
Definition Units.hpp:44
constexpr Scalar Pa_to_atm(const Scalar &Pa)
Convert Pascals to atmospheres.
Definition Units.hpp:234
constexpr Scalar psi_to_Pa(const Scalar &psi)
Convert psi to Pascals.
Definition Units.hpp:219
constexpr Scalar K_to_F(const Scalar &K)
Convert Kelvin to Fahrenheit.
Definition Units.hpp:258
constexpr Scalar deg_to_rad(const Scalar °)
Convert degrees to radians.
Definition Units.hpp:16
constexpr Scalar km_to_m(const Scalar &km)
Convert kilometers to meters.
Definition Units.hpp:83
constexpr Scalar lbm_to_kg(const Scalar &lbm)
Convert pounds-mass (lbm) to kilograms.
Definition Units.hpp:121
constexpr Scalar atm_to_Pa(const Scalar &atm)
Convert atmospheres to Pascals.
Definition Units.hpp:229
constexpr Scalar lbmft2_to_kgm2(const Scalar &lbmft2)
Convert lbm-ft² to kg-m²
Definition Units.hpp:179
constexpr Scalar slug_to_lbm(const Scalar &slug)
Convert slugs to pounds-mass (1 slug ≈ 32.174 lbm).
Definition Units.hpp:141
constexpr Scalar m_to_km(const Scalar &m)
Convert meters to kilometers.
Definition Units.hpp:88
constexpr Scalar m_to_ft(const Scalar &m)
Convert meters to feet.
Definition Units.hpp:68
constexpr Scalar kgm2_to_lbmft2(const Scalar &kgm2)
Convert kg-m² to lbm-ft²
Definition Units.hpp:185
constexpr Scalar mps_to_kts(const Scalar &mps)
Convert meters per second to knots.
Definition Units.hpp:102
constexpr Scalar wrap_to_2pi(const Scalar &angle)
Wrap angle to [0, 2π).
Definition Units.hpp:26
constexpr Scalar slugin2_to_kgm2(const Scalar &slugin2)
Convert slug-in² to kg-m²
Definition Units.hpp:203
constexpr Scalar kgm2_to_lbmin2(const Scalar &kgm2)
Convert kg-m² to lbm-in²
Definition Units.hpp:197
constexpr Scalar fps_to_mps(const Scalar &fps)
Convert feet per second to meters per second.
Definition Units.hpp:107
constexpr Scalar mps_to_fps(const Scalar &mps)
Convert meters per second to feet per second.
Definition Units.hpp:112
constexpr Scalar lbf_to_N(const Scalar &lbf)
Convert pound-force to Newtons.
Definition Units.hpp:151
constexpr Scalar slug_to_kg(const Scalar &slug)
Convert slugs to kilograms (1 slug = 1 lbf·s²/ft ≈ 14.5939 kg).
Definition Units.hpp:131
constexpr Scalar K_to_R(const Scalar &K)
Convert Kelvin to Rankine.
Definition Units.hpp:268
constexpr Scalar kts_to_mps(const Scalar &kts)
Convert knots to meters per second.
Definition Units.hpp:97
constexpr Scalar lbmin2_to_kgm2(const Scalar &lbmin2)
Convert lbm-in² to kg-m²
Definition Units.hpp:191
constexpr Scalar wrap_to_pi(const Scalar &angle)
Wrap angle to [-π, π).
Definition Units.hpp:33
constexpr Scalar slugft2_to_kgm2(const Scalar &slugft2)
Convert slug-ft² to kg-m²
Definition Units.hpp:166
constexpr Scalar rad_to_deg(const Scalar &rad)
Convert radians to degrees.
Definition Units.hpp:21
constexpr Scalar F_to_K(const Scalar &F)
Convert Fahrenheit to Kelvin.
Definition Units.hpp:253
constexpr Scalar R_to_K(const Scalar &R)
Convert Rankine to Kelvin.
Definition Units.hpp:263
constexpr Scalar K_to_C(const Scalar &K)
Convert Kelvin to Celsius.
Definition Units.hpp:248
constexpr Scalar lbm_to_slug(const Scalar &lbm)
Convert pounds-mass to slugs.
Definition Units.hpp:146
constexpr Scalar kg_to_lbm(const Scalar &kg)
Convert kilograms to pounds-mass (lbm).
Definition Units.hpp:126
constexpr Scalar kgm2_to_slugin2(const Scalar &kgm2)
Convert kg-m² to slug-in²
Definition Units.hpp:210
constexpr Scalar N_to_lbf(const Scalar &N)
Convert Newtons to pound-force.
Definition Units.hpp:156
constexpr Scalar ft_to_m(const Scalar &ft)
Convert feet to meters.
Definition Units.hpp:63
constexpr Scalar C_to_K(const Scalar &C)
Convert Celsius to Kelvin.
Definition Units.hpp:243
constexpr Scalar kgm2_to_slugft2(const Scalar &kgm2)
Convert kg-m² to slug-ft²
Definition Units.hpp:173
constexpr Scalar nm_to_m(const Scalar &nm)
Convert nautical miles to meters.
Definition Units.hpp:73
constexpr Scalar kg_to_slug(const Scalar &kg)
Convert kilograms to slugs.
Definition Units.hpp:136
constexpr Scalar m_to_nm(const Scalar &m)
Convert meters to nautical miles.
Definition Units.hpp:78