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
vector4ito avector3iby dropping w. - void vec2i_normalize_to_vec2_ptr(vector2* res, const vector2i* v)
- Converts to a unit-length vector2.
Function documentation
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_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. |
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_.
| 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_normalize_to_vec2_ptr(vector2* res, const vector2i* v)
Converts to a unit-length vector2.
| Parameters | |
|---|---|
| res | Output vector. |
| v | Input vector. |