Vecmat 0.2.3
C math and linear algebra library for 2D/3D graphics, physics, and science.
Loading...
Searching...
No Matches
vector3_ptr.c File Reference
#include <vecmat.h>

Go to the source code of this file.

Functions

void vec3_add_ptr (vector3 *res, const vector3 *a, const vector3 *b)
 Component-wise addition of two vectors.
void vec3_sub_ptr (vector3 *res, const vector3 *a, const vector3 *b)
 Component-wise subtraction of two vectors.
void vec3_mul_scalar_ptr (vector3 *res, const vector3 *v, const vm_float_t s)
 Component-wise multiplication of vector by scalar.
void vec3_div_scalar_ptr (vector3 *res, const vector3 *v, const vm_float_t s)
 Component-wise division of vector by scalar.
void vec3_mul_ptr (vector3 *res, const vector3 *a, const vector3 *b)
 Component-wise multiplication of two vectors.
void vec3_neg_ptr (vector3 *res, const vector3 *v)
 Negation of a vector.
void vec3_abs_ptr (vector3 *res, const vector3 *v)
 Computes the absolute value per component of a vector3.
void vec3_normalize_ptr (vector3 *res, const vector3 *v)
 Normalize a vector to unit length.
void vec3_cross_ptr (vector3 *res, const vector3 *a, const vector3 *b)
 Compute cross-product of two vectors.
void vec3_min_ptr (vector3 *res, const vector3 *a, const vector3 *b)
 Component-wise minimum of two vectors.
void vec3_max_ptr (vector3 *res, const vector3 *a, const vector3 *b)
 Component-wise maximum of two vectors.
void vec3_sign_ptr (vector3 *res, const vector3 *v)
 Component-wise sign of a vector.
void vec3_floor_ptr (vector3 *res, const vector3 *v)
 Component-wise floor of a vector.
void vec3_ceil_ptr (vector3 *res, const vector3 *v)
 Component-wise ceil of a vector.
void vec3_round_ptr (vector3 *res, const vector3 *v)
 Component-wise round of a vector.
void vec3_reflect_ptr (vector3 *res, const vector3 *incident, const vector3 *normal)
 Compute reflection of the incident vector over normal.
void vec3_refract_ptr (vector3 *res, const vector3 *incident, const vector3 *normal, const vm_float_t eta)
 Compute refraction of the incident vector through normal with eta.
void vec3_lerp_ptr (vector3 *res, const vector3 *a, const vector3 *b, const vm_float_t t)
 Linear interpolation between two vectors.
void vec3_clamp_ptr (vector3 *res, const vector3 *v, const vector3 *min, const vector3 *max)
 Clamp vector components between min and max.
void vec3_scale_ptr (vector3 *res, const vector3 *v, const vm_float_t s)
 Scales the vector by a scalar.
void vec3_div_ptr (vector3 *res, const vector3 *a, const vector3 *b)
 Divides two vectors component-wise.
void vec3_add_scalar_ptr (vector3 *res, const vector3 *v, const vm_float_t s)
 Adds a scalar to each component.
void vec3_sub_scalar_ptr (vector3 *res, const vector3 *v, const vm_float_t s)
 Subtracts a scalar from each component.
void vec3_clamp_scalar_ptr (vector3 *res, const vector3 *v, const vm_float_t min, const vm_float_t max)
 Clamps each component to the scalar range [min, max].
void vec3_saturate_ptr (vector3 *res, const vector3 *v)
 Clamps each component to the range [0, 1].
void vec3_fract_ptr (vector3 *res, const vector3 *v)
 Returns the fractional part of each component.
void vec3_project_ptr (vector3 *res, const vector3 *a, const vector3 *b)
 Projects a onto b.
void vec3_slide_ptr (vector3 *res, const vector3 *v, const vector3 *normal)
 Removes the component of v along normal.
void vec3_reject_ptr (vector3 *res, const vector3 *a, const vector3 *b)
 Returns the component of a orthogonal to b.
void vec3_rotate_axis_ptr (vector3 *res, const vector3 *v, const vector3 *axis, const vm_float_t angle)
 Rotates v around axis by angle radians.
void vec3_from_vec2_ptr (vector3 *res, const vector2 *v, const vm_float_t z)
 Builds a higher-dimension vector from a vector2.
void vec3_xy_ptr (vector2 *res, const vector3 *v)
 Returns the x and y components as a 2D vector.
void vec3_move_toward_ptr (vector3 *res, const vector3 *current, const vector3 *target, const vm_float_t max_delta)
 Moves current toward target by at most max_delta.
void vec3_limit_length_ptr (vector3 *res, const vector3 *v, const vm_float_t max_len)
 Clamps the vector length to max_len.
void vec3_orthonormal_basis_ptr (const vector3 *n, vector3 *t, vector3 *b)
 Builds a tangent and bitangent orthonormal to n.

Function Documentation

◆ vec3_abs_ptr()

void vec3_abs_ptr ( vector3 * res,
const vector3 * v )

Computes the absolute value per component of a vector3.

Parameters
resResult vector.
vVector.

Definition at line 100 of file vector3_ptr.c.

References VECMAT_FABS, vector3::x, vector3::y, and vector3::z.

Referenced by vec3_abs().

◆ vec3_add_ptr()

void vec3_add_ptr ( vector3 * res,
const vector3 * a,
const vector3 * b )

Component-wise addition of two vectors.

Parameters
resResult vector.
aFirst vector.
bSecond vector.

Definition at line 14 of file vector3_ptr.c.

References vector3::x, vector3::y, and vector3::z.

Referenced by vec3_add().

◆ vec3_add_scalar_ptr()

void vec3_add_scalar_ptr ( vector3 * res,
const vector3 * v,
const vm_float_t s )

Adds a scalar to each component.

Parameters
resOutput vector.
vInput vector.
sScalar value.

Definition at line 320 of file vector3_ptr.c.

References vector3::x, vector3::y, and vector3::z.

Referenced by vec3_add_scalar().

◆ vec3_ceil_ptr()

void vec3_ceil_ptr ( vector3 * res,
const vector3 * v )

Component-wise ceil of a vector.

Parameters
resResult vector.
vVector.

Definition at line 200 of file vector3_ptr.c.

References VECMAT_CEIL, vector3::x, vector3::y, and vector3::z.

Referenced by vec3_ceil().

◆ vec3_clamp_ptr()

void vec3_clamp_ptr ( vector3 * res,
const vector3 * v,
const vector3 * min,
const vector3 * max )

Clamp vector components between min and max.

Parameters
resResult vector.
vVector.
minMinimum bounds.
maxMaximum bounds.

Definition at line 280 of file vector3_ptr.c.

References VECMAT_FMAX, VECMAT_FMIN, vector3::x, vector3::y, and vector3::z.

Referenced by vec3_clamp().

◆ vec3_clamp_scalar_ptr()

void vec3_clamp_scalar_ptr ( vector3 * res,
const vector3 * v,
const vm_float_t min,
const vm_float_t max )

Clamps each component to the scalar range [min, max].

Parameters
resOutput vector.
vInput vector.
minLower bound.
maxUpper bound.

Definition at line 349 of file vector3_ptr.c.

References VECMAT_FMAX, VECMAT_FMIN, vector3::x, vector3::y, and vector3::z.

Referenced by vec3_clamp_scalar(), and vec3_saturate_ptr().

◆ vec3_cross_ptr()

void vec3_cross_ptr ( vector3 * res,
const vector3 * a,
const vector3 * b )

Compute cross-product of two vectors.

Parameters
resResult vector.
aFirst vector.
bSecond vector.

Definition at line 133 of file vector3_ptr.c.

References vector3::x, vector3::y, and vector3::z.

Referenced by vec3_cross(), and vec3_orthonormal_basis_ptr().

◆ vec3_div_ptr()

void vec3_div_ptr ( vector3 * res,
const vector3 * a,
const vector3 * b )

Divides two vectors component-wise.

Parameters
resOutput vector.
aFirst input vector.
bSecond input vector.

Definition at line 306 of file vector3_ptr.c.

References vector3::x, vector3::y, and vector3::z.

Referenced by vec3_div().

◆ vec3_div_scalar_ptr()

void vec3_div_scalar_ptr ( vector3 * res,
const vector3 * v,
const vm_float_t s )

Component-wise division of vector by scalar.

Parameters
resResult vector.
vVector.
sScalar.

Definition at line 56 of file vector3_ptr.c.

References vector3::x, vector3::y, and vector3::z.

Referenced by vec3_div_scalar().

◆ vec3_floor_ptr()

void vec3_floor_ptr ( vector3 * res,
const vector3 * v )

Component-wise floor of a vector.

Parameters
resResult vector.
vVector.

Definition at line 187 of file vector3_ptr.c.

References VECMAT_FLOOR, vector3::x, vector3::y, and vector3::z.

Referenced by vec3_floor().

◆ vec3_fract_ptr()

void vec3_fract_ptr ( vector3 * res,
const vector3 * v )

Returns the fractional part of each component.

Parameters
resOutput vector.
vInput vector.

Definition at line 373 of file vector3_ptr.c.

References VECMAT_FLOOR, vector3::x, vector3::y, and vector3::z.

Referenced by vec3_fract().

◆ vec3_from_vec2_ptr()

void vec3_from_vec2_ptr ( vector3 * res,
const vector2 * v,
const vm_float_t z )

Builds a higher-dimension vector from a vector2.

Parameters
resOutput vector.
vInput vector.
zZ component.

Definition at line 460 of file vector3_ptr.c.

References vector2::x, vector3::x, vector2::y, vector3::y, and vector3::z.

Referenced by vec3_from_vec2().

◆ vec3_lerp_ptr()

void vec3_lerp_ptr ( vector3 * res,
const vector3 * a,
const vector3 * b,
const vm_float_t t )

Linear interpolation between two vectors.

Parameters
resResult vector.
aStart vector.
bEnd vector.
tInterpolation factor.

Definition at line 265 of file vector3_ptr.c.

References vector3::x, vector3::y, and vector3::z.

Referenced by vec3_lerp().

◆ vec3_limit_length_ptr()

void vec3_limit_length_ptr ( vector3 * res,
const vector3 * v,
const vm_float_t max_len )

Clamps the vector length to max_len.

Parameters
resOutput vector.
vInput vector.
max_lenMaximum length.

Definition at line 510 of file vector3_ptr.c.

References vec3_length(), vector3::x, vector3::y, and vector3::z.

Referenced by vec3_limit_length().

◆ vec3_max_ptr()

void vec3_max_ptr ( vector3 * res,
const vector3 * a,
const vector3 * b )

Component-wise maximum of two vectors.

Parameters
resResult vector.
aFirst vector.
bSecond vector.

Definition at line 161 of file vector3_ptr.c.

References VECMAT_FMAX, vector3::x, vector3::y, and vector3::z.

Referenced by vec3_max().

◆ vec3_min_ptr()

void vec3_min_ptr ( vector3 * res,
const vector3 * a,
const vector3 * b )

Component-wise minimum of two vectors.

Parameters
resResult vector.
aFirst vector.
bSecond vector.

Definition at line 147 of file vector3_ptr.c.

References VECMAT_FMIN, vector3::x, vector3::y, and vector3::z.

Referenced by vec3_min().

◆ vec3_move_toward_ptr()

void vec3_move_toward_ptr ( vector3 * res,
const vector3 * current,
const vector3 * target,
const vm_float_t max_delta )

Moves current toward target by at most max_delta.

Parameters
resOutput vector.
currentCurrent position.
targetTarget position.
max_deltaMaximum distance to move.

Definition at line 487 of file vector3_ptr.c.

References VECMAT_SQRT, vector3::x, vector3::y, and vector3::z.

Referenced by vec3_move_toward().

◆ vec3_mul_ptr()

void vec3_mul_ptr ( vector3 * res,
const vector3 * a,
const vector3 * b )

Component-wise multiplication of two vectors.

Parameters
resResult vector.
aFirst vector.
bSecond vector.

Definition at line 74 of file vector3_ptr.c.

References vector3::x, vector3::y, and vector3::z.

Referenced by vec3_mul().

◆ vec3_mul_scalar_ptr()

void vec3_mul_scalar_ptr ( vector3 * res,
const vector3 * v,
const vm_float_t s )

Component-wise multiplication of vector by scalar.

Parameters
resResult vector.
vVector.
sScalar.

Definition at line 42 of file vector3_ptr.c.

References vector3::x, vector3::y, and vector3::z.

Referenced by vec3_mul_scalar(), and vec3_scale_ptr().

◆ vec3_neg_ptr()

void vec3_neg_ptr ( vector3 * res,
const vector3 * v )

Negation of a vector.

Parameters
resResult vector.
vVector.

Definition at line 87 of file vector3_ptr.c.

References vector3::x, vector3::y, and vector3::z.

Referenced by vec3_neg().

◆ vec3_normalize_ptr()

void vec3_normalize_ptr ( vector3 * res,
const vector3 * v )

Normalize a vector to unit length.

Parameters
resResult vector.
vVector.

Definition at line 113 of file vector3_ptr.c.

References vec3_length(), vector3::x, vector3::y, and vector3::z.

Referenced by vec3_normalize(), vec3_orthonormal_basis_ptr(), vec3_rotate_axis_ptr(), and vec3i_normalize_to_vec3_ptr().

◆ vec3_orthonormal_basis_ptr()

void vec3_orthonormal_basis_ptr ( const vector3 * n,
vector3 * t,
vector3 * b )

Builds a tangent and bitangent orthonormal to n.

Parameters
nUnit normal.
tOutput tangent.
bOutput bitangent.

Definition at line 530 of file vector3_ptr.c.

References vec3_cross_ptr(), vec3_normalize_ptr(), VECMAT_FABS, and vector3::x.

Referenced by vec3_orthonormal_basis().

◆ vec3_project_ptr()

void vec3_project_ptr ( vector3 * res,
const vector3 * a,
const vector3 * b )

Projects a onto b.

Parameters
resOutput vector.
aFirst input vector.
bSecond input vector.

Definition at line 387 of file vector3_ptr.c.

References vec3_dot(), vector3::x, vector3::y, and vector3::z.

Referenced by vec3_project(), and vec3_reject_ptr().

◆ vec3_reflect_ptr()

void vec3_reflect_ptr ( vector3 * res,
const vector3 * incident,
const vector3 * normal )

Compute reflection of the incident vector over normal.

Parameters
resResult vector.
incidentIncident vector.
normalNormal vector.

Definition at line 227 of file vector3_ptr.c.

References vec3_dot(), vector3::x, vector3::y, and vector3::z.

Referenced by vec3_reflect().

◆ vec3_refract_ptr()

void vec3_refract_ptr ( vector3 * res,
const vector3 * incident,
const vector3 * normal,
const vm_float_t eta )

Compute refraction of the incident vector through normal with eta.

Parameters
resResult vector.
incidentIncident vector.
normalNormal vector.
etaRefraction index ratio.

Definition at line 243 of file vector3_ptr.c.

References vec3_dot(), VECMAT_SQRT, vector3::x, vector3::y, and vector3::z.

Referenced by vec3_refract().

◆ vec3_reject_ptr()

void vec3_reject_ptr ( vector3 * res,
const vector3 * a,
const vector3 * b )

Returns the component of a orthogonal to b.

Parameters
resOutput vector.
aFirst input vector.
bSecond input vector.

Definition at line 424 of file vector3_ptr.c.

References vec3_project_ptr(), vector3::x, vector3::y, and vector3::z.

Referenced by vec3_reject().

◆ vec3_rotate_axis_ptr()

void vec3_rotate_axis_ptr ( vector3 * res,
const vector3 * v,
const vector3 * axis,
const vm_float_t angle )

Rotates v around axis by angle radians.

Parameters
resOutput vector.
vInput vector.
axisRotation axis.
angleAngle in radians.

Definition at line 441 of file vector3_ptr.c.

References vec3_dot(), vec3_normalize_ptr(), VECMAT_COS, VECMAT_SIN, vector3::x, vector3::y, and vector3::z.

Referenced by vec3_rotate_axis().

◆ vec3_round_ptr()

void vec3_round_ptr ( vector3 * res,
const vector3 * v )

Component-wise round of a vector.

Parameters
resResult vector.
vVector.

Definition at line 213 of file vector3_ptr.c.

References VECMAT_ROUND, vector3::x, vector3::y, and vector3::z.

Referenced by vec3_round().

◆ vec3_saturate_ptr()

void vec3_saturate_ptr ( vector3 * res,
const vector3 * v )

Clamps each component to the range [0, 1].

Parameters
resOutput vector.
vInput vector.

Definition at line 362 of file vector3_ptr.c.

References vec3_clamp_scalar_ptr().

Referenced by vec3_saturate().

◆ vec3_scale_ptr()

void vec3_scale_ptr ( vector3 * res,
const vector3 * v,
const vm_float_t s )

Scales the vector by a scalar.

Parameters
resOutput vector.
vInput vector.
sScalar value.

Definition at line 294 of file vector3_ptr.c.

References vec3_mul_scalar_ptr().

Referenced by vec3_scale().

◆ vec3_sign_ptr()

void vec3_sign_ptr ( vector3 * res,
const vector3 * v )

Component-wise sign of a vector.

Parameters
resResult vector.
vVector.

Definition at line 174 of file vector3_ptr.c.

References vector3::x, vector3::y, and vector3::z.

Referenced by vec3_sign().

◆ vec3_slide_ptr()

void vec3_slide_ptr ( vector3 * res,
const vector3 * v,
const vector3 * normal )

Removes the component of v along normal.

Parameters
resOutput vector.
vInput vector.
normalSurface normal.

Definition at line 409 of file vector3_ptr.c.

References vec3_dot(), vector3::x, vector3::y, and vector3::z.

Referenced by vec3_slide().

◆ vec3_sub_ptr()

void vec3_sub_ptr ( vector3 * res,
const vector3 * a,
const vector3 * b )

Component-wise subtraction of two vectors.

Parameters
resResult vector.
aFirst vector.
bSecond vector.

Definition at line 28 of file vector3_ptr.c.

References vector3::x, vector3::y, and vector3::z.

Referenced by vec3_sub().

◆ vec3_sub_scalar_ptr()

void vec3_sub_scalar_ptr ( vector3 * res,
const vector3 * v,
const vm_float_t s )

Subtracts a scalar from each component.

Parameters
resOutput vector.
vInput vector.
sScalar value.

Definition at line 334 of file vector3_ptr.c.

References vector3::x, vector3::y, and vector3::z.

Referenced by vec3_sub_scalar().

◆ vec3_xy_ptr()

void vec3_xy_ptr ( vector2 * res,
const vector3 * v )

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

Parameters
resOutput vector.
vInput vector.

Definition at line 473 of file vector3_ptr.c.

References vector2::x, vector3::x, vector2::y, and vector3::y.

Referenced by vec3_xy().