diff --git a/src/include/fl/Utilities.h b/src/include/fl/Utilities.h index 531e40d..7bf01fe 100644 --- a/src/include/fl/Utilities.h +++ b/src/include/fl/Utilities.h @@ -23,13 +23,13 @@ constexpr T Deg2Rad(const T& deg) { return deg * kPi / 180.0; } -template +template ::value, int> = 0> bool EpsilonEquals(const T& a, const T& b) { return std::abs(a - b) < kEpsilon; } -template -bool UnitsEpsilonEquals(const T& a, const T& b) { +template ::value, int> = 0> +bool EpsilonEquals(const T& a, const T& b) { return units::unit_cast(units::math::abs(a - b)) < kEpsilon; } diff --git a/src/include/fl/mathematics/trajectory/TimedTrajectory.h b/src/include/fl/mathematics/trajectory/TimedTrajectory.h index bca7c1e..9720366 100644 --- a/src/include/fl/mathematics/trajectory/TimedTrajectory.h +++ b/src/include/fl/mathematics/trajectory/TimedTrajectory.h @@ -29,7 +29,7 @@ class TimedEntry final : public VaryInterpolatable> { if (delta_t < 0_s) return end_value.Interpolate(*this, 1.0 - t); auto reversing = velocity_ < 0_mps || - UnitsEpsilonEquals(velocity_, 0_mps) && acceleration_ < 0_mps_sq; + EpsilonEquals(velocity_, 0_mps) && acceleration_ < 0_mps_sq; units::meters_per_second_t new_v = velocity_ + acceleration_ * delta_t; units::meter_t new_s = @@ -91,7 +91,7 @@ class TimedTrajectory : public Trajectory> { const auto s = this->Point(i); if (s.state.T() >= interpolant) { const auto prev_s = this->Point(i - 1); - if (UnitsEpsilonEquals(s.state.T(), prev_s.state.T())) { + if (EpsilonEquals(s.state.T(), prev_s.state.T())) { return TrajectorySamplePoint>(s); } return TrajectorySamplePoint>(