6#include "software/geom/geom_constants.h"
90 explicit constexpr Angle();
187 explicit constexpr Angle(
double rads);
197constexpr Angle operator-(
const Angle &angle) __attribute__((warn_unused_result));
208 __attribute__((warn_unused_result));
220 __attribute__((warn_unused_result));
230constexpr Angle operator*(
const Angle &angle,
double scale)
231 __attribute__((warn_unused_result));
241constexpr Angle operator*(
double scale,
const Angle &angle)
242 __attribute__((warn_unused_result));
252constexpr Angle operator/(
const Angle &angle,
double divisor)
253 __attribute__((warn_unused_result));
263constexpr double operator/(
const Angle &x,
const Angle &y)
264 __attribute__((warn_unused_result));
305Angle &operator/=(
Angle &angle,
double divisor);
316constexpr bool operator<(
const Angle &x,
const Angle &y);
326constexpr bool operator>(
const Angle &x,
const Angle &y);
336constexpr bool operator<=(
const Angle &x,
const Angle &y);
346constexpr bool operator>=(
const Angle &x,
const Angle &y);
356bool operator==(
const Angle &x,
const Angle &y);
366constexpr bool operator!=(
const Angle &x,
const Angle &y);
376inline std::ostream &operator<<(std::ostream &os,
const Angle &a);
385 return Angle(M_PI / 2.0);
395 return Angle(3.0 / 2.0 * M_PI);
400 return Angle(2.0 * M_PI);
410 return Angle(deg / 180.0 * M_PI);
437 return rads / M_PI * 180.0;
457 static_cast<double>(
static_cast<long>(
496 return (*
this - other).
clamp().
abs();
499inline constexpr Angle::Angle(
double rads) : rads(rads) {}
501inline constexpr Angle operator-(
const Angle &angle)
516inline constexpr Angle operator*(
const Angle &angle,
double scale)
521inline constexpr Angle operator*(
double scale,
const Angle &angle)
526inline constexpr Angle operator/(
const Angle &angle,
double divisor)
531inline constexpr double operator/(
const Angle &x,
const Angle &y)
546inline Angle &operator*=(
Angle &angle,
double scale)
548 return angle = angle * scale;
551inline Angle &operator/=(
Angle &angle,
double divisor)
553 return angle = angle / divisor;
556inline constexpr bool operator<(
const Angle &x,
const Angle &y)
561inline constexpr bool operator>(
const Angle &x,
const Angle &y)
566inline constexpr bool operator<=(
const Angle &x,
const Angle &y)
571inline constexpr bool operator>=(
const Angle &x,
const Angle &y)
576inline bool operator==(
const Angle &x,
const Angle &y)
579 return diff.
toRadians() <= FIXED_EPSILON;
582inline constexpr bool operator!=(
const Angle &x,
const Angle &y)
587inline std::ostream &operator<<(std::ostream &os,
const Angle &a)
static constexpr Angle threeQuarter()
Definition angle.h:393
constexpr double toDegrees() const
Definition angle.h:435
static Angle acos(double x)
Definition angle.h:418
constexpr Angle mod(Angle divisor) const
Definition angle.h:440
constexpr Angle abs() const
Definition angle.h:464
constexpr double toRadians() const
Definition angle.h:430
constexpr Angle()
Definition angle.h:428
double tan() const
Definition angle.h:484
constexpr Angle minDiff(const Angle &other) const
Definition angle.h:494
static constexpr Angle fromRadians(double rad)
Definition angle.h:403
static constexpr Angle half()
Definition angle.h:388
double sin() const
Definition angle.h:474
static constexpr Angle fromDegrees(double deg)
Definition angle.h:408
constexpr Angle clamp() const
Definition angle.h:489
static constexpr Angle full()
Definition angle.h:398
double cos() const
Definition angle.h:479
constexpr Angle remainder(const Angle &divisor) const
Definition angle.h:454
static Angle atan(double x)
Definition angle.h:423
static Angle asin(double x)
Definition angle.h:413
static constexpr Angle quarter()
Definition angle.h:383
static constexpr Angle zero()
Definition angle.h:378
bool isFinite() const
Definition angle.h:469