15#include <vsg/core/ConstVisitor.h>
16#include <vsg/core/visit.h>
17#include <vsg/maths/mat3.h>
18#include <vsg/maths/mat4.h>
19#include <vsg/maths/quat.h>
20#include <vsg/maths/vec3.h>
27 constexpr float PIf = numbers<float>::PI();
28 constexpr double PI = numbers<double>::PI();
31 constexpr float radians(
float degrees)
noexcept {
return degrees * numbers<float>::degrees_to_radians(); }
32 constexpr double radians(
double degrees)
noexcept {
return degrees * numbers<double>::degrees_to_radians(); }
35 constexpr float degrees(
float radians)
noexcept {
return radians * numbers<float>::radians_to_degrees(); }
36 constexpr double degrees(
double radians)
noexcept {
return radians * numbers<double>::radians_to_degrees(); }
39 constexpr float square(
float v)
noexcept {
return v * v; };
40 constexpr double square(
double v)
noexcept {
return v * v; };
44 T smoothstep(T edge0, T edge1, T x)
50 T r = (x - edge0) / (edge1 - edge0);
51 return edge0 + (r * r * (numbers<T>::three() - numbers<T>::two() * r)) * (edge1 - edge0);
58 if (r <= numbers<T>::zero())
59 return numbers<T>::zero();
60 else if (r >= numbers<T>::one())
61 return numbers<T>::one();
62 return r * r * (numbers<T>::three() - numbers<T>::two() * r);
67 T mix(T start, T end, T r)
69 T one_minus_r = numbers<T>::one() - r;
70 return start * one_minus_r + end * r;
74 extern VSG_DECLSPEC uint32_t native_long_double_bits();