Divide Framework 0.1
A free and open-source 3D Framework under heavy development
Loading...
Searching...
No Matches
MathHelper.inl File Reference

Go to the source code of this file.

Namespaces

namespace  Divide
 Handle console commands that start with a forward slash.
 
namespace  Divide::customRNG
 
namespace  Divide::customRNG::detail
 
namespace  Divide::Util
 
namespace  Divide::Angle
 
namespace  Divide::Metric
 
namespace  Divide::Time
 

Macros

#define DVD_CORE_MATH_MATH_HELPER_INL_
 

Functions

template<typename Engine >
Engine & Divide::customRNG::detail::getEngine ()
 
template<typename Engine >
void Divide::customRNG::srand (const U32 seed)
 
template<typename Engine >
void Divide::customRNG::srand ()
 
template<typename T , typename Engine , typename Distribution >
requires std::is_arithmetic_v<T> && std::is_fundamental_v<T>
Divide::customRNG::rand (T min, T max)
 
template<typename T , typename Engine , typename Distribution >
requires std::is_arithmetic_v<T>
Divide::customRNG::rand ()
 
template<typename T , typename Engine = std::mt19937_64, typename Distribution = DefaultDistribution<T>>
requires std::is_arithmetic_v<T>
Divide::Random (T min, T max)
 
template<typename T , typename Engine = std::mt19937_64, typename Distribution = DefaultDistribution<T>>
requires std::is_arithmetic_v<T>
Divide::Random (T max)
 
template<typename T , typename Engine = std::mt19937_64, typename Distribution = DefaultDistribution<T>>
requires std::is_arithmetic_v<T>
Divide::Random ()
 
template<typename Engine = std::mt19937_64>
void Divide::SeedRandom ()
 
template<typename Engine = std::mt19937_64>
void Divide::SeedRandom (U32 seed)
 
template<typename T >
requires std::is_arithmetic<T>
::value constexpr void Divide::CLAMP (T &n, T min, T max) noexcept
 Clamps value n between min and max.
 
template<typename T >
constexpr void Divide::CLAMP_01 (T &n) noexcept
 
template<typename T >
requires std::is_arithmetic<T>
::value constexpr T Divide::CLAMPED (T n, T min, T max) noexcept
 
template<typename T >
requires std::is_arithmetic<T>
::value constexpr T Divide::CLAMPED_01 (T n) noexcept
 
template<typename T >
requires std::is_arithmetic<T>
::value constexpr T Divide::MAP (T input, T in_min, T in_max, T out_min, T out_max, D64 &slopeOut) noexcept
 
template<typename T >
constexpr void Divide::REMAP (T &input, T in_min, T in_max, T out_min, T out_max, D64 &slopeOut) noexcept
 
template<typename T >
requires std::is_arithmetic<T>
::value constexpr T Divide::SQUARED (T input) noexcept
 
template<typename T >
void Divide::CLAMP_IN_RECT (T &inout_x, T &inout_y, T rect_x, T rect_y, T rect_z, T rect_w) noexcept
 
template<typename T >
void Divide::CLAMP_IN_RECT (T &inout_x, T &inout_y, const Rect< T > &rect) noexcept
 
template<typename T >
void Divide::CLAMP_IN_RECT (T &inout_x, T &inout_y, const vec4< T > &rect) noexcept
 
template<typename T >
bool Divide::COORDS_IN_RECT (T input_x, T input_y, T rect_x, T rect_y, T rect_z, T rect_w) noexcept
 
template<typename T >
bool Divide::COORDS_IN_RECT (T input_x, T input_y, const Rect< T > &rect) noexcept
 
template<typename T >
bool Divide::COORDS_IN_RECT (T input_x, T input_y, const vec4< T > &rect) noexcept
 
template<typename T >
requires std::is_integral<T>
::value &&std::is_unsigned< T >::value constexpr T Divide::roundup (T value, unsigned maxb=sizeof(T) *CHAR_BIT, unsigned curb=1)
 
constexpr U32 Divide::nextPOW2 (U32 n) noexcept
 
constexpr U32 Divide::prevPOW2 (U32 n) noexcept
 
constexpr U32 Divide::minSquareMatrixSize (U32 elementCount) noexcept
 
template<typename T , typename U >
Divide::Lerp (T v1, T v2, U t) noexcept
 
template<typename T , typename U >
Divide::FastLerp (T v1, T v2, U t) noexcept
 
template<typename T >
Divide::Sqrt (T input) noexcept
 
template<typename T , typename U >
Divide::Sqrt (U input) noexcept
 
template<>
F32 Divide::Sqrt (const __m128 input) noexcept
 
F32 Divide::FRACT (F32 floatValue) noexcept
 Helper method to emulate GLSL.
 
constexpr I8 Divide::FLOAT_TO_CHAR_SNORM (F32_SNORM value) noexcept
 Returns clamped value * 128.
 
constexpr F32_SNORM Divide::SNORM_CHAR_TO_FLOAT (I8 value) noexcept
 
constexpr U8 Divide::PACKED_FLOAT_TO_CHAR_UNORM (F32_SNORM value) noexcept
 Helper methods to go from an snorm float (-1...1) to packed unorm char (value => (value + 1) * 0.5 => U8)
 
constexpr F32_SNORM Divide::UNORM_CHAR_TO_PACKED_FLOAT (U8 value) noexcept
 
constexpr F32_NORM Divide::UNORM_CHAR_TO_FLOAT (U8 value) noexcept
 Returns value / 255.f.
 
constexpr U8 Divide::FLOAT_TO_CHAR_UNORM (F32_NORM value) noexcept
 Returns round(value * 255)
 
F32 Divide::Util::PACK_VEC3 (F32_SNORM x, F32_SNORM y, F32_SNORM z) noexcept
 
F32 Divide::Util::PACK_VEC3 (U8 x, U8 y, U8 z) noexcept
 
void Divide::Util::UNPACK_VEC3 (F32 src, F32_SNORM &x, F32_SNORM &y, F32_SNORM &z) noexcept
 
template<typename T >
constexpr DEGREES< T > Divide::Angle::to_VerticalFoV (DEGREES< T > horizontalFoV, D64 aspectRatio) noexcept
 
template<typename T >
constexpr DEGREES< T > Divide::Angle::to_HorizontalFoV (DEGREES< T > verticalFoV, D64 aspectRatio) noexcept
 
template<typename T >
constexpr RADIANS< T > Divide::Angle::to_RADIANS (DEGREES< T > angle) noexcept
 
template<>
constexpr RADIANS< F32 > Divide::Angle::to_RADIANS (const DEGREES< F32 > angle) noexcept
 
template<typename T >
constexpr DEGREES< T > Divide::Angle::to_DEGREES (RADIANS< T > angle) noexcept
 
template<>
constexpr DEGREES< F32 > Divide::Angle::to_DEGREES (const RADIANS< F32 > angle) noexcept
 
template<typename T >
constexpr vec2< RADIANS< T > > Divide::Angle::to_RADIANS (vec2< DEGREES< T > > angle) noexcept
 
template<typename T >
constexpr vec2< DEGREES< T > > Divide::Angle::to_DEGREES (vec2< RADIANS< T > > angle) noexcept
 
template<typename T >
constexpr vec3< RADIANS< T > > Divide::Angle::to_RADIANS (const vec3< DEGREES< T > > &angle) noexcept
 
template<typename T >
constexpr vec3< DEGREES< T > > Divide::Angle::to_DEGREES (const vec3< RADIANS< T > > &angle) noexcept
 
template<typename T >
constexpr vec4< RADIANS< T > > Divide::Angle::to_RADIANS (const vec4< DEGREES< T > > &angle) noexcept
 
template<typename T >
constexpr vec4< DEGREES< T > > Divide::Angle::to_DEGREES (const vec4< RADIANS< T > > &angle) noexcept
 
template<typename T >
constexpr T Divide::Angle::DegreesToRadians (T angleDegrees) noexcept
 Return the radian equivalent of the given degree value.
 
template<typename T >
constexpr T Divide::Angle::RadiansToDegrees (T angleRadians) noexcept
 Return the degree equivalent of the given radian value.
 
template<typename T >
constexpr T Divide::Angle::Degrees (T degrees) noexcept
 Returns the specified value. Used only for emphasis.
 
template<typename T >
constexpr T Divide::Angle::Radians (T radians) noexcept
 Returns the specified value. Used only for emphasis.
 
template<typename T >
constexpr T Divide::Metric::Tera (T a)
 Base value * 1000000000000.
 
template<typename T >
constexpr T Divide::Metric::Giga (T a)
 Base value * 1000000000.
 
template<typename T >
constexpr T Divide::Metric::Mega (T a)
 Base value * 1000000.
 
template<typename T >
constexpr T Divide::Metric::Kilo (T a)
 Base value * 1000.
 
template<typename T >
constexpr T Divide::Metric::Hecto (T a)
 Base value * 100.
 
template<typename T >
constexpr T Divide::Metric::Deca (T a)
 Base value * 10.
 
template<typename T >
constexpr T Divide::Metric::Base (T a)
 Base value.
 
template<typename T >
constexpr T Divide::Metric::Deci (T a)
 Base value * 0.1.
 
template<typename T >
constexpr T Divide::Metric::Centi (T a)
 Base value * 0.01.
 
template<typename T >
constexpr T Divide::Metric::Milli (T a)
 Base value * 0.001.
 
template<typename T >
constexpr T Divide::Metric::Micro (T a)
 Base value * 0.000001.
 
template<typename T >
constexpr T Divide::Metric::Nano (T a)
 Base value * 0.000000001.
 
template<typename T >
constexpr T Divide::Metric::Pico (T a)
 Base value * 0.000000000001.
 
template<typename T , typename U >
constexpr T Divide::Metric::Tera (U a)
 Base value * 1000000000000.
 
template<typename T , typename U >
constexpr T Divide::Metric::Giga (U a)
 Base value * 1000000000.
 
template<typename T , typename U >
constexpr T Divide::Metric::Mega (U a)
 Base value * 1000000.
 
template<typename T , typename U >
constexpr T Divide::Metric::Kilo (U a)
 Base value * 1000.
 
template<typename T , typename U >
constexpr T Divide::Metric::Hecto (U a)
 Base value * 100.
 
template<typename T , typename U >
constexpr T Divide::Metric::Deca (U a)
 Base value * 10.
 
template<typename T , typename U >
constexpr T Divide::Metric::Base (U a)
 Base value.
 
template<typename T , typename U >
constexpr T Divide::Metric::Deci (U a)
 Base value * 0.1.
 
template<typename T , typename U >
constexpr T Divide::Metric::Centi (U a)
 Base value * 0.01.
 
template<typename T , typename U >
constexpr T Divide::Metric::Milli (U a)
 Base value * 0.001.
 
template<typename T , typename U >
constexpr T Divide::Metric::Micro (U a)
 Base value * 0.000001.
 
template<typename T , typename U >
constexpr T Divide::Metric::Nano (U a)
 Base value * 0.000000001.
 
template<typename T , typename U >
constexpr T Divide::Metric::Pico (U a)
 Base value * 0.000000000001.
 
template<typename T >
constexpr T Divide::Time::Hours (T a)
 
template<typename T >
constexpr T Divide::Time::Minutes (T a)
 
template<typename T >
constexpr T Divide::Time::Seconds (T a)
 
template<typename T >
constexpr T Divide::Time::Milliseconds (T a)
 
template<typename T >
constexpr T Divide::Time::Microseconds (T a)
 
template<typename T >
constexpr T Divide::Time::Nanoseconds (T a)
 
template<typename T , typename U >
constexpr T Divide::Time::Hours (U a)
 
template<typename T , typename U >
constexpr T Divide::Time::Minutes (U a)
 
template<typename T , typename U >
constexpr T Divide::Time::Seconds (U a)
 
template<typename T , typename U >
constexpr T Divide::Time::Milliseconds (U a)
 
template<typename T , typename U >
constexpr T Divide::Time::Microseconds (U a)
 
template<typename T , typename U >
constexpr T Divide::Time::Nanoseconds (U a)
 
template<typename T = D64, typename U >
constexpr T Divide::Time::NanosecondsToSeconds (U a) noexcept
 
template<typename T = D64, typename U >
constexpr T Divide::Time::NanosecondsToMilliseconds (U a) noexcept
 
template<typename T = U64, typename U >
constexpr T Divide::Time::NanosecondsToMicroseconds (U a) noexcept
 
template<typename T = D64, typename U >
constexpr T Divide::Time::MicrosecondsToSeconds (U a) noexcept
 
template<typename T = U64, typename U >
constexpr T Divide::Time::MicrosecondsToMilliseconds (U a) noexcept
 
template<typename T = U64, typename U >
constexpr T Divide::Time::MicrosecondsToNanoseconds (U a) noexcept
 
template<typename T = D64, typename U >
constexpr T Divide::Time::MillisecondsToSeconds (U a) noexcept
 
template<typename T = U64, typename U >
constexpr T Divide::Time::MillisecondsToMicroseconds (U a) noexcept
 
template<typename T = U64, typename U >
constexpr T Divide::Time::MillisecondsToNanoseconds (U a) noexcept
 
template<typename T = D64, typename U >
constexpr T Divide::Time::SecondsToMilliseconds (U a) noexcept
 
template<typename T = U64, typename U >
constexpr T Divide::Time::SecondsToMicroseconds (U a) noexcept
 
template<typename T = U64, typename U >
constexpr T Divide::Time::SecondsToNanoseconds (U a) noexcept
 
FORCE_INLINE size_t Divide::Util::GetAlignmentCorrected (const size_t value, const size_t alignment) noexcept
 
template<typename T , typename... Rest>
FORCE_INLINE void Divide::Util::Hash_combine (std::size_t &seed, const T &v, const Rest &... rest) noexcept
 a la Boost
 
template<typename T , typename... Rest>
requires std::is_integral<T>
::value &&std::is_unsigned< T >::value FORCE_INLINE void Divide::Util::Hash_combine (size_t &seed, const T &v, const Rest &... rest) noexcept
 a la Boost
 
template<typename TargetType , typename SourceType >
TargetType Divide::Util::ConvertData (const SourceType &data)
 
template<class FwdIt , class Compare = std::less<typename std::iterator_traits<FwdIt>::value_type>>
void Divide::Util::InsertionSort (FwdIt first, FwdIt last, Compare cmp=Compare())
 

Macro Definition Documentation

◆ DVD_CORE_MATH_MATH_HELPER_INL_

#define DVD_CORE_MATH_MATH_HELPER_INL_

Definition at line 33 of file MathHelper.inl.