# [−][src]Crate vecmath

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_mat3_mul_col | Computes column vector in column matrix product. |

col_mat3_mul | Multiplies two matrices. |

col_mat3_row | Returns a row vector of a column matrix. |

col_mat3_transform | Transforms a 3D vector through a matrix. |

col_mat4_mul_col | Computes column vector in column matrix product. |

col_mat4_mul | Multiplies two matrices. |

col_mat4_row | Returns a row vector of a column matrix. |

col_mat4_transform | Transforms a 4D vector through a matrix. |

col_mat2x3_row | Returns a row vector of a column 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_col | Computes column vector in column matrix product. |

col_mat3x2_mul | Multiplies two matrices. |

col_mat3x2_row | Returns a row vector of a column matrix. |

col_mat3x4_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_mat4x3_mul_col | Computes column vector in column matrix product. |

col_mat4x3_mul | Multiplies two matrices. |

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. |

mat3_id | Constructs identity matrix. |

mat3_cast | Converts to another matrix type. |

mat3_sub | Subtracts 'b' from 'a'. |

mat3_add | Adds two matrices. |

mat3_transposed | Constructs the transpose of a matrix. |

mat3_det | Computes the determinant of a matrix. |

mat3_inv_det | Computes inverse determinant of a 3x3 matrix. |

mat3_inv | Computes the inverse of a 3x3 matrix. |

mat4_id | Constructs identity matrix. |

mat4_cast | Converts to another matrix type. |

mat4_sub | Subtracts 'b' from 'a'. |

mat4_add | Adds two matrices. |

mat4_transposed | Constructs the transpose of a matrix. |

mat4_det | Computes the determinant of a 4x4 matrix. |

mat4_inv_det | Computes the inverse determinant of a 4x4 matrix. |

mat4_inv | Computes the inverse of a 4x4 matrix. |

mat2x3_id | Constructs identity matrix. |

mat2x3_cast | Converts to another matrix type. |

mat2x3_sub | Subtracts 'b' from 'a'. |

mat2x3_add | Adds two matrices. |

mat2x3_transposed | Constructs the transpose of a matrix. |

mat2x3_det | Computes the determinant of a matrix. |

mat2x3_inv_det | Computes inverse determinant of a 2x3 matrix. |

mat2x3_inv | Computes the inverse of a 2x3 matrix. |

mat3x2_id | Constructs identity matrix. |

mat3x2_cast | Converts to another matrix type. |

mat3x2_sub | Subtracts 'b' from 'a'. |

mat3x2_add | Adds two matrices. |

mat3x2_transposed | Constructs the transpose of a matrix. |

mat3x2_det | Computes the determinant of a matrix. |

mat3x2_inv_det | Computes inverse determinant of a 3x2 matrix. |

mat3x2_inv | Computes the inverse of a 3x2 matrix. |

mat3x4_id | Constructs identity matrix. |

mat3x4_cast | Converts to another matrix type. |

mat3x4_sub | Subtracts 'b' from 'a'. |

mat3x4_add | Adds two matrices. |

mat3x4_transposed | Constructs the transpose of a matrix. |

mat3x4_det | Computes the determinant of a matrix. |

mat3x4_inv_det | Computes inverse determinant of a 3x4 matrix. |

mat3x4_inv | Computes the inverse of a 3x4 matrix. |

mat4x3_id | Constructs identity matrix. |

mat4x3_cast | Converts to another matrix type. |

mat4x3_sub | Subtracts 'b' from 'a'. |

mat4x3_add | Adds two matrices. |

mat4x3_transposed | Constructs the transpose of a matrix. |

mat4x3_det | Computes the determinant of a matrix. |

mat4x3_inv_det | Computes inverse determinant of a 4x3 matrix. |

mat4x3_inv | Computes the inverse of a 4x3 matrix. |

row_mat3_mul_row | Computes row vector in row matrix product. |

row_mat3_mul | Multiplies two matrices. |

row_mat3_col | Returns a column vector of a row matrix. |

row_mat3_transform | Transforms a 3D vector through a matrix. |

row_mat4_mul_row | Computes row vector in row matrix product. |

row_mat4_mul | Multiplies two matrices. |

row_mat4_col | Returns a column vector of a row matrix. |

row_mat4_transform | Transforms a 4D vector through a matrix. |

row_mat2x3_mul_row | Computes row vector in row matrix product. |

row_mat2x3_mul | Multiplies two matrices. |

row_mat2x3_col | Returns a column vector of a row matrix. |

row_mat2x3_transform_pos2 | Transforms a 2D position through matrix. |

row_mat2x3_transform_vec2 | Transforms a 2D vector through 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_mul_row | Computes row vector in row matrix product. |

row_mat3x4_mul | Multiplies two matrices. |

row_mat3x4_col | Returns a column vector of a row matrix. |

row_mat3x4_transform_pos3 | Transforms a 3D position through matrix. |

row_mat3x4_transform_vec3 | Transforms a 3D vector through matrix. |

row_mat4x3_col | Returns a column vector of a row matrix. |

vec2_cast | Converts to another vector type. |

vec2_sub | Subtracts 'b' from 'a'. |

vec2_add | Adds two vectors. |

vec2_mul | Multiplies two vectors component wise. |

vec2_dot | Computes the dot product. |

vec2_square_len | Computes the square length of a vector. |

vec2_cross | Computes the cross product. |

vec2_scale | Multiplies the vector with a scalar. |

vec2_neg | Negates the vector. |

vec2_len | Computes the length of vector. |

vec2_inv_len | Computes the inverse length of a vector. |

vec2_normalized | Computes the normalized. |

vec2_normalized_sub | Computes the normalized difference between two vectors. |

vec3_cast | Converts to another vector type. |

vec3_sub | Subtracts 'b' from 'a'. |

vec3_add | Adds two vectors. |

vec3_mul | Multiplies two vectors component wise. |

vec3_dot | Computes the dot product. |

vec3_square_len | Computes the square length of a vector. |

vec3_cross | Computes the cross product. |

vec3_scale | Multiplies the vector with a scalar. |

vec3_neg | Negates the vector. |

vec3_len | Computes the length of vector. |

vec3_inv_len | Computes the inverse length of a vector. |

vec3_normalized | Computes the normalized. |

vec3_normalized_sub | Computes the normalized difference between two vectors. |

vec4_cast | Converts to another vector type. |

vec4_sub | Subtracts 'b' from 'a'. |

vec4_add | Adds two vectors. |

vec4_mul | Multiplies two vectors component wise. |

vec4_dot | Computes the dot product. |

vec4_square_len | Computes the square length of a vector. |

vec4_scale | Multiplies the vector with a scalar. |

vec4_neg | Negates the vector. |

vec4_len | Computes the length of vector. |

vec4_inv_len | Computes the inverse length of a vector. |

vec4_normalized | Computes the normalized. |

vec4_normalized_sub | Computes the normalized difference between two vectors. |

vec3_dot_pos2 | Computes transformed position component. |

vec3_dot_vec2 | Computes transformed vector component. |

vec4_dot_pos3 | Computes transformed position component. |

vec4_dot_vec3 | Computes transformed vector component. |

## Type Definitions

Matrix3 | A 3x3 matrix. |

Matrix4 | A 4x4 matrix. |

Matrix2x3 | A 2x3 matrix. |

Matrix3x2 | A 3x2 matrix. |

Matrix3x4 | A 3x4 matrix. |

Matrix4x3 | A 4x3 matrix. |

Vector2 | A 2D vector. |

Vector3 | A 3D vector. |

Vector4 | A 4D vector. |