26template <
typename T>
struct Vec2;
29struct [[deprecated(
"Replaced by glm::vec2")]]
Vec2<float> :
public glm::vec2
31 using glm::vec2::vec2;
37struct [[deprecated(
"Replaced by glm::ivec2")]]
Vec2<int> :
public glm::ivec2
39 using glm::ivec2::ivec2;
44template <
typename T>
struct Vec3;
47struct [[deprecated(
"Replaced by glm::vec3")]]
Vec3<float> :
public glm::vec3
49 using glm::vec3::vec3;
56struct [[deprecated(
"Replaced by glm::ivec3")]]
Vec3<int> :
public glm::ivec3
58 using glm::ivec3::ivec3;
64template <
typename T>
struct Vec4;
67struct [[deprecated(
"Replaced by glm::vec4")]]
Vec4<float> :
public glm::vec4
69 using glm::vec4::vec4;
83 const float &a_const = x;
84 const float &b_const = y;
85 const float &c_const = z;
86 const float &d_const = w;
90struct [[deprecated(
"Replaced by glm::ivec4")]]
Vec4<int> :
public glm::ivec4
92 using glm::ivec4::ivec4;
106 const int &a_const = x;
107 const int &b_const = y;
108 const int &c_const = z;
109 const int &d_const = w;
120 h ^= std::hash<int>{}(v.x) + 0x9e3779b9 + (h << 6) + (h >> 2);
121 h ^= std::hash<int>{}(v.y) + 0x9e3779b9 + (h << 6) + (h >> 2);
122 h ^= std::hash<int>{}(v.z) + 0x9e3779b9 + (h << 6) + (h >> 2);
123 h ^= std::hash<int>{}(v.w) + 0x9e3779b9 + (h << 6) + (h >> 2);
130 bool operator()(
const glm::ivec4 &a,
const glm::ivec4 &b)
const noexcept
136inline glm::vec4
adjust(
const glm::vec4 &v,
142 return glm::vec4{v.x + dx, v.y + dy, v.z + dz, v.w + dw};
154template <
typename T>
struct Mat
190 std::fill(this->vector.begin(), this->vector.end(), value);
205 return this->vector[j * this->shape.x + i];
221 return this->vector[j * this->shape.x + i];
226 return this->vector[ij.y * this->shape.x + ij.x];
231 return this->vector[ij.y * this->shape.x + ij.x];
Definition algebra.hpp:22
glm::vec4 adjust(const glm::vec4 &v, float dx, float dy, float dz, float dw)
Definition algebra.hpp:136
Definition algebra.hpp:129
bool operator()(const glm::ivec4 &a, const glm::ivec4 &b) const noexcept
Definition algebra.hpp:130
Definition algebra.hpp:116
std::size_t operator()(const glm::ivec4 &v) const noexcept
Definition algebra.hpp:117
Mat class for basic manipulation of 2D matrices.
Definition algebra.hpp:155
glm::ivec2 shape
Dimensions of the matrix (rows x columns).
Definition algebra.hpp:158
T & operator()(int i, int j)
Access operator to get a reference to the element at (i, j).
Definition algebra.hpp:203
std::vector< T > vector
1D vector storing matrix elements in row-major order.
Definition algebra.hpp:156
const T & operator()(int i, int j) const
Const access operator to get the value of the element at (i, j).
Definition algebra.hpp:219
T & operator()(glm::ivec2 ij)
Definition algebra.hpp:224
Mat(glm::ivec2 shape)
Constructor to initialize a matrix with a given shape.
Definition algebra.hpp:171
const T & operator()(glm::ivec2 ij) const
Definition algebra.hpp:229
Mat(glm::ivec2 shape, T value)
Constructor to initialize a matrix with a given shape and value.
Definition algebra.hpp:187
Definition algebra.hpp:26
Definition algebra.hpp:44
Definition algebra.hpp:64