# ivec3

Macros:

1. GLM_IVEC3_ONE_INIT

2. GLM_IVEC3_ZERO_INIT

3. GLM_IVEC3_ONE

4. GLM_IVEC3_ZERO

Functions:

## Functions documentation

void glm_ivec3(ivec4 v4, ivec3 dest)

init ivec3 using ivec4

Parameters:
[in] v vector
[out] dest destination
void glm_ivec3_copy(ivec3 a, ivec3 dest)

copy all members of [a] to [dest]

Parameters:
[in] a source vector
[out] dest destination
void glm_ivec3_zero(ivec3 v)

set all members of [v] to zero

Parameters:
[out] v vector
void glm_ivec3_one(ivec3 v)

set all members of [v] to one

Parameters:
[out] v vector
int glm_ivec3_dot(ivec3 a, ivec3 b)

dot product of ivec3

Parameters:
[in] a vector1
[in] b vector2
Returns:

dot product

int glm_ivec3_norm2(ivec3 v)

norm * norm (magnitude) of vector

we can use this func instead of calling norm * norm, because it would call sqrtf function twice but with this func we can avoid func call, maybe this is not good name for this func

Parameters:
[in] v vector
Returns:

square of norm / magnitude, cast to an integer

int glm_ivec3_norm(ivec3 vec)
euclidean norm (magnitude), also called L2 norm
this will give magnitude of vector in euclidean space
Parameters:
[in] vec vector
void glm_ivec3_add(ivec3 a, ivec3 b, ivec3 dest)

add vector [a] to vector [b] and store result in [dest]

Parameters:
[in] a first vector
[in] b second vector
[out] dest destination
void glm_ivec3_adds(ivec3 v, int s, ivec3 dest)

add scalar s to vector [v] and store result in [dest]

Parameters:
[in] v vector
[in] s scalar
[out] dest destination
void glm_ivec3_sub(ivec3 a, ivec3 b, ivec3 dest)

subtract vector [b] from vector [a] and store result in [dest]

Parameters:
[in] a first vector
[in] b second vector
[out] dest destination
void glm_ivec3_subs(ivec3 v, int s, ivec3 dest)

subtract scalar s from vector [v] and store result in [dest]

Parameters:
[in] v vector
[in] s scalar
[out] dest destination
void glm_ivec3_mul(ivec3 a, ivec3 b, ivec3 dest)

multiply vector [a] with vector [b] and store result in [dest]

Parameters:
[in] a first vector
[in] b second vector
[out] dest destination
void glm_ivec3_scale(ivec3 v, int s, ivec3 dest)

multiply vector [a] with scalar s and store result in [dest]

Parameters:
[in] v vector
[in] s scalar
[out] dest destination
void glm_ivec3_div(ivec3 a, ivec3 b, ivec3 dest)

div vector with another component-wise division: d = a / b

Parameters:
[in] a vector 1
[in] b vector 2
[out] dest result = (a[0] / b[0], a[1] / b[1], a[2] / b[2])
void glm_ivec3_divs(ivec3 v, int s, ivec3 dest)

div vector with scalar: d = v / s

Parameters:
[in] v vector
[in] s scalar
[out] dest result = (a[0] / s, a[1] / s, a[2] / s)
void glm_ivec3_mod(ivec3 a, ivec3 b, ivec3 dest)

mod vector with another component-wise modulo: d = a % b

Parameters:
[in] a vector
[in] b scalar
[out] dest result = (a[0] % b[0], a[1] % b[1], a[2] % b[2])
int glm_ivec3_distance2(ivec3 a, ivec3 b)

squared distance between two vectors

Parameters:
[in] a first vector
[in] b second vector
Returns:

squared distance (distance * distance)

float glm_ivec3_distance(ivec3 a, ivec3 b)

distance between two vectors

Parameters:
[in] a first vector
[in] b second vector
Returns:

distance

void glm_ivec3_fill(ivec3 v, int val)

fill a vector with specified value

Parameters:
[out] v vector
[in] val value
bool glm_ivec3_eq(ivec3 v, int val)

check if vector is equal to value

Parameters:
[in] v vector
[in] val value
bool glm_ivec3_eqv(ivec3 v1, ivec3 v2)

check if vector is equal to another vector

Parameters:
[in] vec vector 1
[in] vec vector 2
void glm_ivec3_maxv(ivec3 a, ivec3 b, ivec3 dest)

set each member of dest to greater of vector a and b

Parameters:
[in] a first vector
[in] b second vector
[out] dest destination
void glm_ivec3_minv(ivec3 a, ivec3 b, ivec3 dest)

set each member of dest to lesser of vector a and b

Parameters:
[in] a first vector
[in] b second vector
[out] dest destination
void glm_ivec3_clamp(ivec3 v, int minVal, int maxVal)

clamp each member of [v] between minVal and maxVal (inclusive)

Parameters:
[in, out] v vector
[in] minVal minimum value
[in] maxVal maximum value
void glm_ivec3_abs(ivec3 v, ivec3 dest)

absolute value of each vector item

Parameters:
[in] v vector
[out] dest destination vector