libdonut  2.3.2
Application framework for cross-platform game development in C++20
math.hpp
Go to the documentation of this file.
1 #ifndef DONUT_MATH_HPP
2 #define DONUT_MATH_HPP
3 
4 #include <glm/ext/matrix_clip_space.hpp> // glm::ortho, glm::perspective
5 #include <glm/ext/matrix_transform.hpp> // glm::identity, glm::translate, glm::rotate, glm::scale, glm::lookAt
6 #include <glm/glm.hpp> // glm::...
7 #include <glm/gtc/matrix_inverse.hpp> // glm::inverseTranspose
8 #include <glm/gtc/quaternion.hpp> // glm::qua, glm::quat, glm::quat_cast, glm::lerp, glm::slerp
9 #include <glm/gtc/type_ptr.hpp> // glm::value_ptr
10 #include <glm/gtx/euler_angles.hpp> // glm::orientate2, glm::orientate3, glm::orientate4
11 #include <glm/gtx/matrix_interpolation.hpp> // glm::interpolate
12 #include <glm/gtx/norm.hpp> // glm::length2, glm::distance2
13 #include <glm/gtx/transform.hpp> // glm::translate, glm::rotate, glm::scale
14 #include <numbers> // std::numbers::...
15 
16 namespace donut {
17 
18 namespace numbers {
19 
20 using std::numbers::e_v;
21 using std::numbers::egamma_v;
22 using std::numbers::inv_pi_v;
23 using std::numbers::inv_sqrt3_v;
24 using std::numbers::inv_sqrtpi_v;
25 using std::numbers::ln10_v;
26 using std::numbers::ln2_v;
27 using std::numbers::log10e_v;
28 using std::numbers::log2e_v;
29 using std::numbers::phi_v;
30 using std::numbers::pi_v;
31 using std::numbers::sqrt2_v;
32 using std::numbers::sqrt3_v;
33 
34 inline constexpr float e = e_v<float>;
35 inline constexpr float log2e = log2e_v<float>;
36 inline constexpr float log10e = log10e_v<float>;
37 inline constexpr float pi = pi_v<float>;
38 inline constexpr float inv_pi = inv_pi_v<float>;
39 inline constexpr float inv_sqrtpi = inv_sqrtpi_v<float>;
40 inline constexpr float ln2 = ln2_v<float>;
41 inline constexpr float ln10 = ln10_v<float>;
42 inline constexpr float sqrt2 = sqrt2_v<float>;
43 inline constexpr float sqrt3 = sqrt3_v<float>;
44 inline constexpr float inv_sqrt3 = inv_sqrt3_v<float>;
45 inline constexpr float egamma = egamma_v<float>;
46 inline constexpr float phi = phi_v<float>;
47 
48 } // namespace numbers
49 
50 using glm::abs;
51 using glm::acos;
52 using glm::asin;
53 using glm::atan;
54 using glm::atan2;
55 using glm::ceil;
56 using glm::clamp;
57 using glm::cos;
58 using glm::cross;
59 using glm::degrees;
60 using glm::distance2;
61 using glm::dmat2;
62 using glm::dmat3;
63 using glm::dmat4;
64 using glm::dot;
65 using glm::dvec2;
66 using glm::dvec3;
67 using glm::dvec4;
68 using glm::exp;
69 using glm::exp2;
70 using glm::floor;
71 using glm::fract;
72 using glm::i16;
73 using glm::i16vec2;
74 using glm::i16vec3;
75 using glm::i16vec4;
76 using glm::i32;
77 using glm::i32vec2;
78 using glm::i32vec3;
79 using glm::i32vec4;
80 using glm::i64;
81 using glm::i64vec2;
82 using glm::i64vec3;
83 using glm::i64vec4;
84 using glm::i8;
85 using glm::i8vec2;
86 using glm::i8vec3;
87 using glm::i8vec4;
88 using glm::identity;
89 using glm::interpolate;
90 using glm::inverse;
91 using glm::inverseTranspose;
92 using glm::ivec2;
93 using glm::ivec3;
94 using glm::ivec4;
95 using glm::length;
96 using glm::length2;
97 using glm::length_t;
98 using glm::lerp;
99 using glm::lookAt;
100 using glm::mat;
101 using glm::mat2;
102 using glm::mat3;
103 using glm::mat3_cast;
104 using glm::mat4;
105 using glm::mat4_cast;
106 using glm::max;
107 using glm::min;
108 using glm::mix;
109 using glm::normalize;
110 using glm::orientate2;
111 using glm::orientate3;
112 using glm::orientate4;
113 using glm::ortho;
114 using glm::perspective;
115 using glm::pow;
116 using glm::qua;
117 using glm::quat;
118 using glm::quat_cast;
119 using glm::radians;
120 using glm::rotate;
121 using glm::round;
122 using glm::scale;
123 using glm::sin;
124 using glm::slerp;
125 using glm::sqrt;
126 using glm::tan;
127 using glm::translate;
128 using glm::transpose;
129 using glm::u16;
130 using glm::u16vec2;
131 using glm::u16vec3;
132 using glm::u16vec4;
133 using glm::u32;
134 using glm::u32vec2;
135 using glm::u32vec3;
136 using glm::u32vec4;
137 using glm::u64;
138 using glm::u64vec2;
139 using glm::u64vec3;
140 using glm::u64vec4;
141 using glm::u8;
142 using glm::u8vec2;
143 using glm::u8vec3;
144 using glm::u8vec4;
145 using glm::uvec2;
146 using glm::uvec3;
147 using glm::uvec4;
148 using glm::value_ptr;
149 using glm::vec;
150 using glm::vec2;
151 using glm::vec3;
152 using glm::vec4;
153 
154 } // namespace donut
155 
156 #endif
Definition: math.hpp:18
constexpr float ln2
Definition: math.hpp:40
constexpr float phi
Definition: math.hpp:46
constexpr float inv_sqrt3
Definition: math.hpp:44
constexpr float sqrt3
Definition: math.hpp:43
constexpr float ln10
Definition: math.hpp:41
constexpr float inv_pi
Definition: math.hpp:38
constexpr float log2e
Definition: math.hpp:35
constexpr float pi
Definition: math.hpp:37
constexpr float egamma
Definition: math.hpp:45
constexpr float log10e
Definition: math.hpp:36
constexpr float e
Definition: math.hpp:34
constexpr float inv_sqrtpi
Definition: math.hpp:39
constexpr float sqrt2
Definition: math.hpp:42
Definition: Application.hpp:9