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

Go to the source code of this file.

Functions

vm_float_t deg_to_rad (const vm_float_t degrees)
 Converts degrees to radians.
vm_float_t rad_to_deg (const vm_float_t radians)
 Converts radians to degrees.
bool vec2_eq (const vector2 a, const vector2 b)
 Returns true if two vectors are equal within VECMAT_EPSILON.
bool vec3_eq (const vector3 a, const vector3 b)
 Returns true if two vectors are equal within VECMAT_EPSILON.
bool vec4_eq (const vector4 a, const vector4 b)
 Returns true if two vectors are equal within VECMAT_EPSILON.
bool vec2i_eq (const vector2i a, const vector2i b)
 Returns true if two vectors are exactly equal.
bool vec3i_eq (const vector3i a, const vector3i b)
 Returns true if two vectors are exactly equal.
bool vec4i_eq (const vector4i a, const vector4i b)
 Returns true if two vectors are exactly equal.
bool mat2_eq (const matrix2 a, const matrix2 b)
 Returns true if two matrices are equal within VECMAT_EPSILON.
bool mat3_eq (const matrix3 a, const matrix3 b)
 Returns true if two matrices are equal within VECMAT_EPSILON.
bool mat4_eq (const matrix4 a, const matrix4 b)
 Returns true if two matrices are equal within VECMAT_EPSILON.
bool mat2i_eq (const matrix2i a, const matrix2i b)
 Returns true if two matrices are exactly equal.
bool mat3i_eq (const matrix3i a, const matrix3i b)
 Returns true if two matrices are exactly equal.
bool mat4i_eq (const matrix4i a, const matrix4i b)
 Returns true if two matrices are exactly equal.
bool quat_eq (const quaternion a, const quaternion b)
 Returns true if two quaternions are equal within VECMAT_EPSILON.
vector2 vec2 (const vm_float_t x, const vm_float_t y)
 Constructs a vector2 from x and y.
void vec2_assign (vector2 *dest, const vector2 *src)
 Copies src into dest.
void vec2_assign_xy (vector2 *dest, const vm_float_t x, const vm_float_t y)
 Assigns x and y to dest.
void vec2_add_assign (vector2 *dest, const vector2 *src)
 Adds src to dest in place.
vector2 vec2_from (const vector2i *v)
 Converts a vector2i to a vector2.
vector2i vec2i (const vm_int_t x, const vm_int_t y)
 Constructs a vector2i from x and y.
void vec2i_assign (vector2i *dest, const vector2i *src)
 Copies src into dest.
void vec2i_assign_xy (vector2i *dest, const vm_int_t x, const vm_int_t y)
 Assigns x and y to dest.
void vec2i_add_assign (vector2i *dest, const vector2i *src)
 Adds src to dest in place.
vector2i vec2i_from (const vector2 *v)
 Converts a vector2 to a vector2i by truncation.
vector2i vec2i_from_floored (const vector2 *v)
 Converts a vector2 to a vector2i by flooring each component.
vector2i vec2i_from_rounded (const vector2 *v)
 Converts a vector2 to a vector2i by rounding each component.
vector3 vec3 (const vm_float_t x, const vm_float_t y, const vm_float_t z)
 Constructs a vector3 from x, y, and z.
void vec3_assign (vector3 *dest, const vector3 *src)
 Copies src into dest.
void vec3_assign_xyz (vector3 *dest, const vm_float_t x, const vm_float_t y, const vm_float_t z)
 Assigns x, y, and z to dest.
void vec3_add_assign (vector3 *dest, const vector3 *src)
 Adds src to dest in place.
vector3 vec3_from (const vector3i *v)
 Converts a vector3i to a vector3.
vector3i vec3i (const vm_int_t x, const vm_int_t y, const vm_int_t z)
 Constructs a vector3i from x, y, and z.
void vec3i_assign (vector3i *dest, const vector3i *src)
 Copies src into dest.
void vec3i_assign_xyz (vector3i *dest, const vm_int_t x, const vm_int_t y, const vm_int_t z)
 Assigns x, y, and z to dest.
void vec3i_add_assign (vector3i *dest, const vector3i *src)
 Adds src to dest in place.
vector3i vec3i_from (const vector3 *v)
 Converts a vector3 to a vector3i by truncation.
vector3i vec3i_from_floored (const vector3 *v)
 Converts a vector3 to a vector3i by flooring each component.
vector3i vec3i_from_rounded (const vector3 *v)
 Converts a vector3 to a vector3i by rounding each component.

Function Documentation

◆ deg_to_rad()

vm_float_t deg_to_rad ( const vm_float_t degrees)

◆ mat2_eq()

bool mat2_eq ( const matrix2 a,
const matrix2 b )

Returns true if two matrices are equal within VECMAT_EPSILON.

Parameters
aFirst matrix.
bSecond matrix.
Returns
True if a and b are approximately equal.

Definition at line 115 of file vecmat.c.

References matrix2::v, VECMAT_EPSILON, and VECMAT_FABS.

◆ mat2i_eq()

bool mat2i_eq ( const matrix2i a,
const matrix2i b )

Returns true if two matrices are exactly equal.

Parameters
aFirst matrix.
bSecond matrix.
Returns
True if a and b are equal.

Definition at line 160 of file vecmat.c.

References matrix2i::v.

◆ mat3_eq()

bool mat3_eq ( const matrix3 a,
const matrix3 b )

Returns true if two matrices are equal within VECMAT_EPSILON.

Parameters
aFirst matrix.
bSecond matrix.
Returns
True if a and b are approximately equal.

Definition at line 130 of file vecmat.c.

References matrix3::v, VECMAT_EPSILON, and VECMAT_FABS.

◆ mat3i_eq()

bool mat3i_eq ( const matrix3i a,
const matrix3i b )

Returns true if two matrices are exactly equal.

Parameters
aFirst matrix.
bSecond matrix.
Returns
True if a and b are equal.

Definition at line 175 of file vecmat.c.

References matrix3i::v.

◆ mat4_eq()

bool mat4_eq ( const matrix4 a,
const matrix4 b )

Returns true if two matrices are equal within VECMAT_EPSILON.

Parameters
aFirst matrix.
bSecond matrix.
Returns
True if a and b are approximately equal.

Definition at line 145 of file vecmat.c.

References matrix4::v, VECMAT_EPSILON, and VECMAT_FABS.

◆ mat4i_eq()

bool mat4i_eq ( const matrix4i a,
const matrix4i b )

Returns true if two matrices are exactly equal.

Parameters
aFirst matrix.
bSecond matrix.
Returns
True if a and b are equal.

Definition at line 190 of file vecmat.c.

References matrix4i::v.

◆ quat_eq()

bool quat_eq ( const quaternion a,
const quaternion b )

Returns true if two quaternions are equal within VECMAT_EPSILON.

Parameters
aFirst quaternion.
bSecond quaternion.
Returns
True if a and b are approximately equal.

Definition at line 205 of file vecmat.c.

References VECMAT_EPSILON, VECMAT_FABS, quaternion::w, quaternion::x, quaternion::y, and quaternion::z.

◆ rad_to_deg()

vm_float_t rad_to_deg ( const vm_float_t radians)

Converts radians to degrees.

Parameters
radiansAngle in radians.
Returns
The angle in degrees.

Definition at line 25 of file vecmat.c.

References VM_RAD_TO_DEG.

Referenced by quat_to_axis_angle_ptr().

◆ vec2()

vector2 vec2 ( const vm_float_t x,
const vm_float_t y )

Constructs a vector2 from x and y.

Parameters
xX component.
yY component.
Returns
The resulting vector2.

Definition at line 220 of file vecmat.c.

◆ vec2_add_assign()

void vec2_add_assign ( vector2 * dest,
const vector2 * src )

Adds src to dest in place.

Parameters
destDestination vector.
srcVector to add.

Definition at line 256 of file vecmat.c.

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

◆ vec2_assign()

void vec2_assign ( vector2 * dest,
const vector2 * src )

Copies src into dest.

Parameters
destDestination vector.
srcSource vector.

Definition at line 231 of file vecmat.c.

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

◆ vec2_assign_xy()

void vec2_assign_xy ( vector2 * dest,
const vm_float_t x,
const vm_float_t y )

Assigns x and y to dest.

Parameters
destDestination vector.
xX component.
yY component.

Definition at line 244 of file vecmat.c.

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

◆ vec2_eq()

bool vec2_eq ( const vector2 a,
const vector2 b )

Returns true if two vectors are equal within VECMAT_EPSILON.

Parameters
aFirst vector.
bSecond vector.
Returns
True if a and b are approximately equal.

Definition at line 37 of file vecmat.c.

References VECMAT_EPSILON, VECMAT_FABS, vector2::x, and vector2::y.

◆ vec2_from()

vector2 vec2_from ( const vector2i * v)

Converts a vector2i to a vector2.

Parameters
vInput integer vector.
Returns
The resulting vector2.

Definition at line 268 of file vecmat.c.

References vector2i::x, and vector2i::y.

◆ vec2i()

vector2i vec2i ( const vm_int_t x,
const vm_int_t y )

Constructs a vector2i from x and y.

Parameters
xX component.
yY component.
Returns
The resulting vector2i.

Definition at line 280 of file vecmat.c.

◆ vec2i_add_assign()

void vec2i_add_assign ( vector2i * dest,
const vector2i * src )

Adds src to dest in place.

Parameters
destDestination vector.
srcVector to add.

Definition at line 316 of file vecmat.c.

References vector2i::x, and vector2i::y.

◆ vec2i_assign()

void vec2i_assign ( vector2i * dest,
const vector2i * src )

Copies src into dest.

Parameters
destDestination vector.
srcSource vector.

Definition at line 291 of file vecmat.c.

References vector2i::x, and vector2i::y.

◆ vec2i_assign_xy()

void vec2i_assign_xy ( vector2i * dest,
const vm_int_t x,
const vm_int_t y )

Assigns x and y to dest.

Parameters
destDestination vector.
xX component.
yY component.

Definition at line 304 of file vecmat.c.

References vector2i::x, and vector2i::y.

◆ vec2i_eq()

bool vec2i_eq ( const vector2i a,
const vector2i b )

Returns true if two vectors are exactly equal.

Parameters
aFirst vector.
bSecond vector.
Returns
True if a and b are equal.

Definition at line 79 of file vecmat.c.

References vector2i::x, and vector2i::y.

◆ vec2i_from()

vector2i vec2i_from ( const vector2 * v)

Converts a vector2 to a vector2i by truncation.

Parameters
vInput vector.
Returns
The resulting vector2i.

Definition at line 328 of file vecmat.c.

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

◆ vec2i_from_floored()

vector2i vec2i_from_floored ( const vector2 * v)

Converts a vector2 to a vector2i by flooring each component.

Parameters
vInput vector.
Returns
The resulting vector2i.

Definition at line 339 of file vecmat.c.

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

◆ vec2i_from_rounded()

vector2i vec2i_from_rounded ( const vector2 * v)

Converts a vector2 to a vector2i by rounding each component.

Parameters
vInput vector.
Returns
The resulting vector2i.

Definition at line 350 of file vecmat.c.

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

◆ vec3()

vector3 vec3 ( const vm_float_t x,
const vm_float_t y,
const vm_float_t z )

Constructs a vector3 from x, y, and z.

Parameters
xX component.
yY component.
zZ component.
Returns
The resulting vector3.

Definition at line 363 of file vecmat.c.

◆ vec3_add_assign()

void vec3_add_assign ( vector3 * dest,
const vector3 * src )

Adds src to dest in place.

Parameters
destDestination vector.
srcVector to add.

Definition at line 402 of file vecmat.c.

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

◆ vec3_assign()

void vec3_assign ( vector3 * dest,
const vector3 * src )

Copies src into dest.

Parameters
destDestination vector.
srcSource vector.

Definition at line 374 of file vecmat.c.

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

◆ vec3_assign_xyz()

void vec3_assign_xyz ( vector3 * dest,
const vm_float_t x,
const vm_float_t y,
const vm_float_t z )

Assigns x, y, and z to dest.

Parameters
destDestination vector.
xX component.
yY component.
zZ component.

Definition at line 389 of file vecmat.c.

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

◆ vec3_eq()

bool vec3_eq ( const vector3 a,
const vector3 b )

Returns true if two vectors are equal within VECMAT_EPSILON.

Parameters
aFirst vector.
bSecond vector.
Returns
True if a and b are approximately equal.

Definition at line 50 of file vecmat.c.

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

◆ vec3_from()

vector3 vec3_from ( const vector3i * v)

Converts a vector3i to a vector3.

Parameters
vInput integer vector.
Returns
The resulting vector3.

Definition at line 415 of file vecmat.c.

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

◆ vec3i()

vector3i vec3i ( const vm_int_t x,
const vm_int_t y,
const vm_int_t z )

Constructs a vector3i from x, y, and z.

Parameters
xX component.
yY component.
zZ component.
Returns
The resulting vector3i.

Definition at line 432 of file vecmat.c.

◆ vec3i_add_assign()

void vec3i_add_assign ( vector3i * dest,
const vector3i * src )

Adds src to dest in place.

Parameters
destDestination vector.
srcVector to add.

Definition at line 471 of file vecmat.c.

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

◆ vec3i_assign()

void vec3i_assign ( vector3i * dest,
const vector3i * src )

Copies src into dest.

Parameters
destDestination vector.
srcSource vector.

Definition at line 443 of file vecmat.c.

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

◆ vec3i_assign_xyz()

void vec3i_assign_xyz ( vector3i * dest,
const vm_int_t x,
const vm_int_t y,
const vm_int_t z )

Assigns x, y, and z to dest.

Parameters
destDestination vector.
xX component.
yY component.
zZ component.

Definition at line 458 of file vecmat.c.

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

◆ vec3i_eq()

bool vec3i_eq ( const vector3i a,
const vector3i b )

Returns true if two vectors are exactly equal.

Parameters
aFirst vector.
bSecond vector.
Returns
True if a and b are equal.

Definition at line 91 of file vecmat.c.

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

◆ vec3i_from()

vector3i vec3i_from ( const vector3 * v)

Converts a vector3 to a vector3i by truncation.

Parameters
vInput vector.
Returns
The resulting vector3i.

Definition at line 484 of file vecmat.c.

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

◆ vec3i_from_floored()

vector3i vec3i_from_floored ( const vector3 * v)

Converts a vector3 to a vector3i by flooring each component.

Parameters
vInput vector.
Returns
The resulting vector3i.

Definition at line 499 of file vecmat.c.

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

◆ vec3i_from_rounded()

vector3i vec3i_from_rounded ( const vector3 * v)

Converts a vector3 to a vector3i by rounding each component.

Parameters
vInput vector.
Returns
The resulting vector3i.

Definition at line 514 of file vecmat.c.

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

◆ vec4_eq()

bool vec4_eq ( const vector4 a,
const vector4 b )

Returns true if two vectors are equal within VECMAT_EPSILON.

Parameters
aFirst vector.
bSecond vector.
Returns
True if a and b are approximately equal.

Definition at line 64 of file vecmat.c.

References VECMAT_EPSILON, VECMAT_FABS, vector4::w, vector4::x, vector4::y, and vector4::z.

◆ vec4i_eq()

bool vec4i_eq ( const vector4i a,
const vector4i b )

Returns true if two vectors are exactly equal.

Parameters
aFirst vector.
bSecond vector.
Returns
True if a and b are equal.

Definition at line 103 of file vecmat.c.

References vector4i::w, vector4i::x, vector4i::y, and vector4i::z.