Go to the documentation of this file.
25 #include "spdlog/fmt/ostr.h"
26 #include "spdlog/spdlog.h"
39 #define AD_PHYSICS_DISTANCE_THROWS_EXCEPTION 1
41 #if SAFE_DATATYPES_EXPLICIT_CONVERSION
45 #define _AD_PHYSICS_DISTANCE_EXPLICIT_CONVERSION_ explicit
50 #define _AD_PHYSICS_DISTANCE_EXPLICIT_CONVERSION_
59 class DistanceSquared;
93 : mDistance(std::numeric_limits<double>::quiet_NaN())
103 : mDistance(iDistance)
174 return (mDistance > other.mDistance) &&
operator!=(other);
190 return (mDistance < other.mDistance) &&
operator!=(other);
206 return ((mDistance > other.mDistance) ||
operator==(other));
222 return ((mDistance < other.mDistance) ||
operator==(other));
239 Distance const result(mDistance + other.mDistance);
258 mDistance += other.mDistance;
277 Distance const result(mDistance - other.mDistance);
296 mDistance -= other.mDistance;
327 Distance const result(mDistance * scalar);
344 Distance const scalarDistance(scalar);
345 Distance const result(
operator/(scalarDistance));
365 double const result = mDistance / other.mDistance;
405 auto const valueClass = std::fpclassify(mDistance);
406 return ((valueClass == FP_NORMAL) || (valueClass == FP_ZERO)) && (
cMinValue <= mDistance)
420 spdlog::info(
"ensureValid(::ad::physics::Distance)>> {} value out of range", *
this);
421 #if (AD_PHYSICS_DISTANCE_THROWS_EXCEPTION == 1)
422 throw std::out_of_range(
"Distance value out of range");
438 spdlog::info(
"ensureValid(::ad::physics::Distance)>> {} value is zero", *
this);
439 #if (AD_PHYSICS_DISTANCE_THROWS_EXCEPTION == 1)
440 throw std::out_of_range(
"Distance value is zero");
491 return value.operator*(other);
502 inline ::ad::physics::Distance
fabs(const ::ad::physics::Distance other)
522 static inline ::ad::physics::Distance
lowest()
524 return ::ad::physics::Distance::getMin();
529 static inline ::ad::physics::Distance
max()
531 return ::ad::physics::Distance::getMax();
537 static inline ::ad::physics::Distance
epsilon()
539 return ::ad::physics::Distance::getPrecision();
548 #ifndef GEN_GUARD_AD_PHYSICS_DISTANCE
549 #define GEN_GUARD_AD_PHYSICS_DISTANCE
570 return os << double(_value);
582 return to_string(
static_cast<double>(value));
585 #endif // GEN_GUARD_AD_PHYSICS_DISTANCE
namespace ad
Definition: Acceleration.hpp:30
DataType Distance.
Definition: Distance.hpp:67
static Distance getPrecision()
get assumed accuracy of Distance (i.e. cPrecisionValue)
Definition: Distance.hpp:464
DataType DistanceSquared.
Definition: DistanceSquared.hpp:67
DistanceSquared operator*(const Distance &other) const
standard arithmetic operator
void ensureValid() const
ensure that the Distance is valid
Definition: Distance.hpp:416
Distance operator-(const Distance &other) const
standard arithmetic operator
Definition: Distance.hpp:273
static Distance getMax()
get maximum valid Distance (i.e. cMaxValue)
Definition: Distance.hpp:456
#define _AD_PHYSICS_DISTANCE_EXPLICIT_CONVERSION_
Enable/Disable explicit conversion. Currently set to "implicit conversion allowed".
Definition: Distance.hpp:50
double operator/(const Distance &other) const
standard arithmetic operator
Definition: Distance.hpp:361
static inline ::ad::physics::Distance max()
Definition: Distance.hpp:529
Distance operator-=(const Distance &other)
standard arithmetic operator
Definition: Distance.hpp:292
inline ::ad::physics::Distance operator*(const double &other, ::ad::physics::Distance const &value)
standard arithmetic operator
Definition: Distance.hpp:489
static const double cPrecisionValue
constant defining the assumed Distance value accuracy (used in comparison operator==(),...
Definition: Distance.hpp:84
Distance operator-() const
standard arithmetic operator
Definition: Distance.hpp:377
bool operator==(const Distance &other) const
standard comparison operator
Definition: Distance.hpp:142
bool operator>(const Distance &other) const
standard comparison operator
Definition: Distance.hpp:170
static const double cMaxValue
constant defining the maximum valid Distance value (used in isValid())
Definition: Distance.hpp:78
bool operator<(const Distance &other) const
standard comparison operator
Definition: Distance.hpp:186
static const double cMinValue
constant defining the minimum valid Distance value (used in isValid())
Definition: Distance.hpp:73
bool isValid() const
Definition: Distance.hpp:403
bool operator<=(const Distance &other) const
standard comparison operator
Definition: Distance.hpp:218
inline ::ad::physics::Weight fabs(const ::ad::physics::Weight other)
overload of the std::fabs for Weight
Definition: Weight.hpp:480
Distance & operator=(const Distance &other)=default
standard assignment operator
static inline ::ad::physics::Distance lowest()
Definition: Distance.hpp:522
Distance operator/(const double &scalar) const
standard arithmetic operator
Definition: Distance.hpp:342
void ensureValidNonZero() const
ensure that the Distance is valid and non zero
Definition: Distance.hpp:433
inline ::ad::physics::Acceleration fabs(const ::ad::physics::Acceleration other)
overload of the std::fabs for Acceleration
Definition: Acceleration.hpp:481
std::string to_string(::ad::physics::Acceleration const &value)
overload of the std::to_string for Acceleration
Definition: Acceleration.hpp:559
Distance operator+(const Distance &other) const
standard arithmetic operator
Definition: Distance.hpp:235
_AD_PHYSICS_DISTANCE_EXPLICIT_CONVERSION_ Distance(double const iDistance)
standard constructor
Definition: Distance.hpp:102
Distance & operator+=(const Distance &other)
standard arithmetic operator
Definition: Distance.hpp:254
std::ostream & operator<<(std::ostream &os, Acceleration const &_value)
standard ostream operator
Definition: Acceleration.hpp:547
static Distance getMin()
get minimum valid Distance (i.e. cMinValue)
Definition: Distance.hpp:448
bool operator>=(const Distance &other) const
standard comparison operator
Definition: Distance.hpp:202
bool operator!=(const Distance &other) const
standard comparison operator
Definition: Distance.hpp:156
static inline ::ad::physics::Distance epsilon()
Definition: Distance.hpp:537
Distance()
default constructor
Definition: Distance.hpp:92
Distance operator*(const double &scalar) const
standard arithmetic operator
Definition: Distance.hpp:324