81 return a.
x == b.
x && a.
y == b.
y;
93 return a.
x == b.
x && a.
y == b.
y && a.
z == b.
z;
105 return a.
x == b.
x && a.
y == b.
y && a.
z == b.
z && a.
w == b.
w;
117 for (
int i = 0; i < 4; i++) {
132 for (
int i = 0; i < 9; i++) {
147 for (
int i = 0; i < 16; i++) {
162 for (
int i = 0; i < 4; i++) {
163 if (a.
v[i] != b.
v[i])
return false;
177 for (
int i = 0; i < 9; i++) {
178 if (a.
v[i] != b.
v[i])
return false;
192 for (
int i = 0; i < 16; i++) {
193 if (a.
v[i] != b.
v[i])
return false;
222 return (
vector2){ .x = x, .y = y };
282 return (
vector2i){ .x = x, .y = y };
365 return (
vector3){ .x = x, .y = y, .z = z };
434 return (
vector3i){ .x = x, .y = y, .z = z };
vm_float_t v[VECMAT_MAT2_SIZE]
vm_int_t v[VECMAT_MAT2_SIZE]
vm_float_t v[VECMAT_MAT3_SIZE]
vm_int_t v[VECMAT_MAT3_SIZE]
vm_float_t v[VECMAT_MAT4_SIZE]
vm_int_t v[VECMAT_MAT4_SIZE]
vector2i vec2i(const vm_int_t x, const vm_int_t y)
Constructs a vector2i from x and y.
bool mat2_eq(const matrix2 a, const matrix2 b)
Returns true if two matrices are equal within VECMAT_EPSILON.
void vec2i_assign(vector2i *dest, const vector2i *src)
Copies src into dest.
void vec2_assign_xy(vector2 *dest, const vm_float_t x, const vm_float_t y)
Assigns x and y to dest.
bool mat2i_eq(const matrix2i a, const matrix2i b)
Returns true if two matrices are exactly equal.
void vec3i_assign_xyz(vector3i *dest, const vm_int_t x, const vm_int_t y, const vm_int_t z)
Assigns x, y, and z to dest.
void vec2i_add_assign(vector2i *dest, const vector2i *src)
Adds src to dest in place.
bool vec3_eq(const vector3 a, const vector3 b)
Returns true if two vectors are equal within VECMAT_EPSILON.
vector3i vec3i_from(const vector3 *v)
Converts a vector3 to a vector3i by truncation.
bool vec4_eq(const vector4 a, const vector4 b)
Returns true if two vectors are equal within VECMAT_EPSILON.
vector3 vec3_from(const vector3i *v)
Converts a vector3i to a vector3.
bool vec3i_eq(const vector3i a, const vector3i b)
Returns true if two vectors are exactly equal.
vector2i vec2i_from_floored(const vector2 *v)
Converts a vector2 to a vector2i by flooring each component.
void vec3_assign_xyz(vector3 *dest, const vm_float_t x, const vm_float_t y, const vm_float_t z)
Assigns x, y, and z to dest.
vector2 vec2(const vm_float_t x, const vm_float_t y)
Constructs a vector2 from x and y.
bool mat4i_eq(const matrix4i a, const matrix4i b)
Returns true if two matrices are exactly equal.
void vec2_assign(vector2 *dest, const vector2 *src)
Copies src into dest.
void vec3_add_assign(vector3 *dest, const vector3 *src)
Adds src to dest in place.
vector2 vec2_from(const vector2i *v)
Converts a vector2i to a vector2.
vector3 vec3(const vm_float_t x, const vm_float_t y, const vm_float_t z)
Constructs a vector3 from x, y, and z.
bool vec2i_eq(const vector2i a, const vector2i b)
Returns true if two vectors are exactly equal.
bool mat4_eq(const matrix4 a, const matrix4 b)
Returns true if two matrices are equal within VECMAT_EPSILON.
void vec3i_assign(vector3i *dest, const vector3i *src)
Copies src into dest.
vector3i vec3i_from_floored(const vector3 *v)
Converts a vector3 to a vector3i by flooring each component.
void vec3i_add_assign(vector3i *dest, const vector3i *src)
Adds src to dest in place.
vector3i vec3i(const vm_int_t x, const vm_int_t y, const vm_int_t z)
Constructs a vector3i from x, y, and z.
bool quat_eq(const quaternion a, const quaternion b)
Returns true if two quaternions are equal within VECMAT_EPSILON.
bool mat3i_eq(const matrix3i a, const matrix3i b)
Returns true if two matrices are exactly equal.
bool vec4i_eq(const vector4i a, const vector4i b)
Returns true if two vectors are exactly equal.
void vec2_add_assign(vector2 *dest, const vector2 *src)
Adds src to dest in place.
vector2i vec2i_from_rounded(const vector2 *v)
Converts a vector2 to a vector2i by rounding each component.
vector3i vec3i_from_rounded(const vector3 *v)
Converts a vector3 to a vector3i by rounding each component.
vector2i vec2i_from(const vector2 *v)
Converts a vector2 to a vector2i by truncation.
void vec3_assign(vector3 *dest, const vector3 *src)
Copies src into dest.
bool mat3_eq(const matrix3 a, const matrix3 b)
Returns true if two matrices are equal within VECMAT_EPSILON.
void vec2i_assign_xy(vector2i *dest, const vm_int_t x, const vm_int_t y)
Assigns x and y to dest.
vm_float_t rad_to_deg(const vm_float_t radians)
Converts radians to degrees.
bool vec2_eq(const vector2 a, const vector2 b)
Returns true if two vectors are equal within VECMAT_EPSILON.
vm_float_t deg_to_rad(const vm_float_t degrees)
Converts degrees to radians.
static const vm_float_t VM_DEG_TO_RAD
static const vm_float_t VM_RAD_TO_DEG