opynsim
Unofficial C++ Documentation
Loading...
Searching...
No Matches
Classes | Namespaces | Concepts | Typedefs | Functions
angle.h File Reference
#include <liboscar/maths/scalar.h>
#include <algorithm>
#include <cmath>
#include <compare>
#include <concepts>
#include <numbers>
#include <ostream>
#include <string_view>
#include <type_traits>
Include dependency graph for angle.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  osc::Angle< Rep, Units >
 
struct  osc::IsScalar< Angle< Rep, Units > >
 
struct  std::common_type< osc::Angle< Rep1, Units1 >, osc::Angle< Rep2, Units2 > >
 
struct  osc::RadianAngularUnitTraits
 
struct  osc::DegreesAngularUnitTraits
 
struct  osc::TurnsAngularUnitTraits
 

Namespaces

namespace  osc
 
namespace  osc::literals
 

Concepts

concept  osc::AngularUnitTraits
 

Typedefs

template<typename T >
using osc::RadiansT = Angle< T, RadianAngularUnitTraits >
 
using osc::Radians = RadiansT< float >
 
using osc::Radiansd = RadiansT< double >
 
template<typename T >
using osc::DegreesT = Angle< T, DegreesAngularUnitTraits >
 
using osc::Degrees = DegreesT< float >
 
using osc::Degreesd = DegreesT< double >
 
template<typename T >
using osc::TurnsT = Angle< T, TurnsAngularUnitTraits >
 
using osc::Turns = TurnsT< float >
 
using osc::Turnsd = TurnsT< double >
 

Functions

template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2>
constexpr std::common_type_t< Angle< Rep1, Units1 >, Angle< Rep2, Units2 > > osc::operator+ (const Angle< Rep1, Units1 > &lhs, const Angle< Rep2, Units2 > &rhs)
 
template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2>
constexpr std::common_type_t< Angle< Rep1, Units1 >, Angle< Rep2, Units2 > > osc::operator- (const Angle< Rep1, Units1 > &lhs, const Angle< Rep2, Units2 > &rhs)
 
template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2>
constexpr bool osc::operator== (const Angle< Rep1, Units1 > &lhs, const Angle< Rep2, Units2 > &rhs)
 
template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2>
constexpr auto osc::operator<=> (const Angle< Rep1, Units1 > &lhs, const Angle< Rep2, Units2 > &rhs)
 
template<std::floating_point Rep, AngularUnitTraits Units>
std::ostream & osc::operator<< (std::ostream &o, const Angle< Rep, Units > &angle)
 
constexpr Radians osc::literals::operator""_rad (long double radians)
 
constexpr Radians osc::literals::operator""_rad (unsigned long long int radians)
 
constexpr Degrees osc::literals::operator""_deg (long double degrees)
 
constexpr Degrees osc::literals::operator""_deg (unsigned long long int degrees)
 
constexpr Turns osc::literals::operator""_turn (long double turns)
 
constexpr Turns osc::literals::operator""_turn (unsigned long long int turns)
 
template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2>
auto osc::mod (Angle< Rep1, Units1 > x, Angle< Rep2, Units2 > y) -> std::common_type_t< decltype(x), decltype(y)>
 
template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2>
requires (not std::is_same_v<Units1, Units2>)
constexpr auto osc::min (Angle< Rep1, Units1 > x, Angle< Rep2, Units2 > y) -> std::common_type_t< decltype(x), decltype(y)>
 
template<std::floating_point Rep1, AngularUnitTraits Units1, std::floating_point Rep2, AngularUnitTraits Units2>
requires (not std::is_same_v<Units1, Units2>)
constexpr auto osc::max (Angle< Rep1, Units1 > x, Angle< Rep2, Units2 > y) -> std::common_type_t< decltype(x), decltype(y)>
 
template<std::floating_point Rep, AngularUnitTraits Units, std::convertible_to< Angle< Rep, Units > > AngleMin, std::convertible_to< Angle< Rep, Units > > AngleMax>
requires ( not std::is_same_v<Angle<Rep, Units>, AngleMin> or not std::is_same_v<Angle<Rep, Units>, AngleMax> or not std::is_same_v<AngleMin, AngleMax> )
constexpr Angle< Rep, Unitsosc::clamp (const Angle< Rep, Units > &v, const AngleMin &min, const AngleMax &max)