# shz::xmtrx

Source: https://sh4zam.com/api/cpp/xmtrx/

Static structure around the 4x4 XMTRX FP register back-bank.

This structure provides the C++ bindings to the XMTRX API as a series of static member functions wrapping the C API.

- **Header:** `#include <sh4zam/shz_xmtrx.hpp>` ([source](https://github.com/gyrovorbis/sh4zam/blob/ba1e30c88d49df0311870b229e1dd860ef26c477/include/sh4zam/shz_xmtrx.hpp#L34))

## Static functions

### read

```cpp
static float read(reg xf) noexcept
```

C++ wrapper around `shz_xmtrx_read()`.

Calls: [`shz_xmtrx_read()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_read/), [`shz_xmtrx_reg()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_reg/)

### write

```cpp
static void write(reg xf, float value) noexcept
```

C++ wrapper around `shz_xmtrx_write()`.

Calls: [`shz_xmtrx_write()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_write/), [`shz_xmtrx_reg()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_reg/)

### read_row

```cpp
static vec4 read_row(unsigned int index) noexcept
```

C++ wrapper around `shz_xmtrx_read_row()`.

Calls: [`shz_xmtrx_read_row()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_read_row/)

### read_col

```cpp
static vec4 read_col(unsigned int index) noexcept
```

C++ wrapper around `shz_xmtrx_read_col()`.

Calls: [`shz_xmtrx_read_col()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_read_col/)

### write_row

```cpp
static void write_row(unsigned int index, const vec4 &vector) noexcept
```

C++ wrapper around `shz_xmtrx_write_row()`.

Calls: [`shz_xmtrx_write_row()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_write_row/)

### write_col

```cpp
static void write_col(unsigned int index, const vec4 &vector) noexcept
```

C++ wrapper around `shz_xmtrx_write_col()`.

Calls: [`shz_xmtrx_write_col()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_write_col/)

### swap_rows

```cpp
static void swap_rows(unsigned int index1, unsigned int index2) noexcept
```

C++ wrapper around `shz_xmtrx_swap_rows()`.

Calls: [`shz_xmtrx_swap_rows()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_swap_rows/)

### swap_cols

```cpp
static void swap_cols(unsigned int index1, unsigned int index2) noexcept
```

C++ wrapper around `shz_xmtrx_swap_cols()`.

Calls: [`shz_xmtrx_swap_cols()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_swap_cols/)

### load

```cpp
static void load(const shz_mat4x4_t &mat4) noexcept
static void load(const float cArray[16]) noexcept
static void load(const std::array< float, 16 > &array) noexcept
static void load(const shz_mat3x4_t &mat) noexcept
static void load(const shz_mat2x2_t &mat) noexcept
static void load(const shz_mat3x3_t &mat) noexcept
```

C++ wrapper around `shz_xmtrx_load_4x4()`.

Calls: [`shz_xmtrx_load_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_4x4/), [`shz_xmtrx_load_unaligned_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_unaligned_4x4/), [`shz_xmtrx_load_3x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_3x4/), [`shz_xmtrx_load_2x2()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_2x2/), [`shz_xmtrx_load_3x3()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_3x3/)

### load_transpose

```cpp
static void load_transpose(const shz_mat4x4_t &mat4) noexcept
static void load_transpose(const float cArray[16]) noexcept
static void load_transpose(const std::array< float, 16 > &array) noexcept
static void load_transpose(const shz_mat3x4_t &mat) noexcept
static void load_transpose(const shz_mat3x3_t &mat) noexcept
```

C++ wrapper around `shz_xmtrx_load_transpose_4x4()`.

Calls: [`shz_xmtrx_load_transpose_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_transpose_4x4/), [`shz_xmtrx_load_transpose_unaligned_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_transpose_unaligned_4x4/), [`shz_xmtrx_load_transpose_3x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_transpose_3x4/), [`shz_xmtrx_load_transpose_3x3()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_transpose_3x3/)

### load_wxyz

```cpp
static void load_wxyz(const shz_mat4x4_t &mat4) noexcept
```

C++ wrapper around `shz_xmtrx_load_wxyz_4x4()`.

Calls: [`shz_xmtrx_load_wxyz_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_wxyz_4x4/)

### load_cols

```cpp
static void load_cols(const shz_vec4_t &c1, const shz_vec4_t &c2, const shz_vec4_t &c3, const shz_vec4_t &c4) noexcept
static void load_cols(const shz_vec3_t &c1, const shz_vec3_t &c2, const shz_vec3_t &c3, const shz_vec3_t &c4) noexcept
```

C++ wrapper around `shz_xmtrx_load_cols_4x4()`.

Calls: [`shz_xmtrx_load_cols_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_cols_4x4/), [`shz_xmtrx_load_cols_3x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_cols_3x4/)

### load_rows

```cpp
static void load_rows(const shz_vec4_t &r1, const shz_vec4_t &r2, const shz_vec4_t &r3, const shz_vec4_t &r4) noexcept
static void load_rows(const shz_vec4_t &r1, const shz_vec4_t &r2, const shz_vec4_t &r3) noexcept
```

C++ wrapper around `shz_xmtrx_load_rows_4x4()`.

Calls: [`shz_xmtrx_load_rows_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_rows_4x4/), [`shz_xmtrx_load_rows_3x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_rows_3x4/)

### store

```cpp
static void store(shz_mat4x4_t *mat) noexcept
static void store(float cArray[16]) noexcept
static void store(shz_mat3x4_t *mat) noexcept
static void store(std::array< float, 16 > *array) noexcept
static void store(shz_mat2x2_t *mat) noexcept
static void store(shz_mat3x3_t *mat) noexcept
```

C++ wrapper around `shz_xmtrx_store_4x4()`.

Calls: [`shz_xmtrx_store_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_store_4x4/), [`shz_xmtrx_store_unaligned_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_store_unaligned_4x4/), [`shz_xmtrx_store_3x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_store_3x4/), [`shz_xmtrx_store_2x2()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_store_2x2/), [`shz_xmtrx_store_3x3()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_store_3x3/)

### store_transpose

```cpp
static void store_transpose(shz_mat4x4_t *mat) noexcept
static void store_transpose(float cArray[16]) noexcept
static void store_transpose(std::array< float, 16 > *array) noexcept
static void store_transpose(shz_mat3x4_t *mat) noexcept
static void store_transpose(shz_mat3x3_t *mat) noexcept
```

C++ wrapper around `shz_xmtrx_store_transpose_4x4()`.

Calls: [`shz_xmtrx_store_transpose_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_store_transpose_4x4/), [`shz_xmtrx_store_transpose_unaligned_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_store_transpose_unaligned_4x4/), [`shz_xmtrx_store_transpose_3x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_store_transpose_3x4/), [`shz_xmtrx_store_transpose_3x3()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_store_transpose_3x3/)

### init_identity

```cpp
static void init_identity() noexcept
```

C++ wrapper around `shz_xmtrx_init_identity()`.

Calls: [`shz_xmtrx_init_identity()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_identity/)

### init_identity_safe

```cpp
static void init_identity_safe() noexcept
```

C++ wrapper around `shz_xmtrx_init_identity_safe()`.

Calls: [`shz_xmtrx_init_identity()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_identity/)

### init_zero

```cpp
static void init_zero() noexcept
```

C++ wrapper around `shz_xmtrx_init_zero()`.

Calls: [`shz_xmtrx_init_zero()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_zero/)

### init_one

```cpp
static void init_one() noexcept
```

C++ wrapper around `shz_xmtrx_init_one()`.

Calls: [`shz_xmtrx_init_one()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_one/)

### init_fill

```cpp
static void init_fill(float value) noexcept
```

C++ wrapper around `shz_xmtrx_init_fill()`.

Calls: [`shz_xmtrx_init_fill()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_fill/)

### init_translation

```cpp
static void init_translation(float x, float y, float z) noexcept
static void init_translation(const vec3 &v) noexcept
```

C++ wrapper around `shz_xmtrx_init_translation()`.

Calls: [`shz_xmtrx_init_translation()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_translation/)

### init_scale

```cpp
static void init_scale(float x, float y, float z) noexcept
static void init_scale(const vec3 &v) noexcept
```

C++ wrapper around `shz_xmtrx_init_scale()`.

Calls: [`shz_xmtrx_init_scale()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_scale/)

### init_rotation_x

```cpp
static void init_rotation_x(float x) noexcept
```

C++ wrapper around `shz_xmtrx_init_rotation_x()`.

Calls: [`shz_xmtrx_init_rotation_x()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_rotation_x/)

### init_rotation_y

```cpp
static void init_rotation_y(float y) noexcept
```

C++ wrapper around `shz_xmtrx_init_rotation_y()`.

Calls: [`shz_xmtrx_init_rotation_y()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_rotation_y/)

### init_rotation_z

```cpp
static void init_rotation_z(float z) noexcept
```

C++ wrapper around `shz_xmtrx_init_rotation_z()`.

Calls: [`shz_xmtrx_init_rotation_z()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_rotation_z/)

### init_rotation_xyz

```cpp
static void init_rotation_xyz(float x, float y, float z) noexcept
```

C++ wrapper around `shz_xmtrx_init_rotation_xyz()`.

Calls: [`shz_xmtrx_init_rotation_xyz()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_rotation_xyz/)

### init_rotation_zyx

```cpp
static void init_rotation_zyx(float z, float y, float x) noexcept
```

C++ wrapper around `shz_xmtrx_init_rotation_zyx()`.

Calls: [`shz_xmtrx_init_rotation_zyx()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_rotation_zyx/)

### init_rotation_zxy

```cpp
static void init_rotation_zxy(float z, float x, float y) noexcept
```

C++ wrapper around `shz_xmtrx_init_rotation_zxy()`.

Calls: [`shz_xmtrx_init_rotation_zxy()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_rotation_zxy/)

### init_rotation_yxz

```cpp
static void init_rotation_yxz(float y, float x, float z) noexcept
```

C++ wrapper around `shz_xmtrx_init_rotation_yxz()`.

Calls: [`shz_xmtrx_init_rotation_yxz()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_rotation_yxz/)

### init_rotation

```cpp
static void init_rotation(float angle, float x, float y, float z) noexcept
static void init_rotation(float angle, const vec3 &axis) noexcept
```

C++ wrapper around `shz_xmtrx_init_rotation()`.

Calls: [`shz_xmtrx_init_rotation()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_rotation/)

### init_rotation_dir

```cpp
static void init_rotation_dir(float angle, const vec3 &dir) noexcept
```

C++ wrapper around `shz_xmtrx_init_rotation_dir()`.

Calls: [`shz_xmtrx_init_rotation_dir()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_rotation_dir/)

### init_diagonal

```cpp
static void init_diagonal(float x, float y, float z, float w) noexcept
static void init_diagonal(const vec4 &v) noexcept
```

C++ wrapper around `shz_xmtrx_init_diagonal()`.

Calls: [`shz_xmtrx_init_diagonal()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_diagonal/)

### init_upper_triangular

```cpp
static void init_upper_triangular(float col1, const vec2 &col2, const vec3 &col3, const vec4 &col4) noexcept
```

C++ wrapper around `shz_xmtrx_init_upper_triangular()`.

Calls: [`shz_xmtrx_init_upper_triangular()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_upper_triangular/)

### init_lower_triangular

```cpp
static void init_lower_triangular(const vec4 &col1, const vec3 &col2, const vec2 &col3, float col4) noexcept
```

C++ wrapper around `shz_xmtrx_init_lower_triangular()`.

Calls: [`shz_xmtrx_init_lower_triangular()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_lower_triangular/)

### init_symmetric_skew

```cpp
static void init_symmetric_skew(float x, float y, float z) noexcept
```

C++ wrapper around `shz_xmtrx_init_symmetric_skew()`.

Calls: [`shz_xmtrx_init_symmetric_skew()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_symmetric_skew/)

### init_outer_product

```cpp
static void init_outer_product(const vec4 &a, const vec4 &b) noexcept
```

C++ wrapper around `shz_xmtrx_init_outer_product()`.

Calls: [`shz_xmtrx_init_outer_product()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_outer_product/)

### init_screen

```cpp
static void init_screen(float width, float height) noexcept
```

C++ wrapper around `shz_xmtrx_init_screen()`.

Calls: [`shz_xmtrx_init_screen()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_screen/)

### init_lookat

```cpp
static void init_lookat(const vec3 &eye, const vec3 &center, const vec3 &up) noexcept
```

C++ wrapper around `shz_xmtrx_init_lookat()`.

Calls: [`shz_xmtrx_init_lookat()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_lookat/)

### init_ortho

```cpp
static void init_ortho(float left, float right, float bottom, float top, float znear, float zfar) noexcept
```

C++ wrapper around `shz_xmtrx_init_ortho()`.

Calls: [`shz_xmtrx_init_ortho()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_ortho/)

### init_frustum

```cpp
static void init_frustum(float left, float right, float bottom, float top, float znear, float zfar) noexcept
```

C++ wrapper around `shz_xmtrx_init_frustum()`.

Calls: [`shz_xmtrx_init_frustum()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_frustum/)

### init_perspective

```cpp
static void init_perspective(float fov, float aspect, float znear) noexcept
```

C++ wrapper around `shz_xmtrx_init_perspective()`.

Calls: [`shz_xmtrx_init_perspective()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_perspective/)

### init_rotation_quat

```cpp
static void init_rotation_quat(const quat &q) noexcept
```

C++ wrapper around `shz_xmtrx_init_rotation_quat()`.

Calls: [`shz_xmtrx_init_rotation_quat()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_rotation_quat/)

### init_permutation_wxyz

```cpp
static void init_permutation_wxyz() noexcept
```

C++ wrapper around `shz_xmtrx_init_permutation_wxyz()`.

Calls: [`shz_xmtrx_init_permutation_wxyz()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_permutation_wxyz/)

### init_permutation_yzwx

```cpp
static void init_permutation_yzwx() noexcept
```

C++ wrapper around `shz_xmtrx_init_permutation_yzwx()`.

Calls: [`shz_xmtrx_init_permutation_yzwx()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_permutation_yzwx/)

### init_permutation_wzyx

```cpp
static void init_permutation_wzyx() noexcept
```

C++ wrapper around `shz_xmtrx_init_permutation_wzyx()`.

Calls: [`shz_xmtrx_init_permutation_wzyx()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_init_permutation_wzyx/)

### apply

```cpp
static void apply(const shz_mat4x4_t &mat4) noexcept
static void apply(const float cArray[16]) noexcept
static void apply(const std::array< float, 16 > &array) noexcept
static void apply(const shz_mat3x4_t &mat) noexcept
static void apply(const shz_mat3x3_t &mat) noexcept
```

C++ wrapper around `shz_xmtrx_apply_4x4()`.

Calls: [`shz_xmtrx_apply_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_4x4/), [`shz_xmtrx_apply_unaligned_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_unaligned_4x4/), [`shz_xmtrx_apply_3x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_3x4/), [`shz_xmtrx_apply_3x3()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_3x3/)

### apply_transpose

```cpp
static void apply_transpose(const shz_mat4x4_t &mat4) noexcept
static void apply_transpose(const float cArray[16]) noexcept
static void apply_transpose(const std::array< float, 16 > &array) noexcept
static void apply_transpose(const shz_mat3x4_t &mat) noexcept
static void apply_transpose(const shz_mat3x3_t &mat) noexcept
```

C++ wrapper around `shz_xmtrx_apply_transpose_4x4()`.

Calls: [`shz_xmtrx_apply_transpose_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_transpose_4x4/), [`shz_xmtrx_apply_transpose_unaligned_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_transpose_unaligned_4x4/), [`shz_xmtrx_apply_transpose_3x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_transpose_3x4/), [`shz_xmtrx_apply_transpose_3x3()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_transpose_3x3/)

### apply_reverse

```cpp
static void apply_reverse(const shz_mat4x4_t &mat4) noexcept
static void apply_reverse(const float cArray[16]) noexcept
static void apply_reverse(const std::array< float, 16 > &array) noexcept
static void apply_reverse(const shz_mat3x4_t &mat) noexcept
```

C++ wrapper around `shz_xmtrx_apply_reverse_4x4()`.

Calls: [`shz_xmtrx_apply_reverse_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_reverse_4x4/), [`shz_xmtrx_apply_reverse_unaligned_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_reverse_unaligned_4x4/), [`shz_xmtrx_apply_reverse_3x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_reverse_3x4/)

### apply_reverse_transpose

```cpp
static void apply_reverse_transpose(const shz_mat4x4_t &mat4) noexcept
static void apply_reverse_transpose(const float cArray[16]) noexcept
static void apply_reverse_transpose(const std::array< float, 16 > &array) noexcept
static void apply_reverse_transpose(const shz_mat3x4_t &mat) noexcept
```

C++ wrapper around `shz_xmtrx_apply_reverse_transpose_4x4()`.

Calls: [`shz_xmtrx_apply_reverse_transpose_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_reverse_transpose_4x4/), [`shz_xmtrx_apply_reverse_transpose_unaligned_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_reverse_transpose_unaligned_4x4/), [`shz_xmtrx_apply_reverse_transpose_3x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_reverse_transpose_3x4/)

### apply_translation

```cpp
static void apply_translation(float x, float y, float z) noexcept
static void apply_translation(const vec3 &v) noexcept
```

C++ wrapper around `shz_xmtrx_apply_translation()`.

Calls: [`shz_xmtrx_apply_translation()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_translation/)

### apply_scale

```cpp
static void apply_scale(float x, float y, float z) noexcept
static void apply_scale(const vec3 &v) noexcept
```

C++ wrapper around `shz_xmtrx_apply_scale()`.

Calls: [`shz_xmtrx_apply_scale()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_scale/)

### apply_rotation_x

```cpp
static void apply_rotation_x(float x) noexcept
```

C++ wrapper around `shz_xmtrx_apply_rotation_x()`.

Calls: [`shz_xmtrx_apply_rotation_x()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_rotation_x/)

### apply_rotation_y

```cpp
static void apply_rotation_y(float y) noexcept
```

C++ wrapper around `shz_xmtrx_apply_rotation_y()`.

Calls: [`shz_xmtrx_apply_rotation_y()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_rotation_y/)

### apply_rotation_z

```cpp
static void apply_rotation_z(float z) noexcept
```

C++ wrapper around `shz_xmtrx_apply_rotation_z()`.

Calls: [`shz_xmtrx_apply_rotation_z()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_rotation_z/)

### apply_rotation_xyz

```cpp
static void apply_rotation_xyz(float x, float y, float z) noexcept
```

C++ wrapper around `shz_xmtrx_init_rotation_xyz()`.

Calls: [`shz_xmtrx_apply_rotation_xyz()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_rotation_xyz/)

### apply_rotation_zyx

```cpp
static void apply_rotation_zyx(float z, float y, float x) noexcept
```

C++ wrapper around `shz_xmtrx_apply_rotation_zyx()`.

Calls: [`shz_xmtrx_apply_rotation_zyx()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_rotation_zyx/)

### apply_rotation_zxy

```cpp
static void apply_rotation_zxy(float z, float x, float y) noexcept
```

C++ wrapper around `shz_xmtrx_apply_rotation_zxy()`.

Calls: [`shz_xmtrx_apply_rotation_zxy()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_rotation_zxy/)

### apply_rotation_yxz

```cpp
static void apply_rotation_yxz(float y, float x, float z) noexcept
```

C++ wrapper around `shz_xmtrx_apply_rotation_yxz()`.

Calls: [`shz_xmtrx_apply_rotation_yxz()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_rotation_yxz/)

### apply_rotation

```cpp
static void apply_rotation(float angle, float x, float y, float z) noexcept
static void apply_rotation(float angle, const vec3 &axis) noexcept
```

Calls: [`shz_xmtrx_apply_rotation()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_rotation/)

### apply_rotation_quat

```cpp
static void apply_rotation_quat(const quat &q) noexcept
```

C++ wrapper around `shz_xmtrx_apply_rotation_quat()`.

Calls: [`shz_xmtrx_apply_rotation_quat()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_rotation_quat/)

### apply_lookat

```cpp
static void apply_lookat(const vec3 &eye, const vec3 &center, const vec3 &up) noexcept
```

C++ wrapper around `shz_xmtrx_apply_lookat()`.

Calls: [`shz_xmtrx_apply_lookat()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_lookat/)

### apply_ortho

```cpp
static void apply_ortho(float left, float right, float bottom, float top, float znear, float zfar) noexcept
```

C++ wrapper around `shz_xmtrx_apply_ortho()`.

Calls: [`shz_xmtrx_apply_ortho()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_ortho/)

### apply_frustum

```cpp
static void apply_frustum(float left, float right, float bottom, float top, float znear, float zfar) noexcept
```

C++ wrapper around `shz_xmtrx_apply_frustum()`.

Calls: [`shz_xmtrx_apply_frustum()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_frustum/)

### apply_perspective

```cpp
static void apply_perspective(float fov, float aspect, float znear) noexcept
```

C++ wrapper around `shz_xmtrx_apply_perspective()`.

Calls: [`shz_xmtrx_apply_perspective()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_perspective/)

### apply_symmetric_skew

```cpp
static void apply_symmetric_skew(float x, float y, float z) noexcept
```

C++ wrapper around `shz_xmtrx_apply_symmetric_skew()`.

Calls: [`shz_xmtrx_apply_symmetric_skew()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_symmetric_skew/)

### apply_screen

```cpp
static void apply_screen(float width, float height) noexcept
```

C++ wrapper around `shz_xmtrx_apply_screen()`.

Calls: [`shz_xmtrx_apply_screen()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_screen/)

### apply_permutation_wxyz

```cpp
static void apply_permutation_wxyz() noexcept
```

C++ wrapper around `shz_xmtrx_apply_permutation_wxyz()`.

Calls: [`shz_xmtrx_apply_permutation_wxyz()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_permutation_wxyz/)

### apply_permutation_yzwx

```cpp
static void apply_permutation_yzwx() noexcept
```

C++ wrapper around `shz_xmtrx_apply_permutation_yzwx()`.

Calls: [`shz_xmtrx_apply_permutation_yzwx()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_permutation_yzwx/)

### apply_permutation_wzyx

```cpp
static void apply_permutation_wzyx() noexcept
```

C++ wrapper around `shz_xmtrx_apply_permutation_wzyx()`.

Calls: [`shz_xmtrx_apply_permutation_wzyx()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_permutation_wzyx/)

### apply_self

```cpp
static void apply_self() noexcept
```

C++ wrapper around `shz_xmtrx_apply_self()`.

Calls: [`shz_xmtrx_apply_self()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_self/)

### translate

```cpp
static void translate(float x, float y, float z) noexcept
static void translate(vec3 v) noexcept
```

C++ wrapper around `shz_xmtrx_translate()`.

Calls: [`shz_xmtrx_translate()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_translate/)

### scale

```cpp
static void scale(float x, float y, float z) noexcept
static void scale(vec3 v) noexcept
```

C++ wrapper around `shz_xmtrx_scale()`.

Calls: [`shz_xmtrx_scale()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_scale/)

### rotate_x

```cpp
static void rotate_x(float radians) noexcept
```

C++ wrapper around `shz_xmtrx_rotate_x()`.

Calls: [`shz_xmtrx_rotate_x()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_rotate_x/)

### rotate_y

```cpp
static void rotate_y(float radians) noexcept
```

C++ wrapper around `shz_xmtrx_rotate_x()`.

Calls: [`shz_xmtrx_rotate_y()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_rotate_y/)

### rotate_z

```cpp
static void rotate_z(float radians) noexcept
```

C++ wrapper around `shz_xmtrx_rotate_x()`.

Calls: [`shz_xmtrx_rotate_z()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_rotate_z/)

### rotate_xyz

```cpp
static void rotate_xyz(float x, float y, float z) noexcept
```

C++ wrapper around `shz_xmtrx_rotate_xyz()`.

Calls: [`shz_xmtrx_rotate_xyz()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_rotate_xyz/)

### rotate_zyx

```cpp
static void rotate_zyx(float z, float y, float x) noexcept
```

C++ wrapper around `shz_xmtrx_rotate_zyx()`.

Calls: [`shz_xmtrx_rotate_zyx()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_rotate_zyx/)

### rotate_zxy

```cpp
static void rotate_zxy(float z, float x, float y) noexcept
```

C++ wrapper around `shz_xmtrx_rotate_zxy()`.

Calls: [`shz_xmtrx_rotate_zxy()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_rotate_zxy/)

### rotate_yxz

```cpp
static void rotate_yxz(float y, float x, float z) noexcept
```

C++ wrapper around `shz_xmtrx_rotate_yxz()`.

Calls: [`shz_xmtrx_rotate_yxz()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_rotate_yxz/)

### rotate

```cpp
static void rotate(float radians, float x, float y, float z) noexcept
static void rotate(float radians, const vec3 &axis) noexcept
```

C++ wrapper around `shz_xmtrx_rotate()`.

Calls: [`shz_xmtrx_rotate()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_rotate/)

### translate_reverse

```cpp
static void translate_reverse(float x, float y, float z) noexcept
static void translate_reverse(const shz::vec3 &pos) noexcept
```

Pre-multiplies and accumulates XMTRX onto the 3D translation matrix with the given components.

Calls: [`shz_xmtrx_translate_reverse()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_translate_reverse/)

### scale_reverse

```cpp
static void scale_reverse(float x, float y, float z) noexcept
static void scale_reverse(const shz::vec3 &size) noexcept
```

Pre-multiplies and accumulatse XMTRX onto the 3D scaling matrix with the given components.

Calls: [`shz_xmtrx_scale_reverse()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_scale_reverse/)

### load_apply

```cpp
static void load_apply(const shz_mat4x4_t &mat1, const shz_mat4x4_t &mat2) noexcept
static void load_apply(const float matrix1[16], const float matrix2[16]) noexcept
static void load_apply(const shz_mat3x4_t &mat1, const shz_mat3x4_t &mat2) noexcept
```

C++ wrapper around `shz_xmtrx_load_apply_4x4()`.

Calls: [`shz_xmtrx_load_apply_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_apply_4x4/), [`shz_xmtrx_load_apply_unaligned_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_apply_unaligned_4x4/), [`shz_xmtrx_load_apply_3x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_apply_3x4/)

### apply_store

```cpp
static void apply_store(shz_mat4x4_t *out, const shz_mat4x4_t &in) noexcept
static void apply_store(float out[16], const float in[16]) noexcept
```

C++ wrapper around `shz_xmtrx_apply_store_4x4()`.

Calls: [`shz_xmtrx_apply_store_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_store_4x4/), [`shz_xmtrx_apply_store_unaligned_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_apply_store_unaligned_4x4/)

### load_apply_store

```cpp
static void load_apply_store(shz_mat4x4_t *dst, const shz_mat4x4_t &mat1, const shz_mat4x4_t &mat2) noexcept
static void load_apply_store(float out[16], const float matrix1[16], const float matrix2[16]) noexcept
static void load_apply_store(shz_mat3x4_t *dst, const shz_mat3x4_t &mat1, const shz_mat3x4_t &mat2) noexcept
static void load_apply_store(shz_mat3x3_t *dst, const shz_mat3x3_t &mat1, const shz_mat3x3_t &mat2) noexcept
```

C++ wrapper around `shz_xmtrx_load_apply_store_4x4()`.

Calls: [`shz_xmtrx_load_apply_store_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_apply_store_4x4/), [`shz_xmtrx_load_apply_store_unaligned_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_apply_store_unaligned_4x4/), [`shz_xmtrx_load_apply_store_3x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_apply_store_3x4/), [`shz_xmtrx_load_apply_store_3x3()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_load_apply_store_3x3/)

### transform

```cpp
static vec4 transform(const vec4 &in) noexcept
static vec3 transform(const vec3 &in) noexcept
static vec2 transform(const vec2 &in) noexcept
```

C++ wrapper around `shz_xmtrx_transform_vec4()`.

Calls: [`shz_xmtrx_transform_vec4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_transform_vec4/), [`shz_xmtrx_transform_vec3()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_transform_vec3/), [`shz_xmtrx_transform_vec2()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_transform_vec2/)

### transform_point

```cpp
static vec3 transform_point(const vec3 &pt) noexcept
static vec2 transform_point(const vec2 &pt) noexcept
```

C++ wrapper around `shz_xmtrx_transform_point3()`.

Calls: [`shz_xmtrx_transform_point3()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_transform_point3/), [`shz_xmtrx_transform_point2()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_transform_point2/)

### set_translation

```cpp
static void set_translation(float x, float y, float z) noexcept
static void set_translation(const vec3 &v) noexcept
```

C++ wrapper around `shz_xmtrx_set_translation()`.

Calls: [`shz_xmtrx_set_translation()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_set_translation/)

### set_scale

```cpp
static void set_scale(float x, float y, float z) noexcept
static void set_scale(const shz::vec3 &size) noexcept
```

Sets only the inner 3x3 submatrix to be a 3D scale matrix with the given components.

Calls: [`shz_xmtrx_set_scale()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_set_scale/)

### get_translation

```cpp
static vec3 get_translation() noexcept
```

C++ wrapper around `shz_xmtrx_set_translation()`.

Calls: [`shz_xmtrx_get_translation()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_get_translation/)

### get_scale

```cpp
static vec3 get_scale() noexcept
```

Returns the scaling components from the inner 3x3 matrix of XMTRX, as a 3D vector.

Calls: [`shz_xmtrx_get_scale()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_get_scale/)

### add

```cpp
static void add(const shz_mat4x4_t &mat) noexcept
```

C++ wrapper around `shz_xmtrx_add_4x4()`.

Calls: [`shz_xmtrx_add_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_add_4x4/)

### sub

```cpp
static void sub(const shz_mat4x4_t &mat) noexcept
```

C++ wrapper around `shz_xmtrx_sub_4x4()`.

Calls: [`shz_xmtrx_sub_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_sub_4x4/)

### transpose

```cpp
static void transpose() noexcept
```

C++ wrapper around `shz_xmtrx_transpose()`.

Calls: [`shz_xmtrx_transpose()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_transpose/)

### negate

```cpp
static void negate() noexcept
```

C++ wrapper around `shz_xmtrx_negate()`.

Calls: [`shz_xmtrx_negate()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_negate/)

### abs

```cpp
static void abs() noexcept
```

C++ wrapper around `shz_xmtrx_abs()`.

Calls: [`shz_xmtrx_abs()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_abs/)

### to_quat

```cpp
static quat to_quat() noexcept
```

C++ wrapper around `shz_xmtrx_to_quat()`.

Calls: [`shz_xmtrx_to_quat()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_to_quat/)

### determinant

```cpp
static float determinant() noexcept
```

C++ wrapper around `shz_xmtrx_determinant()`.

Calls: [`shz_xmtrx_determinant()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_determinant/)

### invert

```cpp
static void invert() noexcept
```

C++ wrapper around `shz_xmtrx_invert()`.

Calls: [`shz_xmtrx_invert()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_invert/)

### blend

```cpp
static void blend(const shz_mat4x4_t &matrix, float weight) noexcept
static void blend(const shz_mat3x4_t &matrix, float weight) noexcept
```

Adds and accumulates a scaled 4x4 matrix onto XMTRX.

Calls: [`shz_xmtrx_blend_4x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_blend_4x4/), [`shz_xmtrx_blend_3x4()`](https://sh4zam.com/api/xmtrx/shz_xmtrx_blend_3x4/)

## Members

### reg

```cpp

```

FP back-bank registers comprising XMTRX.

### reg_t

```cpp
using reg_t = reg
```

Non-POSIX style `reg_t` alias.
