# mat4x2

Header: cglm/mat4x2.h

## Table of contents (click to go):

Macros:

1. GLM_MAT4X2_ZERO_INIT

2. GLM_MAT4X2_ZERO

Functions:

1. `glm_mat4x2_copy()`

2. `glm_mat4x2_zero()`

3. `glm_mat4x2_make()`

4. `glm_mat4x2_mul()`

5. `glm_mat4x2_mulv()`

6. `glm_mat4x2_transpose()`

7. `glm_mat4x2_scale()`

## Represented

mat4x2
| column 1 | column 2 | column 3 | column4
--- | --- | --- | --- | ---
row 1 | m00 | m10 | m20 | m30
row 2 | m01 | m11 | m21 | m31

## Functions documentation

void glm_mat4x2_copy(mat4x2 mat, mat4x2 dest)

  copy mat4x2 to another one (dest).

  Parameters:
    [in] mat source
    [out] dest destination

void glm_mat4x2_zero(mat4x2 mat)

  make given matrix zero

  Parameters:
    [in,out] mat matrix

void glm_mat4x2_make(const float *__restrict src, mat4x2 dest)

  Create mat4x2 matrix from pointer

  Note

  @src must contain at least 8 elements.

  Parameters:
    [in] src pointer to an array of floats
    [out] dest destination matrix4x2

void glm_mat4x2_mul(mat4x2 m1, mat2x4 m2, mat2 dest)

  multiply m1 and m2 to dest

      glm_mat4x2_mul(mat4x2, mat2x4, mat2);

  Parameters:
    [in] m1 left matrix (mat4x2)
    [in] m2 right matrix (mat2x4)
    [out] dest destination matrix (mat2)

  mat4x2
  | column 1 | column 2 | column 3 | column 4
  --- | --- | --- | --- | ---
  row 1 | a00 | a10 | a20 | a30
  row 2 | a01 | a11 | a21 | a31

  mat2x4
  | column 1 | column 2
  --- | --- | ---
  row 1 | b00 | b10
  row 2 | b01 | b11
  row 3 | b02 | b12
  row 4 | b03 | b13

  mat2x2
  | column 1 | column 2
  --- | --- | ---
  row 1 | a00 * b00 + a10 * b01 + a20 * b02 + a30 * b03 | a00 * b10 + a10 * b11 + a20 * b12 + a30 * b13
  row 2 | a01 * b00 + a11 * b01 + a21 * b02 + a31 * b03 | a01 * b10 + a11 * b11 + a21 * b12 + a31 * b13

void glm_mat4x2_mulv(mat4x2 m, vec4 v, vec2 dest)

  multiply mat4x2 with vec4 (column vector) and store in dest vector

  Parameters:
    [in] m mat4x2 (left)
    [in] v vec4 (right, column vector)
    [out] dest destination (result, column vector)

  mat4x2
  | column 1 | column 2 | column 3
  --- | --- | --- | ---
  row 1 | m00 | m10 | m20
  row 2 | m01 | m11 | m21
  row 3 | m02 | m12 | m22
  row 4 | m03 | m13 | m23

  column vec4 (1x4)
  | column 1
  --- | ---
  row 1 | v0
  row 2 | v1
  row 3 | v2
  row 4 | v3

  column vec2 (1x2)
  | column 1
  --- | ---
  row 1 | m00 * v0 + m10 * v1 + m20 * v2 + m30 * v3
  row 2 | m01 * v0 + m11 * v1 + m21 * v2 + m31 * v3

void glm_mat4x2_transpose(mat4x2 m, mat2x4 dest)

  transpose matrix and store in dest

  Parameters:
    [in] m matrix
    [out] dest destination

void glm_mat4x2_scale(mat4x2 m, float s)

  multiply matrix with scalar

  Parameters:
    [in, out] m matrix
    [in] s scalar