![]() |
SH4ZAM! 0.9.1
Fast math library for the Sega Dreamcast's SH4 CPU
|
#include "shz_vector.h"#include "shz_quat.h"#include "shz_xmtrx.h"#include "inline/shz_matrix.inl.h"

Go to the source code of this file.
Data Structures | |
| struct | shz_mat4x4_t |
Typedefs | |
| typedef shz_mat4x4_t | shz_mat4x4 |
Functions | |
Initialization | |
Routines for fully initializing a matrix. | |
| void | shz_mat4x4_init_identity (shz_mat4x4_t *mat) noexcept |
| void | shz_mat4x4_init_identity_safe (shz_mat4x4_t *mat) noexcept |
| void | shz_mat4x4_init_zero (shz_mat4x4_t *mat) noexcept |
| void | shz_mat4x4_init_one (shz_mat4x4_t *mat) noexcept |
| void | shz_mat4x4_init_fill (shz_mat4x4_t *mat, float value) noexcept |
| void | shz_mat4x4_init_translation (shz_mat4x4_t *mat, float x, float y, float z) noexcept |
| void | shz_mat4x4_init_scale (shz_mat4x4_t *mat, float x, float y, float z) noexcept |
| void | shz_mat4x4_init_rotation_x (shz_mat4x4_t *mat, float xAngle) noexcept |
| void | shz_mat4x4_init_rotation_y (shz_mat4x4_t *mat, float yAngle) noexcept |
| void | shz_mat4x4_init_rotation_z (shz_mat4x4_t *mat, float zAngle) noexcept |
| void | shz_mat4x4_init_rotation_xyz (shz_mat4x4_t *mat, float xAngle, float yAngle, float zAngle) noexcept |
| void | shz_mat4x4_init_rotation_zyx (shz_mat4x4_t *mat, float zAngle, float yAngle, float xAngle) noexcept |
| void | shz_mat4x4_init_rotation_zxy (shz_mat4x4_t *mat, float zAngle, float xAngle, float yAngle) noexcept |
| void | shz_mat4x4_init_rotation_yxz (shz_mat4x4_t *mat, float yAngle, float xAngle, float zAngle) noexcept |
| void | shz_mat4x4_init_rotation (shz_mat4x4_t *mat, float radians, float xAxis, float yAxis, float zAxis) noexcept |
| void | shz_mat4x4_init_rotation_dir (shz_mat4x4_t *mat, float angle, float x, float y, float z) noexcept |
| void | shz_mat4x4_init_rotation_quat (shz_mat4x4_t *m, shz_quat_t q) noexcept |
| void | shz_mat4x4_init_diagonal (shz_mat4x4_t *mat, float x, float y, float z, float w) noexcept |
| void | shz_mat4x4_init_upper_triangular (shz_mat4x4_t *mat, float col1, shz_vec2_t col2, shz_vec3_t col3, shz_vec4_t col4) noexcept |
| void | shz_mat4x4_init_lower_triangular (shz_mat4x4_t *mat, shz_vec4_t col1, shz_vec3_t col2, shz_vec2_t col3, float col4) noexcept |
| void | shz_mat4x4_init_symmetric_skew (shz_mat4x4_t *mat, float x, float y, float z) noexcept |
| void | shz_mat4x4_init_outer_product (shz_mat4x4_t *mat, shz_vec4_t v1, shz_vec4_t v2) noexcept |
| void | shz_mat4x4_init_permutation_wxyz (shz_mat4x4_t *mat) noexcept |
| void | shz_mat4x4_init_permutation_yzwx (shz_mat4x4_t *mat) noexcept |
| void | shz_mat4x4_init_screen (shz_mat4x4_t *mat, float width, float height) noexcept |
| void | shz_mat4x4_init_lookat (shz_mat4x4_t *mat, shz_vec3_t eye, shz_vec3_t center, shz_vec3_t up) noexcept |
| void | shz_mat4x4_init_ortho (shz_mat4x4_t *mat, float left, float right, float bottom, float top, float znear, float zfar) noexcept |
| void | shz_mat4x4_init_frustum (shz_mat4x4_t *mat, float left, float right, float bottom, float top, float znear, float zfar) noexcept |
| void | shz_mat4x4_init_perspective (shz_mat4x4_t *mat, float fov, float aspect, float znear) noexcept |
Decomposition | |
Routines for decomposing a matrix into its constituent transforms. | |
| void | shz_mat4x4_decompose (const shz_mat4x4_t *mat, shz_vec3_t *translation, shz_quat_t *rotation, shz_vec3_t *scale) noexcept |
Getting | |
Routines for getting specific values within a matrix. | |
| shz_vec4_t | shz_mat4x4_row (const shz_mat4x4_t *mat, size_t row) noexcept |
| shz_vec4_t | shz_mat4x4_col (const shz_mat4x4_t *mat, size_t col) noexcept |
| shz_vec3_t | shz_mat4x4_get_translation (const shz_mat4x4_t *mat) noexcept |
| shz_vec3_t | shz_mat4x4_get_scale (const shz_mat4x4_t *mat) noexcept |
| float | shz_mat4x4_determinant (const shz_mat4x4_t *mat) noexcept |
| float | shz_mat4x4_trace (const shz_mat4x4_t *mat) noexcept |
| void | shz_mat4x4_3x3 (const shz_mat4x4_t *mat4, shz_mat3x3_t *mat3) noexcept |
| void | shz_mat4x4_3x3_inverse_unscaled (const shz_mat4x4_t *mat4, shz_mat3x3_t *invmat3) noexcept |
| void | shz_mat4x4_3x3_inverse (const shz_mat4x4_t *mat4, shz_mat3x3_t *invmat3) noexcept |
| float | shz_mat4x4_3x3_determinant (const shz_mat4x4_t *mat) noexcept |
Setting | |
Routines for setting specific values within a matrix | |
| void | shz_mat4x4_set_row (shz_mat4x4_t *mat, size_t row, shz_vec4_t vec) noexcept |
| void | shz_mat4x4_set_col (shz_mat4x4_t *mat, size_t col, shz_vec4_t vec) noexcept |
| void | shz_mat4x4_swap_rows (shz_mat4x4_t *mat, size_t row1, size_t row2) noexcept |
| void | shz_mat4x4_swap_cols (shz_mat4x4_t *mat, size_t col1, size_t col2) noexcept |
| void | shz_mat4x4_set_translation (shz_mat4x4_t *mat, float x, float y, float z) noexcept |
| void | shz_mat4x4_set_scale (shz_mat4x4_t *mat, float x, float y, float z) noexcept |
| void | shz_mat4x4_set_rotation_quat (shz_mat4x4_t *m, shz_quat_t q) noexcept |
| void | shz_mat4x4_set_diagonal (shz_mat4x4_t *mat, float x, float y, float z, float w) noexcept |
Applying | |
Routines for multiplying and accumulating onto the given matrix. | |
| void | shz_mat4x4_apply (shz_mat4x4_t *dst, const shz_mat4x4_t *src) noexcept |
| void | shz_mat4x4_apply_unaligned (shz_mat4x4_t *dst, const float src[16]) noexcept |
| void | shz_mat4x4_apply_transpose (shz_mat4x4_t *dst, const shz_mat4x4_t *src) noexcept |
| void | shz_mat4x4_apply_transpose_unaligned (shz_mat4x4_t *dst, const float src[16]) noexcept |
| void | shz_mat4x4_apply_translation (shz_mat4x4_t *mat, float x, float y, float z) noexcept |
| void | shz_mat4x4_apply_scale (shz_mat4x4_t *mat, float x, float y, float z) noexcept |
| void | shz_mat4x4_apply_rotation_x (shz_mat4x4_t *mat, float xAngle) noexcept |
| void | shz_mat4x4_apply_rotation_y (shz_mat4x4_t *mat, float yAngle) noexcept |
| void | shz_mat4x4_apply_rotation_z (shz_mat4x4_t *mat, float zAngle) noexcept |
| void | shz_mat4x4_apply_rotation_xyz (shz_mat4x4_t *mat, float xAngle, float yAngle, float zAngle) noexcept |
| void | shz_mat4x4_apply_rotation_zyx (shz_mat4x4_t *mat, float zAngle, float yAngle, float xAngle) noexcept |
| void | shz_mat4x4_apply_rotation_zxy (shz_mat4x4_t *mat, float zAngle, float xAngle, float yAngle) noexcept |
| void | shz_mat4x4_apply_rotation_yxz (shz_mat4x4_t *mat, float yAngle, float xAngle, float zAngle) noexcept |
| void | shz_mat4x4_apply_rotation (shz_mat4x4_t *mat, float angle, float xAxis, float yAxis, float zAxis) noexcept |
| void | shz_mat4x4_apply_rotation_quat (shz_mat4x4_t *m, shz_quat_t q) noexcept |
| void | shz_mat4x4_apply_lookat (shz_mat4x4_t *m, shz_vec3_t pos, shz_vec3_t target, shz_vec3_t up) noexcept |
| void | shz_mat4x4_apply_ortho (shz_mat4x4_t *m, float left, float right, float bottom, float top, float znear, float zfar) noexcept |
| void | shz_mat4x4_apply_frustum (shz_mat4x4_t *m, float left, float right, float bottom, float top, float znear, float zfar) noexcept |
| void | shz_mat4x4_apply_perspective (shz_mat4x4_t *m, float fov, float aspect, float znear) noexcept |
| void | shz_mat4x4_apply_screen (shz_mat4x4_t *m, float width, float height) noexcept |
| void | shz_mat4x4_apply_symmetric_skew (shz_mat4x4_t *mat, float x, float y, float z) noexcept |
| void | shz_mat4x4_apply_permutation_wxyz (shz_mat4x4_t *mat) noexcept |
| void | shz_mat4x4_apply_permutation_yzwx (shz_mat4x4_t *mat) noexcept |
| void | shz_mat4x4_apply_self (shz_mat4x4_t *mat) noexcept |
GL Transformations | |
OpenGL-style 4x4 matrix transforms. | |
| void | shz_mat4x4_translate (shz_mat4x4_t *mat, float x, float y, float z) noexcept |
| void | shz_mat4x4_scale (shz_mat4x4_t *mat, float x, float y, float z) noexcept |
| void | shz_mat4x4_rotate_x (shz_mat4x4_t *mat, float radians) noexcept |
| void | shz_mat4x4_rotate_y (shz_mat4x4_t *mat, float radians) noexcept |
| void | shz_mat4x4_rotate_z (shz_mat4x4_t *mat, float radians) noexcept |
| void | shz_mat4x4_rotate_xyz (shz_mat4x4_t *mat, float xRadians, float yRadians, float zRadians) noexcept |
| void | shz_mat4x4_rotate_zyx (shz_mat4x4_t *mat, float zRadians, float yRadians, float xRadians) noexcept |
| void | shz_mat4x4_rotate_zxy (shz_mat4x4_t *mat, float zRadians, float xRadians, float yRadians) noexcept |
| void | shz_mat4x4_rotate_yxz (shz_mat4x4_t *mat, float yRadians, float xRadians, float zRadians) noexcept |
| void | shz_mat4x4_rotate (shz_mat4x4_t *mat, float radians, float xAxis, float yAxis, float zAxis) noexcept |
Reverse GL Transformations | |
Pre-multiplication variants of OpenGL-style 4x4 matrix transforms. | |
| void | shz_mat4x4_translate_reverse (shz_mat4x4_t *mat, float x, float y, float z) noexcept |
| void | shz_mat4x4_scale_reverse (shz_mat4x4_t *mat, float x, float y, float z) noexcept |
Transforming | |
Routines for transforming vectors and points by a matrix. | |
| void | shz_mat4x4_mult (shz_mat4x4_t *mat, const shz_mat4x4_t *lhs, const shz_mat4x4_t *rhs) noexcept |
| void | shz_mat4x4_mult_unaligned (shz_mat4x4_t *mat, const shz_mat4x4_t *lhs, const float rhs[16]) noexcept |
| void | shz_mat4x4_mult_transpose (shz_mat4x4_t *mat, const shz_mat4x4_t *lhs, const shz_mat4x4_t *rhs) noexcept |
| void | shz_mat4x4_mult_transpose_unaligned (shz_mat4x4_t *mat, const shz_mat4x4_t *lhs, const float rhs[16]) noexcept |
| shz_vec2_t | shz_mat4x4_transform_vec2 (const shz_mat4x4_t *m, shz_vec2_t v) noexcept |
| shz_vec3_t | shz_mat4x4_transform_vec3 (const shz_mat4x4_t *m, shz_vec3_t v) noexcept |
| shz_vec4_t | shz_mat4x4_transform_vec4 (const shz_mat4x4_t *mat, shz_vec4_t in) noexcept |
| shz_vec2_t | shz_mat4x4_transform_vec2_transpose (const shz_mat4x4_t *m, shz_vec2_t v) noexcept |
| shz_vec3_t | shz_mat4x4_transform_vec3_transpose (const shz_mat4x4_t *m, shz_vec3_t v) noexcept |
| shz_vec4_t | shz_mat4x4_transform_vec4_transpose (const shz_mat4x4_t *m, shz_vec4_t v) noexcept |
| shz_vec2_t | shz_mat4x4_transform_point2 (const shz_mat4x4_t *mat, shz_vec2_t pt) noexcept |
| shz_vec3_t | shz_mat4x4_transform_point3 (const shz_mat4x4_t *mat, shz_vec3_t pt) noexcept |
| shz_vec2_t | shz_mat4x4_transform_point2_transpose (const shz_mat4x4_t *mat, shz_vec2_t pt) noexcept |
| shz_vec3_t | shz_mat4x4_transform_point3_transpose (const shz_mat4x4_t *mat, shz_vec3_t pt) noexcept |
Miscellaneous | |
Other matrix-related operations and routines | |
| shz_quat_t | shz_mat4x4_to_quat (const shz_mat4x4_t *mat) noexcept |
| void | shz_mat4x4_transpose (const shz_mat4x4_t *mat, shz_mat4x4_t *out) noexcept |
| void | shz_mat4x4_inverse (const shz_mat4x4_t *SHZ_RESTRICT mtrx, shz_mat4x4_t *SHZ_RESTRICT out) noexcept |
| void | shz_mat4x4_inverse_block_triangular (const shz_mat4x4_t *mtx, shz_mat4x4_t *out) noexcept |
| bool | shz_mat4x4_equal (const shz_mat4x4_t *SHZ_RESTRICT mat1, const shz_mat4x4_t *mat2) noexcept |
| bool | shz_mat4x4_is_block_triangular (const shz_mat4x4_t *mat) noexcept |
| void | shz_mat4x4_copy (shz_mat4x4_t *dst, const shz_mat4x4_t *src) noexcept |
| void | shz_mat4x4_copy_unaligned (shz_mat4x4_t *dst, const float src[16]) noexcept |
| void | shz_mat4x4_swap (shz_mat4x4_t *matA, shz_mat4x4_t *matB) noexcept |
| void | shz_mat4x4_blend (shz_mat4x4_t *dst, const shz_mat4x4_t *joint_matrix, float weights) noexcept |
API for operating on MxN matrices within memory.
This file provides a collection of routines for manipulating MxN matrices which are stored within memory, rather than in the XMTRX FP register back-bank.
Some of these routines are simply loading into the back-bank and are performing work there, temporarily. Some of them have implementations which have specific optimizations for when the matrices are NOT within such registers, which are faster than having to go through XMTRX and clobbering the back-bank.
Definition in file shz_matrix.h.
| typedef shz_mat4x4_t shz_mat4x4 |
Alternate shz_mat4x4_t C typedef for those who hate POSIX style.
Definition at line 80 of file shz_matrix.h.
|
noexcept |
Initializes the given matrix to the 4x4 identity matrix.
|
noexcept |
Safely initializes the given matrix to the 4x4 identity matrix.
|
noexcept |
Initializes the given matrix with all 0s for its element values.
|
noexcept |
Initializes the given matrix with all 1s for its element values.
|
noexcept |
Initializes the given matrix with all elements assigned to the given value.
|
noexcept |
Initializes the given matrix to a 3D translation matrix with the given coordinates.
|
noexcept |
Initializes the given matrix to a 3D scaling matrix with the given dimensions.
|
noexcept |
Initializes the given matrix to a 3D rotation matrix by xAngle radians over the X-axis.
|
noexcept |
Initializes the given matrix to a 3D rotation matrix by yAngle radians over the Y-axis.
|
noexcept |
Initializes the given matrix to a 3D rotation matrix by zAngle radians over the Z-axis.
|
noexcept |
Initializes the given matrix to a 3D rotation matrix from the intrinsic rotation created by the given Tait-Bryan X-Y-Z angles.
|
noexcept |
Initializes the given matrix to a 3D rotation matrix from the intrinsic rotation created by the given Tait-Bryan Z-Y-X angles.
|
noexcept |
Initializes the given matrix to a 3D rotation matrix from the intrinsic rotation created by the given Tait-Bryan Z-X-Y angles.
|
noexcept |
Initializes the given matrix to a 3D rotation matrix from the intrinsic rotation created by the given Tait-Bryan Y-X-Z angles.
|
noexcept |
Initializes the given 4x4 matrix to a 3D rotation matrix of angle radians about the vector with the given components.
|
noexcept |
Initializes the given 4x4 matrix to contain a 3D rotation matrix of angle radians about the given direction.
This is a faster version of shz_mat4x4_init_rotation() or glRotatef() which requires being passed a unit vector for the rotation axis.
|
noexcept |
Initializes the given matrix to a 3D rotation matrix with its orientation given by a quaternion.
|
noexcept |
Initializes the given matrix to a diagonal matrix with the given 4 values.
|
noexcept |
Initializes the given matrix to an upper triangular matrix whose nonzero entries have the given value.
|
noexcept |
Initializes the given matrix to a lower triangular matrix whose nonzero entries have the given value.
|
noexcept |
Initializes the given matrix to be the symmetric skew of the given 3D vector components.
|
noexcept |
Initializes the given matrix to be the result from taking the outer product of the two given 4D vectors.
|
noexcept |
Initializes the matrix to to a permutation matrix, which reorders the components of transformed vectors to be in WXYZ order.
|
noexcept |
Initializes the matrix to to a permutation matrix, which reorders the components of transformed vectors to be in YZWX order.
|
noexcept |
Initializes the given matrix to the viewport matrix with the given dimenions.
|
noexcept |
Initializes the given matrix to a "lookAt" view matrix.
|
noexcept |
Initializes the given matrix to an orthographic projection matrix.
|
noexcept |
Initializes the given matrix to a frustum projection matrix.
|
noexcept |
Initializes the given matrix to a perspective projection matrix.
|
noexcept |
Decomposes a 4x4 transform matrix into translation, rotation, and scale.
|
noexcept |
Extracts the row index as a 4D row vector from the given matrix.
|
noexcept |
Extracts the col index as a 4D column vector from the given matrix.
|
noexcept |
Returns the translational components from the 4th column as a 3D vector.
|
noexcept |
Exracts the 3D scale factors from the given 4x4 matrix.
mat is a standard TRS-style transform matrix, without shearing or reflection.
|
noexcept |
Returns the determinant of the given 4x4 matrix.
|
noexcept |
Returns the trace of the given 4x4 matrix.
|
noexcept |
Extracts the top-left 3x3 of the given 4D matrix.
|
noexcept |
Extracts and inverts the top-level, unscaled 3x3 of the given 4x4 matrix.
|
noexcept |
Extracts and inverts the top-level 3x3 (which may be scaled) of the given 4x4 matrix.
|
noexcept |
Returns the determinant of the given 4x4 matrix's internal top-level 3x3 matrix.
|
noexcept |
Sets the values of mat at the given row to those of the 4D vector, vec.
|
noexcept |
Sets the values of mat at the given col to those of the 4D vector, vec.
|
noexcept |
Swaps the 4D row vectors located at row1 and row2 within mat.
|
noexcept |
Swaps the 4D column vectors located at col1 and col2 within mat.
|
noexcept |
Assigns only the 3D translation-related elements of the given matrix to the given values.
|
noexcept |
Assigns only the 3D scale-related elements of the given matrix to the given values.
|
noexcept |
Sets just the rotational component of the matrix to the orientation given by a quaternion, keeping the other elements in-tact.
|
noexcept |
Assigns only the 4 elements along the diagonal of the given matrix to the given values.
|
noexcept |
Multiplies and accumulates the src 4x4 matrix onto the dst 4x4 matrix.
|
noexcept |
Multiplies and accumulates the unaligned src 4x4 matrix onto the dst 4x4 matrix.
|
noexcept |
Multiplies and accumulates the transposed src 4x4 matrix onto the dst 4x4 matrix.
|
noexcept |
Multiplies and accumulates the transposed unaligned src 4x4 matrix onto the dst 4x4 matrix.
|
noexcept |
Adds the given 3D vector components to the translational values of the given matrix.
|
noexcept |
Multiplies and accumulates the scale-related elements of the given matrix by the given 3D components.
|
noexcept |
Multiplies and accumulates a rotation matrix by xAngle radians about the X-axis onto the given matrix.
|
noexcept |
Multiplies and accumulates a rotation matrix by yAngle radians about the Y-axis onto the given matrix.
|
noexcept |
Multiplies and accumulates a rotation matrix by zAngle radians about the Z-axis onto the given matrix.
|
noexcept |
Rotates the given transform matrix about the X axis, then the Y axis, then the Z axis by the given angles in radians.
Multiplies and accumulates the given matrix with the 3D rotation matrix formed from the intrinsic rotation created by the given Tait-Bryan X-Y-Z angles.
|
noexcept |
Rotates the given transform matrix about the Z axis, then the Y axis, then the X axis by the given angles in radians.
Multiplies and accumulates the given matrix with the 3D rotation matrix formed from the intrinsic rotation created by the given Tait-Bryan Z-Y-X angles.
|
noexcept |
Rotates the given transform matrix about the Z axis, then the X axis, then the Y axis by the given angles in radians.
Multiplies and accumulates the given matrix with the 3D rotation matrix formed from the intrinsic rotation created by the given Tait-Bryan Z-Y-X angles.
|
noexcept |
Rotates the given transform matrix about the Y axis, then the X axis, then the Z axis by the given angles in radians.
Multiplies and accumulates the given matrix with the 3D rotation matrix formed from the intrinsic rotation created by the given Tait-Bryan Y-X-Z angles.
|
noexcept |
Rotates the given transform matrix about the arbitrary axis given by a 3D direction vector and angle of rotation in radians.
Multiplies and accumulates the given matrix with the 3D rotation matrix formed from the intrinsic rotation created by the given Tait-Bryan Z-Y-X angles.
|
noexcept |
Multiplies and accumulates the given matrix with a rotation matrix whose orientation is given by a quaternion.
|
noexcept |
Applies the 3D "lookAt" matrix constructed with the given vector components onto the given matrix.
|
noexcept |
Multiplies and accumulates the ortho matrix constructed from the given values onto the given matrix.
|
noexcept |
Multiplies and accumulates the frustum matrix constructed from the given values onto the given matrix.
|
noexcept |
Multiplies and accumulates the perspective matrix constructed from the given values onto the given matrix.
|
noexcept |
Multiplies and accumulates the viewport matrix created with the given components ont othe given matrix.
|
noexcept |
Multiplies and accumulates the given matrix with a symmetric skew matrix formed from the given 3D vector components.
|
noexcept |
Multiplies and accumulates a permutation matrix, which reorders the components of transformed vectors to be in WXYZ order.
|
noexcept |
Multiplies and accumulates a permutation matrix, which reorders the components of transformed vectors to be in YZWX order.
|
noexcept |
Multiplies and accumulates the given matrix onto itself.
|
noexcept |
Multiplies and accumulates mat by a 3D translation matrix with the given components.
|
noexcept |
Multiplies and accumulates mat by a 3D scaling matrix with the given components.
|
noexcept |
Multiplies and accumulates mat by a 3D rotation matrix about the X axis.
|
noexcept |
Multiplies and accumulates mat by a 3D rotation matrix about the Y axis.
|
noexcept |
Multiplies and accumulates mat by a 3D rotation matrix about the Z axis.
|
noexcept |
Multiplies and accumulates mat by 3D rotation matrices about the X then Y then Z axes.
|
noexcept |
Multiplies and accumulates mat by 3D rotation matrices about the Z then Y then X axes.
|
noexcept |
Multiplies and accumulates mat by 3D rotation matrices about the Z then X then Y axes.
|
noexcept |
Multiplies and accumulates mat by 3D rotation matrices about the Y then X then Z axes.
|
noexcept |
Multiplies and accumulates mat by the 3D rotation matrix formed by the given axis and angle.
|
noexcept |
Pre-multiplies and accumulates the given matrix onto the 3D translation matrix with the given components.
|
noexcept |
Pre-multiplies and accumulates the given matrix onto the 3D scaling matrix with the given components.
|
noexcept |
Multiplies two 4x4 matrices together, storing the result into a third.
|
noexcept |
Multiplies two 4x4 matrices together, with the right handed matrix being unaligned, storing the result into a third.
|
noexcept |
Multiplies the regular matrix, lhs, by the transpose of the matrix, rhs, storing the result into mat.
|
noexcept |
Multiplies the regular matrix, lhs, by the transpose of the unaligned matrix, rhs, storing the result into mat.
|
noexcept |
Transforms a 2D vector by a 4x4 matrix.
This is a routine specializing in one-off transforms of a single 2D vector by a single 4x4 matrix. It should be faster than going through XMTRX.
|
noexcept |
Transforms a 3D vector by a 4x4 matrix.
This is a routine specializing in one-off transforms of a single 3D vector (such as a normal, without a W component) by a single 4x4 matrix. It should be faster than going through XMTRX.
|
noexcept |
Transforms a 4D vector by a 4x4 matrix.
This is a routine specializing in one-off transforms of a single 4D vector by a single 4x4 matrix. It should be faster than going through XMTRX.
|
noexcept |
Transforms a 2D vector the the transpose of a 4x4 matrix.
This is a routine specializing in one-off transforms of a single 2D vector by the transpose of a single 4x4 matrix. It should be faster than going through XMTRX.
|
noexcept |
Transforms a 3D vector the the transpose of a 4x4 matrix.
This is a routine specializing in one-off transforms of a single 3D vector by the transpose of a single 4x4 matrix. It should be faster than going through XMTRX.
|
noexcept |
Transforms a 4D vector the the transpose of a 4x4 matrix.
This is a routine specializing in one-off transforms of a single 4D vector by the transpose of a single 4x4 matrix. It should be faster than going through XMTRX.
|
noexcept |
Transforms a 2D point by a 4x4 matrix.
This is a routine specializing in one-off transforms of a single 2D point by a single 4x4 matrix. It should be faster than going through XMTRX.
|
noexcept |
Transforms a 3D point by a 4x4 matrix.
This is a routine specializing in one-off transforms of a single 3D point by a single 4x4 matrix. It should be faster than going through XMTRX.
|
noexcept |
Transforms a 2D point by the transpose of a 4x4 matrix.
This is a routine specializing in one-off transforms of a single 2D point by the transpose of a a single 4x4 matrix. It should be faster than going through XMTRX.
|
noexcept |
Transforms a 3D point by the transpose of a 4x4 matrix.
This is a routine specializing in one-off transforms of a single 3D point by the transpose of a a single 4x4 matrix. It should be faster than going through XMTRX.
|
noexcept |
Converts the given 4x4 orientation matrix into a quaternion.
|
noexcept |
Stores the transpose of mat within out.
|
noexcept |
Computes the inverse of a 4x4 matrix.
| mtrx | Pointer to the 4x4 matrix to invert. |
| out | Pointer to the resulting inverted matrix. |
|
noexcept |
Computes the inverse of a 4x4 matrix in block-triangular form.
This is a special-case faster optimization for 4x4 matrices which take the form:
A = [ M b ]
[ 0 w ]
Where A is 4x4, M is 3x3, b is 3x1, and the bottom row is (0, 0, 0, w) with w != 0. For this block-triangular form, det(A) = det(M) * w. Then
inv(A) = [ inv(M) -inv(M) * b / w ]
[ 0 1/w ]
|
noexcept |
Returns true if the two matrices are equal, based on either absolute or relative tolerance.
|
noexcept |
Returns true if the given matrix is in block-triangular form: having a bottom row in the form of <0.0f, 0.0f, 0.0f, w>.
|
noexcept |
Copies the given src 4x4 matrix into the given dst 4x4 matrix.
|
noexcept |
Copies the given unaligned src 4x4 matrix into the given dst 4x4 matrix.
|
noexcept |
Swaps the contents of the two given matrices, matA and matB.
|
noexcept |
Adds and accumulates a scaled 4x4 matrix into the given matrix.
Each component of joint_matrix will be multiplied by weight, with the result being added to the existing value of that component in dst.
This is useful for accumulating weighted joint matrices onto an initially zeroed-out matrix.