From f0dddfa495761a353c7349ab666e191ddfb8c1d7 Mon Sep 17 00:00:00 2001 From: Davide Basso <davide.basso@skywarder.eu> Date: Mon, 30 Dec 2024 09:48:11 +0000 Subject: [PATCH] [Units] Use `Constants::g` for acceleration reference --- src/shared/units/Acceleration.h | 13 ++++++++++++- src/tests/catch/test-units.cpp | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/shared/units/Acceleration.h b/src/shared/units/Acceleration.h index aa61a369f..40a607fcb 100644 --- a/src/shared/units/Acceleration.h +++ b/src/shared/units/Acceleration.h @@ -22,6 +22,8 @@ #pragma once +#include <utils/Constants.h> + #include <ratio> #include "Units.h" @@ -43,7 +45,16 @@ ToAcceleration acceleration_cast(FromAcceleration const& from) } using MeterPerSecondSquared = Acceleration<>; // Acceleration in m/s^2 -using G = Acceleration<std::ratio<981, 100>>; // Acceleration in Gs +using G = + Acceleration<std::ratio<static_cast<std::intmax_t>(Constants::g * 1e10), + static_cast<std::intmax_t>(1e10)>>; // Acceleration + // in Gs + +/** + * Assert that we have enough precision to represent the constant value. + */ +static_assert(MeterPerSecondSquared{G{1}}.value() == Constants::g, + "Not enough precision to represent g in m/s^2"); // Floats constexpr auto operator""_mps2(long double n) diff --git a/src/tests/catch/test-units.cpp b/src/tests/catch/test-units.cpp index 456aacb4a..1e872eb95 100644 --- a/src/tests/catch/test-units.cpp +++ b/src/tests/catch/test-units.cpp @@ -73,7 +73,7 @@ TEST_CASE("Units Test") REQUIRE(MeterPerSecond(1) == speed_cast<MeterPerSecond>(KilometerPerHour(3.6))); - REQUIRE(MeterPerSecondSquared(9.81) == + REQUIRE(MeterPerSecondSquared(Constants::g) == acceleration_cast<MeterPerSecondSquared>(G(1))); // Test operators -- GitLab