src/vecmat.c file

Functions

auto deg_to_rad(const vm_float_t degrees) -> vm_float_t
Converts degrees to radians.
auto rad_to_deg(const vm_float_t radians) -> vm_float_t
Converts radians to degrees.
auto vec2_eq(const vector2 a, const vector2 b) -> bool
Returns true if two vectors are equal within VECMAT_EPSILON.
auto vec3_eq(const vector3 a, const vector3 b) -> bool
Returns true if two vectors are equal within VECMAT_EPSILON.
auto vec4_eq(const vector4 a, const vector4 b) -> bool
Returns true if two vectors are equal within VECMAT_EPSILON.
auto vec2i_eq(const vector2i a, const vector2i b) -> bool
Returns true if two vectors are exactly equal.
auto vec3i_eq(const vector3i a, const vector3i b) -> bool
Returns true if two vectors are exactly equal.
auto vec4i_eq(const vector4i a, const vector4i b) -> bool
Returns true if two vectors are exactly equal.
auto mat2_eq(const matrix2 a, const matrix2 b) -> bool
Returns true if two matrices are equal within VECMAT_EPSILON.
auto mat3_eq(const matrix3 a, const matrix3 b) -> bool
Returns true if two matrices are equal within VECMAT_EPSILON.
auto mat4_eq(const matrix4 a, const matrix4 b) -> bool
Returns true if two matrices are equal within VECMAT_EPSILON.
auto mat2i_eq(const matrix2i a, const matrix2i b) -> bool
Returns true if two matrices are exactly equal.
auto mat3i_eq(const matrix3i a, const matrix3i b) -> bool
Returns true if two matrices are exactly equal.
auto mat4i_eq(const matrix4i a, const matrix4i b) -> bool
Returns true if two matrices are exactly equal.
auto quat_eq(const quaternion a, const quaternion b) -> bool
Returns true if two quaternions are equal within VECMAT_EPSILON.
auto vec2(const vm_float_t x, const vm_float_t y) -> vector2
Constructs a vector2 from x and y.
void vec2_assign(vector2* dest, const vector2* 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.
void vec2_add_assign(vector2* dest, const vector2* src)
Adds src to dest in place.
auto vec2_from(const vector2i* v) -> vector2
Converts a vector2i to a vector2.
auto vec2i(const vm_int_t x, const vm_int_t y) -> vector2i
Constructs a vector2i from x and y.
void vec2i_assign(vector2i* dest, const vector2i* src)
Copies src into dest.
void vec2i_assign_xy(vector2i* dest, const vm_int_t x, const vm_int_t y)
Assigns x and y to dest.
void vec2i_add_assign(vector2i* dest, const vector2i* src)
Adds src to dest in place.
auto vec2i_from(const vector2* v) -> vector2i
Converts a vector2 to a vector2i by truncation.
auto vec2i_from_floored(const vector2* v) -> vector2i
Converts a vector2 to a vector2i by flooring each component.
auto vec2i_from_rounded(const vector2* v) -> vector2i
Converts a vector2 to a vector2i by rounding each component.
auto vec3(const vm_float_t x, const vm_float_t y, const vm_float_t z) -> vector3
Constructs a vector3 from x, y, and z.
void vec3_assign(vector3* dest, const vector3* src)
Copies src into dest.
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.
void vec3_add_assign(vector3* dest, const vector3* src)
Adds src to dest in place.
auto vec3_from(const vector3i* v) -> vector3
Converts a vector3i to a vector3.
auto vec3i(const vm_int_t x, const vm_int_t y, const vm_int_t z) -> vector3i
Constructs a vector3i from x, y, and z.
void vec3i_assign(vector3i* dest, const vector3i* src)
Copies src into dest.
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 vec3i_add_assign(vector3i* dest, const vector3i* src)
Adds src to dest in place.
auto vec3i_from(const vector3* v) -> vector3i
Converts a vector3 to a vector3i by truncation.
auto vec3i_from_floored(const vector3* v) -> vector3i
Converts a vector3 to a vector3i by flooring each component.
auto vec3i_from_rounded(const vector3* v) -> vector3i
Converts a vector3 to a vector3i by rounding each component.

Function documentation

vm_float_t deg_to_rad(const vm_float_t degrees)

Converts degrees to radians.

Parameters
degrees Angle in degrees.
Returns The angle in radians.

vm_float_t rad_to_deg(const vm_float_t radians)

Converts radians to degrees.

Parameters
radians Angle in radians.
Returns The angle in degrees.

bool vec2_eq(const vector2 a, const vector2 b)

Returns true if two vectors are equal within VECMAT_EPSILON.

Parameters
a First vector.
b Second vector.
Returns True if a and b are approximately equal.

bool vec3_eq(const vector3 a, const vector3 b)

Returns true if two vectors are equal within VECMAT_EPSILON.

Parameters
a First vector.
b Second vector.
Returns True if a and b are approximately equal.

bool vec4_eq(const vector4 a, const vector4 b)

Returns true if two vectors are equal within VECMAT_EPSILON.

Parameters
a First vector.
b Second vector.
Returns True if a and b are approximately equal.

bool vec2i_eq(const vector2i a, const vector2i b)

Returns true if two vectors are exactly equal.

Parameters
a First vector.
b Second vector.
Returns True if a and b are equal.

bool vec3i_eq(const vector3i a, const vector3i b)

Returns true if two vectors are exactly equal.

Parameters
a First vector.
b Second vector.
Returns True if a and b are equal.

bool vec4i_eq(const vector4i a, const vector4i b)

Returns true if two vectors are exactly equal.

Parameters
a First vector.
b Second vector.
Returns True if a and b are equal.

bool mat2_eq(const matrix2 a, const matrix2 b)

Returns true if two matrices are equal within VECMAT_EPSILON.

Parameters
a First matrix.
b Second matrix.
Returns True if a and b are approximately equal.

bool mat3_eq(const matrix3 a, const matrix3 b)

Returns true if two matrices are equal within VECMAT_EPSILON.

Parameters
a First matrix.
b Second matrix.
Returns True if a and b are approximately equal.

bool mat4_eq(const matrix4 a, const matrix4 b)

Returns true if two matrices are equal within VECMAT_EPSILON.

Parameters
a First matrix.
b Second matrix.
Returns True if a and b are approximately equal.

bool mat2i_eq(const matrix2i a, const matrix2i b)

Returns true if two matrices are exactly equal.

Parameters
a First matrix.
b Second matrix.
Returns True if a and b are equal.

bool mat3i_eq(const matrix3i a, const matrix3i b)

Returns true if two matrices are exactly equal.

Parameters
a First matrix.
b Second matrix.
Returns True if a and b are equal.

bool mat4i_eq(const matrix4i a, const matrix4i b)

Returns true if two matrices are exactly equal.

Parameters
a First matrix.
b Second matrix.
Returns True if a and b are equal.

bool quat_eq(const quaternion a, const quaternion b)

Returns true if two quaternions are equal within VECMAT_EPSILON.

Parameters
a First quaternion.
b Second quaternion.
Returns True if a and b are approximately equal.

vector2 vec2(const vm_float_t x, const vm_float_t y)

Constructs a vector2 from x and y.

Parameters
x X component.
y Y component.
Returns The resulting vector2.

void vec2_assign(vector2* dest, const vector2* src)

Copies src into dest.

Parameters
dest Destination vector.
src Source vector.

void vec2_assign_xy(vector2* dest, const vm_float_t x, const vm_float_t y)

Assigns x and y to dest.

Parameters
dest Destination vector.
x X component.
y Y component.

void vec2_add_assign(vector2* dest, const vector2* src)

Adds src to dest in place.

Parameters
dest Destination vector.
src Vector to add.

vector2 vec2_from(const vector2i* v)

Converts a vector2i to a vector2.

Parameters
v Input integer vector.
Returns The resulting vector2.

vector2i vec2i(const vm_int_t x, const vm_int_t y)

Constructs a vector2i from x and y.

Parameters
x X component.
y Y component.
Returns The resulting vector2i.

void vec2i_assign(vector2i* dest, const vector2i* src)

Copies src into dest.

Parameters
dest Destination vector.
src Source vector.

void vec2i_assign_xy(vector2i* dest, const vm_int_t x, const vm_int_t y)

Assigns x and y to dest.

Parameters
dest Destination vector.
x X component.
y Y component.

void vec2i_add_assign(vector2i* dest, const vector2i* src)

Adds src to dest in place.

Parameters
dest Destination vector.
src Vector to add.

vector2i vec2i_from(const vector2* v)

Converts a vector2 to a vector2i by truncation.

Parameters
v Input vector.
Returns The resulting vector2i.

vector2i vec2i_from_floored(const vector2* v)

Converts a vector2 to a vector2i by flooring each component.

Parameters
v Input vector.
Returns The resulting vector2i.

vector2i vec2i_from_rounded(const vector2* v)

Converts a vector2 to a vector2i by rounding each component.

Parameters
v Input vector.
Returns The resulting vector2i.

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.

Parameters
x X component.
y Y component.
z Z component.
Returns The resulting vector3.

void vec3_assign(vector3* dest, const vector3* src)

Copies src into dest.

Parameters
dest Destination vector.
src Source vector.

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.

Parameters
dest Destination vector.
x X component.
y Y component.
z Z component.

void vec3_add_assign(vector3* dest, const vector3* src)

Adds src to dest in place.

Parameters
dest Destination vector.
src Vector to add.

vector3 vec3_from(const vector3i* v)

Converts a vector3i to a vector3.

Parameters
v Input integer vector.
Returns The resulting vector3.

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.

Parameters
x X component.
y Y component.
z Z component.
Returns The resulting vector3i.

void vec3i_assign(vector3i* dest, const vector3i* src)

Copies src into dest.

Parameters
dest Destination vector.
src Source vector.

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.

Parameters
dest Destination vector.
x X component.
y Y component.
z Z component.

void vec3i_add_assign(vector3i* dest, const vector3i* src)

Adds src to dest in place.

Parameters
dest Destination vector.
src Vector to add.

vector3i vec3i_from(const vector3* v)

Converts a vector3 to a vector3i by truncation.

Parameters
v Input vector.
Returns The resulting vector3i.

vector3i vec3i_from_floored(const vector3* v)

Converts a vector3 to a vector3i by flooring each component.

Parameters
v Input vector.
Returns The resulting vector3i.

vector3i vec3i_from_rounded(const vector3* v)

Converts a vector3 to a vector3i by rounding each component.

Parameters
v Input vector.
Returns The resulting vector3i.