Crate vecmath [] [src]

A simple and generic library for vector math.

Notice that row major is mathematical standard, while OpenGL uses column major format. This library supports both formats, prefixing functions with 'row_' or 'col_'.

For row major affine transforms, use Matrix2x3 (2D) and Matrix3x4 (3D). For column major affine transforms, use Matrix3x2 (2D) and Matrix4x3 (3D).

If you are using Matrix3 or Matrix4, then you need to pick either row or column major.

Notice that there are two kinds of transforms: Positions and vectors. The vector transforms ignores the translate component. For example, row_mat2x3_transform_pos2 transforms a position. row_mat2x3_transform_vec2 transforms a vector.

Modules

traits

Various useful traits

Functions

col_mat2x3_row

Returns a row vector of a column matrix.

col_mat3_mul

Multiplies two matrices.

col_mat3_mul_col

Computes column vector in column matrix product.

col_mat3_row

Returns a row vector of a column matrix.

col_mat3_transform

Transforms a 3D vector through a matrix.

col_mat3_transform_pos2

Transforms a 2D position through column matrix.

col_mat3_transform_vec2

Transforms a 2D vector through column matrix.

col_mat3x2_mul

Multiplies two matrices.

col_mat3x2_mul_col

Computes column vector in column matrix product.

col_mat3x2_row

Returns a row vector of a column matrix.

col_mat3x2_transform_pos2

Transforms a 2D position through matrix.

col_mat3x2_transform_vec2

Transforms a 2D vector through matrix.

col_mat3x4_row

Returns a row vector of a column matrix.

col_mat4_mul

Multiplies two matrices.

col_mat4_mul_col

Computes column vector in column matrix product.

col_mat4_row

Returns a row vector of a column matrix.

col_mat4_transform

Transforms a 4D vector through a matrix.

col_mat4x3_mul

Multiplies two matrices.

col_mat4x3_mul_col

Computes column vector in column matrix product.

col_mat4x3_row

Returns a column vector of a row matrix.

col_mat4x3_transform_pos3

Transforms a 3D position through matrix.

col_mat4x3_transform_vec3

Transforms a 3D vector through matrix.

mat2x3_add

Adds two matrices.

mat2x3_cast

Converts to another matrix type.

mat2x3_det

Computes the determinant of a matrix.

mat2x3_id

Constructs identity matrix.

mat2x3_inv

Computes the inverse of a 2x3 matrix.

mat2x3_inv_det

Computes inverse determinant of a 2x3 matrix.

mat2x3_sub

Subtracts 'b' from 'a'.

mat2x3_transposed

Constructs the transpose of a matrix.

mat3_add

Adds two matrices.

mat3_cast

Converts to another matrix type.

mat3_det

Computes the determinant of a matrix.

mat3_id

Constructs identity matrix.

mat3_inv

Computes the inverse of a 3x3 matrix.

mat3_inv_det

Computes inverse determinant of a 3x3 matrix.

mat3_sub

Subtracts 'b' from 'a'.

mat3_transposed

Constructs the transpose of a matrix.

mat3x2_add

Adds two matrices.

mat3x2_cast

Converts to another matrix type.

mat3x2_det

Computes the determinant of a matrix.

mat3x2_id

Constructs identity matrix.

mat3x2_inv

Computes the inverse of a 3x2 matrix.

mat3x2_inv_det

Computes inverse determinant of a 3x2 matrix.

mat3x2_sub

Subtracts 'b' from 'a'.

mat3x2_transposed

Constructs the transpose of a matrix.

mat3x4_add

Adds two matrices.

mat3x4_cast

Converts to another matrix type.

mat3x4_det

Computes the determinant of a matrix.

mat3x4_id

Constructs identity matrix.

mat3x4_inv

Computes the inverse of a 3x4 matrix.

mat3x4_inv_det

Computes inverse determinant of a 3x4 matrix.

mat3x4_sub

Subtracts 'b' from 'a'.

mat3x4_transposed

Constructs the transpose of a matrix.

mat4_add

Adds two matrices.

mat4_cast

Converts to another matrix type.

mat4_det

Computes the determinant of a 4x4 matrix.

mat4_id

Constructs identity matrix.

mat4_inv

Computes the inverse of a 4x4 matrix.

mat4_inv_det

Computes the inverse determinant of a 4x4 matrix.

mat4_sub

Subtracts 'b' from 'a'.

mat4_transposed

Constructs the transpose of a matrix.

mat4x3_add

Adds two matrices.

mat4x3_cast

Converts to another matrix type.

mat4x3_det

Computes the determinant of a matrix.

mat4x3_id

Constructs identity matrix.

mat4x3_inv

Computes the inverse of a 4x3 matrix.

mat4x3_inv_det

Computes inverse determinant of a 4x3 matrix.

mat4x3_sub

Subtracts 'b' from 'a'.

mat4x3_transposed

Constructs the transpose of a matrix.

row_mat2x3_col

Returns a column vector of a row matrix.

row_mat2x3_mul

Multiplies two matrices.

row_mat2x3_mul_row

Computes row vector in row matrix product.

row_mat2x3_transform_pos2

Transforms a 2D position through matrix.

row_mat2x3_transform_vec2

Transforms a 2D vector through matrix.

row_mat3_col

Returns a column vector of a row matrix.

row_mat3_mul

Multiplies two matrices.

row_mat3_mul_row

Computes row vector in row matrix product.

row_mat3_transform

Transforms a 3D vector through a matrix.

row_mat3_transform_pos2

Transforms a 2D position through row matrix.

row_mat3_transform_vec2

Transforms a 2D vector through row matrix.

row_mat3x2_col

Returns a column vector of a row matrix.

row_mat3x4_col

Returns a column vector of a row matrix.

row_mat3x4_mul

Multiplies two matrices.

row_mat3x4_mul_row

Computes row vector in row matrix product.

row_mat3x4_transform_pos3

Transforms a 3D position through matrix.

row_mat3x4_transform_vec3

Transforms a 3D vector through matrix.

row_mat4_col

Returns a column vector of a row matrix.

row_mat4_mul

Multiplies two matrices.

row_mat4_mul_row

Computes row vector in row matrix product.

row_mat4_transform

Transforms a 4D vector through a matrix.

row_mat4x3_col

Returns a column vector of a row matrix.

vec2_add

Adds two vectors.

vec2_cast

Converts to another vector type.

vec2_cross

Computes the cross product.

vec2_dot

Computes the dot product.

vec2_inv_len

Computes the inverse length of a vector.

vec2_len

Computes the length of vector.

vec2_mul

Multiplies two vectors component wise.

vec2_neg

Negates the vector.

vec2_normalized

Computes the normalized.

vec2_normalized_sub

Computes the normalized difference between two vectors.

vec2_scale

Multiplies the vector with a scalar.

vec2_square_len

Computes the square length of a vector.

vec2_sub

Subtracts 'b' from 'a'.

vec3_add

Adds two vectors.

vec3_cast

Converts to another vector type.

vec3_cross

Computes the cross product.

vec3_dot

Computes the dot product.

vec3_dot_pos2

Computes transformed position component.

vec3_dot_vec2

Computes transformed vector component.

vec3_inv_len

Computes the inverse length of a vector.

vec3_len

Computes the length of vector.

vec3_mul

Multiplies two vectors component wise.

vec3_neg

Negates the vector.

vec3_normalized

Computes the normalized.

vec3_normalized_sub

Computes the normalized difference between two vectors.

vec3_scale

Multiplies the vector with a scalar.

vec3_square_len

Computes the square length of a vector.

vec3_sub

Subtracts 'b' from 'a'.

vec4_add

Adds two vectors.

vec4_cast

Converts to another vector type.

vec4_dot

Computes the dot product.

vec4_dot_pos3

Computes transformed position component.

vec4_dot_vec3

Computes transformed vector component.

vec4_inv_len

Computes the inverse length of a vector.

vec4_len

Computes the length of vector.

vec4_mul

Multiplies two vectors component wise.

vec4_neg

Negates the vector.

vec4_normalized

Computes the normalized.

vec4_normalized_sub

Computes the normalized difference between two vectors.

vec4_scale

Multiplies the vector with a scalar.

vec4_square_len

Computes the square length of a vector.

vec4_sub

Subtracts 'b' from 'a'.

Type Definitions

Matrix2x3

A 2x3 matrix.

Matrix3

A 3x3 matrix.

Matrix3x2

A 3x2 matrix.

Matrix3x4

A 3x4 matrix.

Matrix4

A 4x4 matrix.

Matrix4x3

A 4x3 matrix.

Vector2

A 2D vector.

Vector3

A 3D vector.

Vector4

A 4D vector.