src/vector2i_ptr.c file

Functions

void vec2i_add_ptr(vector2i* res, const vector2i* a, const vector2i* b)
Adds vectors a and b component-wise, storing the result in res.
void vec2i_sub_ptr(vector2i* res, const vector2i* a, const vector2i* b)
Subtracts vector b from vector a component-wise, storing the result in res.
void vec2i_mul_scalar_ptr(vector2i* res, const vector2i* v, const vm_int_t s)
Multiplies vector v by scalar s component-wise, storing the result in res.
void vec2i_div_scalar_ptr(vector2i* res, const vector2i* v, const vm_int_t s)
Divides vector v by scalar s component-wise (float division, truncated to int), storing the result in res.
void vec2i_mul_ptr(vector2i* res, const vector2i* a, const vector2i* b)
Multiplies vectors a and b component-wise (Hadamard product), storing the result in res.
void vec2i_neg_ptr(vector2i* res, const vector2i* v)
Negates the components of vector v, storing the result in res.
void vec2i_abs_ptr(vector2i* res, const vector2i* v)
Computes the absolute values of the components of vector v (using int abs), storing the result in res.
void vec2i_normalize_ptr(vector2i* res, const vector2i* v)
Normalizes vector v to approximate unit length (float length computation, truncated to int), storing the result in res.
void vec2i_min_ptr(vector2i* res, const vector2i* a, const vector2i* b)
Computes the component-wise minimum of vectors a and b, storing the result in res.
void vec2i_max_ptr(vector2i* res, const vector2i* a, const vector2i* b)
Computes the component-wise maximum of vectors a and b, storing the result in res.
void vec2i_sign_ptr(vector2i* res, const vector2i* v)
Sets each component of res to the sign of the corresponding component in v (+1, -1, or 0).
void vec2i_perpendicular_ptr(vector2i* res, const vector2i* v)
Computes the perpendicular vector to v (90 degrees counterclockwise rotation), storing the result in res.
void vec2i_cross_ptr(vector2i* res, const vector2i* a, const vector2i* b)
Computes the 2D cross-product of a and b, storing the scalar value in res->x and 0 in res->y.
static auto vm_div_floor(const vm_int_t a, const vm_int_t b) -> vm_int_t
Floor division toward -inf; returns 0 if b == 0.
static auto vm_mod_floor(const vm_int_t a, const vm_int_t b) -> vm_int_t
Floor modulo matching vm_div_floor.
void vec2i_lerp_ptr(vector2i* res, const vector2i* a, const vector2i* b, const vm_float_t t)
Linearly interpolates from a to b by t.
void vec2i_clamp_ptr(vector2i* res, const vector2i* v, const vector2i* min, const vector2i* max)
Clamps each component between min and max.
void vec2i_div_ptr(vector2i* res, const vector2i* a, const vector2i* b)
Divides two vectors component-wise.
void vec2i_add_scalar_ptr(vector2i* res, const vector2i* v, const vm_int_t s)
Adds a scalar to each component.
void vec2i_sub_scalar_ptr(vector2i* res, const vector2i* v, const vm_int_t s)
Subtracts a scalar from each component.
void vec2i_mod_ptr(vector2i* res, const vector2i* a, const vector2i* b)
Component-wise floor modulo of a by b.
void vec2i_div_floor_ptr(vector2i* res, const vector2i* a, const vector2i* b)
Component-wise floored division of a by b.
void vec2i_wrap_ptr(vector2i* res, const vector2i* v, const vector2i* period)
Wraps each component of v into [0, period).
void vec2i_to_vec3i_ptr(vector3i* res, const vector2i* v, const vm_int_t z)
Converts a vector4i to a vector3i by dropping w.
void vec2i_normalize_to_vec2_ptr(vector2* res, const vector2i* v)
Converts to a unit-length vector2.

Function documentation

void vec2i_add_ptr(vector2i* res, const vector2i* a, const vector2i* b)

Adds vectors a and b component-wise, storing the result in res.

Parameters
res Pointer to result vector2i.
a Pointer to first vector2i.
b Pointer to second vector2i.

void vec2i_sub_ptr(vector2i* res, const vector2i* a, const vector2i* b)

Subtracts vector b from vector a component-wise, storing the result in res.

Parameters
res Pointer to result vector2i.
a Pointer to first vector2i.
b Pointer to second vector2i.

void vec2i_mul_scalar_ptr(vector2i* res, const vector2i* v, const vm_int_t s)

Multiplies vector v by scalar s component-wise, storing the result in res.

Parameters
res Pointer to result vector2i.
v Pointer to vector2i.
s Scalar.

void vec2i_div_scalar_ptr(vector2i* res, const vector2i* v, const vm_int_t s)

Divides vector v by scalar s component-wise (float division, truncated to int), storing the result in res.

Parameters
res Pointer to result vector2i.
v Pointer to vector2i.
s Scalar.

Sets vector to zero if s == 0.

void vec2i_mul_ptr(vector2i* res, const vector2i* a, const vector2i* b)

Multiplies vectors a and b component-wise (Hadamard product), storing the result in res.

Parameters
res Pointer to result vector2i.
a Pointer to first vector2i.
b Pointer to second vector2i.

void vec2i_neg_ptr(vector2i* res, const vector2i* v)

Negates the components of vector v, storing the result in res.

Parameters
res Pointer to result vector2i.
v Pointer to vector2i.

void vec2i_abs_ptr(vector2i* res, const vector2i* v)

Computes the absolute values of the components of vector v (using int abs), storing the result in res.

Parameters
res Pointer to result vector2i.
v Pointer to vector2i.

void vec2i_normalize_ptr(vector2i* res, const vector2i* v)

Normalizes vector v to approximate unit length (float length computation, truncated to int), storing the result in res.

Parameters
res Pointer to result vector2i.
v Pointer to vector2i.

Copies v unchanged if the length is zero.

void vec2i_min_ptr(vector2i* res, const vector2i* a, const vector2i* b)

Computes the component-wise minimum of vectors a and b, storing the result in res.

Parameters
res Pointer to result vector2i.
a Pointer to first vector2i.
b Pointer to second vector2i.

void vec2i_max_ptr(vector2i* res, const vector2i* a, const vector2i* b)

Computes the component-wise maximum of vectors a and b, storing the result in res.

Parameters
res Pointer to result vector2i.
a Pointer to first vector2i.
b Pointer to second vector2i.

void vec2i_sign_ptr(vector2i* res, const vector2i* v)

Sets each component of res to the sign of the corresponding component in v (+1, -1, or 0).

Parameters
res Pointer to result vector2i.
v Pointer to vector2i.

void vec2i_perpendicular_ptr(vector2i* res, const vector2i* v)

Computes the perpendicular vector to v (90 degrees counterclockwise rotation), storing the result in res.

Parameters
res Pointer to result vector2i.
v Pointer to vector2i.

void vec2i_cross_ptr(vector2i* res, const vector2i* a, const vector2i* b)

Computes the 2D cross-product of a and b, storing the scalar value in res->x and 0 in res->y.

Parameters
res Pointer to result vector2i.
a Pointer to first vector2i.
b Pointer to second vector2i.

static vm_int_t vm_div_floor(const vm_int_t a, const vm_int_t b)

Floor division toward -inf; returns 0 if b == 0.

Parameters
a Dividend.
b Divisor.
Returns floor(a / b), or 0 if b is 0.

static vm_int_t vm_mod_floor(const vm_int_t a, const vm_int_t b)

Floor modulo matching vm_div_floor.

Parameters
a Dividend.
b Divisor.
Returns Floor modulus.

Result is in [0, b) for b > 0 (or (b, 0] for b < 0); 0 if b == 0.

void vec2i_lerp_ptr(vector2i* res, const vector2i* a, const vector2i* b, const vm_float_t t)

Linearly interpolates from a to b by t.

Parameters
res Output vector.
a First input vector.
b Second input vector.
t Interpolation factor.

void vec2i_clamp_ptr(vector2i* res, const vector2i* v, const vector2i* min, const vector2i* max)

Clamps each component between min and max.

Parameters
res Output vector.
v Input vector.
min Lower bound.
max Upper bound.

void vec2i_div_ptr(vector2i* res, const vector2i* a, const vector2i* b)

Divides two vectors component-wise.

Parameters
res Output vector.
a First input vector.
b Second input vector.

void vec2i_add_scalar_ptr(vector2i* res, const vector2i* v, const vm_int_t s)

Adds a scalar to each component.

Parameters
res Output vector.
v Input vector.
s Scalar value.

void vec2i_sub_scalar_ptr(vector2i* res, const vector2i* v, const vm_int_t s)

Subtracts a scalar from each component.

Parameters
res Output vector.
v Input vector.
s Scalar value.

void vec2i_mod_ptr(vector2i* res, const vector2i* a, const vector2i* b)

Component-wise floor modulo of a by b.

Parameters
res Output vector.
a First input vector.
b Second input vector.

void vec2i_div_floor_ptr(vector2i* res, const vector2i* a, const vector2i* b)

Component-wise floored division of a by b.

Parameters
res Output vector.
a First input vector.
b Second input vector.

void vec2i_wrap_ptr(vector2i* res, const vector2i* v, const vector2i* period)

Wraps each component of v into [0, period).

Parameters
res Output vector.
v Input vector.
period Wrap period per component.

void vec2i_to_vec3i_ptr(vector3i* res, const vector2i* v, const vm_int_t z)

Converts a vector4i to a vector3i by dropping w.

Parameters
res Output vector.
v Input vector.
z Z component.

void vec2i_normalize_to_vec2_ptr(vector2* res, const vector2i* v)

Converts to a unit-length vector2.

Parameters
res Output vector.
v Input vector.