src/vector3i.c file

Functions

auto vec3i_zero(void) -> vector3i
Returns a zero-initialized vector3i.
auto vec3i_one(void) -> vector3i
Returns a vector3i with all components set to 1.
auto vec3i_x_axis(const vm_int_t x) -> vector3i
Returns a vector3i along the x-axis.
auto vec3i_y_axis(const vm_int_t y) -> vector3i
Returns a vector3i along the y-axis.
auto vec3i_z_axis(const vm_int_t z) -> vector3i
Returns a vector3i along the z-axis.
auto vec3i_x_scale(const vm_int_t x) -> vector3i
Returns a vector3i for scaling along the x-axis.
auto vec3i_y_scale(const vm_int_t y) -> vector3i
Returns a vector3i for scaling along the y-axis.
auto vec3i_z_scale(const vm_int_t z) -> vector3i
Returns a vector3i for scaling along the z-axis.
auto vec3i_add(const vector3i a, const vector3i b) -> vector3i
Component-wise addition of two vectors.
auto vec3i_sub(const vector3i a, const vector3i b) -> vector3i
Component-wise subtraction of two vectors.
auto vec3i_mul_scalar(const vector3i v, const vm_int_t s) -> vector3i
Component-wise multiplication of vector by scalar.
auto vec3i_div_scalar(const vector3i v, const vm_int_t s) -> vector3i
Component-wise division of vector by scalar.
auto vec3i_mul(const vector3i a, const vector3i b) -> vector3i
Component-wise multiplication of two vectors.
auto vec3i_neg(const vector3i v) -> vector3i
Negation of a vector.
auto vec3i_abs(const vector3i v) -> vector3i
Computes the absolute value per component of a vector3i.
auto vec3i_cross(const vector3i a, const vector3i b) -> vector3i
Computes the cross-product of two vector3i.
auto vec3i_normalize(const vector3i v) -> vector3i
Normalizes a vector3i to unit length.
auto vec3i_min(const vector3i a, const vector3i b) -> vector3i
Computes the component-wise minimum of two vector3i.
auto vec3i_max(const vector3i a, const vector3i b) -> vector3i
Computes the component-wise maximum of two vector3i.
auto vec3i_sign(const vector3i v) -> vector3i
Computes the sign per component of a vector3i (-1, 0, or 1).
auto vec3i_lerp(const vector3i a, const vector3i b, const vm_float_t t) -> vector3i
Linearly interpolates between two vector3i.
auto vec3i_clamp(const vector3i v, const vector3i min, const vector3i max) -> vector3i
Clamps a vector3i between min and max per component.
auto vec3i_dot(const vector3i a, const vector3i b) -> vm_int_t
Computes the dot product of two vector3i.
auto vec3i_length(const vector3i v) -> vm_float_t
Computes the length (magnitude) of a vector3i.
auto vec3i_distance(const vector3i a, const vector3i b) -> vm_float_t
Computes the Euclidean distance between two vector3i.
auto vec3i_angle(const vector3i a, const vector3i b) -> vm_float_t
Computes the angle between two non-zero vector3i in radians.
auto vec3i_div(const vector3i a, const vector3i b) -> vector3i
Divides two vectors component-wise.
auto vec3i_add_scalar(const vector3i v, const vm_int_t s) -> vector3i
Adds a scalar to each component.
auto vec3i_sub_scalar(const vector3i v, const vm_int_t s) -> vector3i
Subtracts a scalar from each component.
auto vec3i_mod(const vector3i a, const vector3i b) -> vector3i
Component-wise floor modulo of a by b.
auto vec3i_div_floor(const vector3i a, const vector3i b) -> vector3i
Component-wise floored division of a by b.
auto vec3i_wrap(const vector3i v, const vector3i period) -> vector3i
Wraps each component of v into [0, period).
auto vec3i_splat(const vm_int_t s) -> vector3i
Returns a vector with every component set to s.
auto vec3i_from_vec2i(const vector2i v, const vm_int_t z) -> vector3i
Builds a vector3i from a vector2i and z.
auto vec3i_xy(const vector3i v) -> vector2i
Returns the x and y components as a 2D vector.
auto vec3i_normalize_to_vec3(const vector3i v) -> vector3
Converts to a unit-length vector3.
auto vec3i_length_squared(const vector3i v) -> vm_int_t
Returns the squared Euclidean length.
auto vec3i_distance_squared(const vector3i a, const vector3i b) -> vm_int_t
Returns the squared Euclidean distance between a and b.
auto vec3i_length_manhattan(const vector3i v) -> vm_int_t
Returns the Manhattan (L1) length.
auto vec3i_length_chebyshev(const vector3i v) -> vm_int_t
Returns the Chebyshev (L-inf) length.
auto vec3i_min_component(const vector3i v) -> vm_int_t
Returns the smallest component.
auto vec3i_max_component(const vector3i v) -> vm_int_t
Returns the largest component.
auto vec3i_sum(const vector3i v) -> vm_int_t
Returns the sum of all components.
auto vec3i_is_zero(const vector3i v) -> bool
Returns true if every component is zero.

Function documentation

vector3i vec3i_zero(void)

Returns a zero-initialized vector3i.

Returns A vector3i with all components set to 0.

vector3i vec3i_one(void)

Returns a vector3i with all components set to 1.

Returns A vector3i with all components set to 1.

vector3i vec3i_x_axis(const vm_int_t x)

Returns a vector3i along the x-axis.

Parameters
x The x component value.
Returns A vector3i with (x, 0, 0).

vector3i vec3i_y_axis(const vm_int_t y)

Returns a vector3i along the y-axis.

Parameters
y The y component value.
Returns A vector3i with (0, y, 0).

vector3i vec3i_z_axis(const vm_int_t z)

Returns a vector3i along the z-axis.

Parameters
z The z component value.
Returns A vector3i with (0, 0, z).

vector3i vec3i_x_scale(const vm_int_t x)

Returns a vector3i for scaling along the x-axis.

Parameters
x The x scale factor.
Returns A vector3i with (x, 1, 1).

vector3i vec3i_y_scale(const vm_int_t y)

Returns a vector3i for scaling along the y-axis.

Parameters
y The y scale factor.
Returns A vector3i with (1, y, 1).

vector3i vec3i_z_scale(const vm_int_t z)

Returns a vector3i for scaling along the z-axis.

Parameters
z The z scale factor.
Returns A vector3i with (1, 1, z).

vector3i vec3i_add(const vector3i a, const vector3i b)

Component-wise addition of two vectors.

Parameters
a First vector.
b Second vector.
Returns Result vector.

vector3i vec3i_sub(const vector3i a, const vector3i b)

Component-wise subtraction of two vectors.

Parameters
a First vector.
b Second vector.
Returns Result vector.

vector3i vec3i_mul_scalar(const vector3i v, const vm_int_t s)

Component-wise multiplication of vector by scalar.

Parameters
v The vector.
s The scalar.
Returns Result vector.

vector3i vec3i_div_scalar(const vector3i v, const vm_int_t s)

Component-wise division of vector by scalar.

Parameters
v The vector.
s The scalar (non-zero).
Returns Result vector.

vector3i vec3i_mul(const vector3i a, const vector3i b)

Component-wise multiplication of two vectors.

Parameters
a First vector.
b Second vector.
Returns Result vector.

vector3i vec3i_neg(const vector3i v)

Negation of a vector.

Parameters
v The vector.
Returns The negated vector.

vector3i vec3i_abs(const vector3i v)

Computes the absolute value per component of a vector3i.

Parameters
v The vector.
Returns The absolute vector3i.

vector3i vec3i_cross(const vector3i a, const vector3i b)

Computes the cross-product of two vector3i.

Parameters
a First vector.
b Second vector.
Returns The cross-product (a × b).

vector3i vec3i_normalize(const vector3i v)

Normalizes a vector3i to unit length.

Parameters
v The vector (non-zero).
Returns The normalized vector.

vector3i vec3i_min(const vector3i a, const vector3i b)

Computes the component-wise minimum of two vector3i.

Parameters
a First vector.
b Second vector.
Returns Per-component min(a, b).

vector3i vec3i_max(const vector3i a, const vector3i b)

Computes the component-wise maximum of two vector3i.

Parameters
a First vector.
b Second vector.
Returns Per-component max(a, b).

vector3i vec3i_sign(const vector3i v)

Computes the sign per component of a vector3i (-1, 0, or 1).

Parameters
v The vector.
Returns The sign vector.

vector3i vec3i_lerp(const vector3i a, const vector3i b, const vm_float_t t)

Linearly interpolates between two vector3i.

Parameters
a Start vector.
b End vector.
t Interpolation factor [0, 1].
Returns The interpolated vector (a * (1 - t) + b * t).

vector3i vec3i_clamp(const vector3i v, const vector3i min, const vector3i max)

Clamps a vector3i between min and max per component.

Parameters
v The vector.
min Minimum bounds.
max Maximum bounds.
Returns The clamped vector.

vm_int_t vec3i_dot(const vector3i a, const vector3i b)

Computes the dot product of two vector3i.

Parameters
a First vector.
b Second vector.
Returns The dot product (a.x * b.x + a.y * b.y + a.z * b.z).

vm_float_t vec3i_length(const vector3i v)

Computes the length (magnitude) of a vector3i.

Parameters
v The vector.
Returns The Euclidean length of v.

vm_float_t vec3i_distance(const vector3i a, const vector3i b)

Computes the Euclidean distance between two vector3i.

Parameters
a First vector.
b Second vector.
Returns The distance between a and b.

vm_float_t vec3i_angle(const vector3i a, const vector3i b)

Computes the angle between two non-zero vector3i in radians.

Parameters
a First vector.
b Second vector.
Returns The angle between the directions of a and b.

vector3i vec3i_div(const vector3i a, const vector3i b)

Divides two vectors component-wise.

Parameters
a First input vector.
b Second input vector.
Returns The resulting vector3i.

vector3i vec3i_add_scalar(const vector3i v, const vm_int_t s)

Adds a scalar to each component.

Parameters
v Input vector.
s Scalar value.
Returns The resulting vector3i.

vector3i vec3i_sub_scalar(const vector3i v, const vm_int_t s)

Subtracts a scalar from each component.

Parameters
v Input vector.
s Scalar value.
Returns The resulting vector3i.

vector3i vec3i_mod(const vector3i a, const vector3i b)

Component-wise floor modulo of a by b.

Parameters
a First input vector.
b Second input vector.
Returns The resulting vector3i.

vector3i vec3i_div_floor(const vector3i a, const vector3i b)

Component-wise floored division of a by b.

Parameters
a First input vector.
b Second input vector.
Returns The resulting vector3i.

vector3i vec3i_wrap(const vector3i v, const vector3i period)

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

Parameters
v Input vector.
period Wrap period per component.
Returns The resulting vector3i.

vector3i vec3i_splat(const vm_int_t s)

Returns a vector with every component set to s.

Parameters
s Scalar value.
Returns The resulting vector3i.

vector3i vec3i_from_vec2i(const vector2i v, const vm_int_t z)

Builds a vector3i from a vector2i and z.

Parameters
v Input vector.
z Z component.
Returns The resulting vector3i.

vector2i vec3i_xy(const vector3i v)

Returns the x and y components as a 2D vector.

Parameters
v Input vector.
Returns The resulting vector2i.

vector3 vec3i_normalize_to_vec3(const vector3i v)

Converts to a unit-length vector3.

Parameters
v Input vector.
Returns The resulting vector3.

vm_int_t vec3i_length_squared(const vector3i v)

Returns the squared Euclidean length.

Parameters
v Input vector.
Returns The resulting scalar.

vm_int_t vec3i_distance_squared(const vector3i a, const vector3i b)

Returns the squared Euclidean distance between a and b.

Parameters
a First input vector.
b Second input vector.
Returns The resulting scalar.

vm_int_t vec3i_length_manhattan(const vector3i v)

Returns the Manhattan (L1) length.

Parameters
v Input vector.
Returns The resulting scalar.

vm_int_t vec3i_length_chebyshev(const vector3i v)

Returns the Chebyshev (L-inf) length.

Parameters
v Input vector.
Returns The resulting scalar.

vm_int_t vec3i_min_component(const vector3i v)

Returns the smallest component.

Parameters
v Input vector.
Returns The resulting scalar.

vm_int_t vec3i_max_component(const vector3i v)

Returns the largest component.

Parameters
v Input vector.
Returns The resulting scalar.

vm_int_t vec3i_sum(const vector3i v)

Returns the sum of all components.

Parameters
v Input vector.
Returns The resulting scalar.

bool vec3i_is_zero(const vector3i v)

Returns true if every component is zero.

Parameters
v Input vector.
Returns True if every component is zero.