RIT VEXU Core API
Loading...
Searching...
No Matches
units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles > Class Template Reference

#include <units.h>

Public Member Functions

constexpr Quantity ()
constexpr Quantity (double value)
constexpr Quantity (double value)
constexpr Quantity (double value, Self unit)
constexpr operator double () const
constexpr Quantity (const Self &other)=default
constexpr double internal () const
constexpr double to (Self unit) const
constexpr Self & operator+= (Self other)
constexpr Self & operator+= (double other)
constexpr Self & operator-= (Self other)
constexpr Self & operator-= (double other)
constexpr Self & operator*= (double scalar)
constexpr Self & operator/= (double divisor)
constexpr Self & operator= (const double &rhs)

Detailed Description

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
class units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >

This class provides a physical unit conversion and dimensional analysis API. Quantities define a unit given the SI base dimensions. The dimensions are the exponents of each base, Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles. E.g. Velocity is length^1 * time^-1, length/time... Arithmetic and math functions can be used on Quantities like normal. Mass * Mass = Area.

Constructor & Destructor Documentation

◆ Quantity() [1/5]

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::Quantity ( )
inlineexplicitconstexpr

Default to value of 0.

◆ Quantity() [2/5]

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::Quantity ( double value)
inlineexplicitconstexpr

Construct a new Quantity object using the SI base unit

Parameters
valueto initialize with

◆ Quantity() [3/5]

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::Quantity ( double value)
inlineconstexpr

Construct a new Quantity object

Parameters
valueto initialize with

◆ Quantity() [4/5]

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::Quantity ( double value,
Self unit )
inlineconstexpr

Construct a quantity from a numeric value expressed in a specific unit.

Parameters
valuenumeric value in the provided unit
unitunit in which value is expressed

◆ Quantity() [5/5]

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::Quantity ( const Self & other)
constexprdefault

Constructor copying from a quantity with the same dimensions

Parameters
otherthe quantity to copy

Member Function Documentation

◆ internal()

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
double units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::internal ( ) const
inlineconstexpr

Gets the internal raw value

Returns
constexpr internal value

◆ operator double()

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::operator double ( ) const
inlineconstexpr

Double cast overload, gets internal value.

Returns
internal value

◆ operator*=()

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
Self & units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::operator*= ( double scalar)
inlineconstexpr

Multiplies this quantity by a scalar

◆ operator+=() [1/2]

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
Self & units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::operator+= ( double other)
inlineconstexpr

Adds a double to this internal value Only allowed if this quantity is dimensionless

◆ operator+=() [2/2]

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
Self & units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::operator+= ( Self other)
inlineconstexpr

Adds another quantity's value to this.

◆ operator-=() [1/2]

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
Self & units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::operator-= ( double other)
inlineconstexpr

Subtracts a double from this internal value Only allowed if this quantity is dimensionless

◆ operator-=() [2/2]

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
Self & units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::operator-= ( Self other)
inlineconstexpr

Subtracts another quantity's value from this.

◆ operator/=()

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
Self & units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::operator/= ( double divisor)
inlineconstexpr

Divides this quantity by a scalar

◆ operator=()

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
Self & units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::operator= ( const double & rhs)
inlineconstexpr

Sets this quantity's value to another value Only allowed if the quantity is dimensionless

◆ to()

template<typename Mass = std::ratio<0>, typename Length = std::ratio<0>, typename Time = std::ratio<0>, typename Current = std::ratio<0>, typename Angle = std::ratio<0>, typename Temperature = std::ratio<0>, typename Luminosity = std::ratio<0>, typename Moles = std::ratio<0>>
double units::Quantity< Mass, Length, Time, Current, Angle, Temperature, Luminosity, Moles >::to ( Self unit) const
inlineconstexpr

Gets this quantity's numeric value expressed in a specific unit. e.g. double v_mps = v.to(mps);


The documentation for this class was generated from the following file: