Merge pull request #462 from under-view/feature/mat3x4-tables

mat3x4: add tables to docs & fix comments
This commit is contained in:
Recep Aslantas
2025-04-03 21:42:27 +03:00
committed by GitHub
5 changed files with 209 additions and 134 deletions

View File

@@ -37,45 +37,15 @@ Represented
Functions documentation
~~~~~~~~~~~~~~~~~~~~~~~
.. c:function:: void glm_mat3x4_copy(mat3x4 mat, mat3x4 dest)
.. c:function:: void glm_mat3x4_copy(mat3x4 src, mat3x4 dest)
copy mat3x4 to another one (dest).
Copy mat3x4 (src) to mat3x4 (dest).
Parameters:
| *[in]* **mat** source
| *[out]* **dest** destination
| *[in]* **src** mat3x4 (left)
| *[out]* **dest** destination (result, mat3x4)
.. c:function:: void glm_mat3x4_zero(mat3x4 mat)
make given matrix zero
Parameters:
| *[in,out]* **mat** matrix
.. c:function:: void glm_mat3x4_make(const float * __restrict src, mat3x4 dest)
Create mat3x4 matrix from pointer
.. note::: **@src** must contain at least 12 elements.
Parameters:
| *[in]* **src** pointer to an array of floats
| *[out]* **dest** destination matrix3x4
.. c:function:: void glm_mat3x4_mul(mat3x4 m1, mat4x3 m2, mat4 dest)
multiply m1 and m2 to dest
.. code-block:: c
glm_mat3x4_mul(mat3x4, mat4x3, mat4);
Parameters:
| *[in]* **m1** left matrix (mat3x4)
| *[in]* **m2** right matrix (mat4x3)
| *[out]* **dest** destination matrix (mat4)
.. csv-table:: mat3x4
.. csv-table:: mat3x4 **(src)**
:header: "", "column 1", "column 2", "column 3"
"row 1", "a00", "a10", "a20"
@@ -83,14 +53,100 @@ Functions documentation
"row 3", "a02", "a12", "a22"
"row 4", "a03", "a13", "a23"
.. csv-table:: mat4x3
.. csv-table:: mat3x4 **(dest)**
:header: "", "column 1", "column 2", "column 3"
"row 1", "b00 = a00", "b10 = a10", "b20 = a20"
"row 2", "b01 = a01", "b11 = a11", "b21 = a21"
"row 3", "b02 = a02", "b12 = a12", "b22 = a22"
"row 4", "b03 = a03", "b13 = a13", "b23 = a23"
.. c:function:: void glm_mat3x4_zero(mat3x4 m)
Zero out the mat3x4 (m).
Parameters:
| *[in, out]* **m** mat3x4 (src, dest)
.. csv-table:: mat3x4 **(m)**
:header: "", "column 1", "column 2", "column 3"
"row 1", "0.00", "2.00", "78.00"
"row 2", "5.00", "4.00", "12.00"
"row 3", "7.00", "6.00", "32.00"
"row 4", "23.00", "1.00", "9.00"
.. csv-table:: mat3x4 **(m)**
:header: "", "column 1", "column 2", "column 3"
"row 1", "0.00", "0.00", "0.00"
"row 2", "0.00", "0.00", "0.00"
"row 3", "0.00", "0.00", "0.00"
"row 4", "0.00", "0.00", "0.00"
.. c:function:: void glm_mat3x4_make(const float * __restrict src, mat3x4 dest)
Create mat3x4 (dest) from pointer (src).
.. note:: **@src** must contain at least 12 elements.
Parameters:
| *[in]* **src** pointer to an array of floats (left)
| *[out]* **dest** destination (result, mat3x4)
.. csv-table:: float array (1x12) **(src)**
:header: "", "column 1"
"row 1", "v0"
"row 2", "v1"
"row 3", "v2"
"row 4", "v3"
"row 5", "v4"
"row 6", "v5"
"row 7", "v6"
"row 8", "v7"
"row 9", "v8"
"row 10", "v9"
"row 11", "v10"
"row 12", "v11"
.. csv-table:: mat3x4 **(dest)**
:header: "", "column 1", "column 2", "column 3"
"row 1", "v0", "v4", "v8"
"row 2", "v1", "v5", "v9"
"row 3", "v2", "v6", "v10"
"row 4", "v3", "v7", "v11"
.. c:function:: void glm_mat3x4_mul(mat3x4 m1, mat4x3 m2, mat4 dest)
Multiply mat3x4 (m1) by mat4x3 (m2) and store in mat4 (dest).
.. code-block:: c
glm_mat3x4_mul(mat3x4, mat4x3, mat4);
Parameters:
| *[in]* **m1** mat2x4 (left)
| *[in]* **m2** mat4x2 (right)
| *[out]* **dest** destination (result, mat4)
.. csv-table:: mat3x4 **(m1)**
:header: "", "column 1", "column 2", "column 3"
"row 1", "a00", "a10", "a20"
"row 2", "a01", "a11", "a21"
"row 3", "a02", "a12", "a22"
"row 4", "a03", "a13", "a23"
.. csv-table:: mat4x3 **(m2)**
:header: "", "column 1", "column 2", "column 3", "column 4"
"row 1", "b00", "b10", "b20", "b30"
"row 2", "b01", "b11", "b21", "b31"
"row 3", "b02", "b12", "b22", "b32"
.. csv-table:: mat4x4
.. csv-table:: mat4x4 **(dest)**
:header: "", "column 1", "column 2", "column 3", "column 4"
"row 1", "a00 * b00 + a10 * b01 + a20 * b02", "a00 * b10 + a10 * b11 + a20 * b12", "a00 * b20 + a10 * b21 + a20 * b22", "a00 * b30 + a10 * b31 + a20 * b32"
@@ -100,14 +156,14 @@ Functions documentation
.. c:function:: void glm_mat3x4_mulv(mat3x4 m, vec3 v, vec4 dest)
multiply mat3x4 with vec3 (column vector) and store in dest vector
Multiply ma3x4 (m) by vec3 (v) and store in vec4 (dest).
Parameters:
| *[in]* **m** mat3x4 (left)
| *[in]* **v** vec3 (right, column vector)
| *[out]* **dest** destination (result, column vector)
.. csv-table:: mat3x4
.. csv-table:: mat3x4 **(m)**
:header: "", "column 1", "column 2", "column 3"
"row 1", "m00", "m10", "m20"
@@ -115,14 +171,14 @@ Functions documentation
"row 3", "m02", "m12", "m22"
"row 4", "m03", "m13", "m23"
.. csv-table:: column vec3 (1x3)
.. csv-table:: column vec3 (1x3) **(v)**
:header: "", "column 1"
"row 1", "v0"
"row 2", "v1"
"row 3", "v2"
.. csv-table:: column vec4 (1x4)
.. csv-table:: column vec4 (1x4) **(dest)**
:header: "", "column 1"
"row 1", "m00 * v0 + m10 * v1 + m20 * v2"
@@ -130,18 +186,41 @@ Functions documentation
"row 3", "m02 * v0 + m12 * v1 + m22 * v2"
"row 4", "m03 * v0 + m13 * v1 + m23 * v2"
.. c:function:: void glm_mat3x4_transpose(mat3x4 m, mat4x3 dest)
.. c:function:: void glm_mat3x4_transpose(mat3x4 src, mat4x3 dest)
transpose matrix and store in dest
Transpose mat3x4 (src) and store in mat4x3 (dest).
Parameters:
| *[in]* **m** matrix
| *[out]* **dest** destination
| *[in]* **src** mat3x4 (left)
| *[out]* **dest** destination (result, mat4x3)
.. csv-table:: mat3x4 **(src)**
:header: "", "column 1", "column 2", "column 3"
"row 1", "a00", "a10", "a20"
"row 2", "a01", "a11", "a21"
"row 3", "a02", "a12", "a22"
"row 4", "a03", "a13", "a23"
.. csv-table:: mat4x3 **(dest)**
:header: "", "column 1", "column 2", "column 3", "column 4"
"row 1", "b00 = a00", "b10 = a01", "b20 = a02", "b30 = a03"
"row 2", "b01 = a10", "b11 = a11", "b21 = a12", "b31 = a13"
"row 3", "b02 = a20", "b12 = a21", "b22 = a22", "b32 = a23"
.. c:function:: void glm_mat3x4_scale(mat3x4 m, float s)
multiply matrix with scalar
Multiply mat3x4 (m) by scalar constant (s).
Parameters:
| *[in, out]* **m** matrix
| *[in]* **s** scalar
| *[in, out]* **m** mat3x4 (src, dest)
| *[in]* **s** float (scalar)
.. csv-table:: mat3x4 **(m)**
:header: "", "column 1", "column 2", "column 3"
"row 1", "m00 = m00 * s", "m10 = m10 * s", "m20 = m20 * s"
"row 2", "m01 = m01 * s", "m11 = m11 * s", "m21 = m21 * s"
"row 3", "m02 = m02 * s", "m12 = m12 * s", "m22 = m22 * s"
"row 4", "m03 = m03 * s", "m13 = m13 * s", "m23 = m23 * s"

View File

@@ -15,11 +15,11 @@ extern "C" {
CGLM_EXPORT
void
glmc_mat3x4_copy(mat3x4 mat, mat3x4 dest);
glmc_mat3x4_copy(mat3x4 src, mat3x4 dest);
CGLM_EXPORT
void
glmc_mat3x4_zero(mat3x4 mat);
glmc_mat3x4_zero(mat3x4 m);
CGLM_EXPORT
void
@@ -35,7 +35,7 @@ glmc_mat3x4_mulv(mat3x4 m, vec3 v, vec4 dest);
CGLM_EXPORT
void
glmc_mat3x4_transpose(mat3x4 m, mat4x3 dest);
glmc_mat3x4_transpose(mat3x4 src, mat4x3 dest);
CGLM_EXPORT
void

View File

@@ -11,12 +11,12 @@
GLM_MAT3X4_ZERO
Functions:
CGLM_INLINE void glm_mat3x4_copy(mat3x4 mat, mat3x4 dest);
CGLM_INLINE void glm_mat3x4_zero(mat3x4 mat);
CGLM_INLINE void glm_mat3x4_copy(mat3x4 src, mat3x4 dest);
CGLM_INLINE void glm_mat3x4_zero(mat3x4 m);
CGLM_INLINE void glm_mat3x4_make(const float * __restrict src, mat3x4 dest);
CGLM_INLINE void glm_mat3x4_mul(mat3x4 m1, mat4x3 m2, mat4 dest);
CGLM_INLINE void glm_mat3x4_mulv(mat3x4 m, vec3 v, vec4 dest);
CGLM_INLINE void glm_mat3x4_transpose(mat3x4 m, mat4x3 dest);
CGLM_INLINE void glm_mat3x4_transpose(mat3x4 src, mat4x3 dest);
CGLM_INLINE void glm_mat3x4_scale(mat3x4 m, float s);
*/
@@ -33,36 +33,36 @@
#define GLM_MAT3X4_ZERO GLM_MAT3X4_ZERO_INIT
/*!
* @brief copy all members of [mat] to [dest]
* @brief Copy mat3x4 (src) to mat3x4 (dest).
*
* @param[in] mat source
* @param[out] dest destination
* @param[in] src mat3x4 (left)
* @param[out] dest destination (result, mat3x4)
*/
CGLM_INLINE
void
glm_mat3x4_copy(mat3x4 mat, mat3x4 dest) {
glm_vec4_ucopy(mat[0], dest[0]);
glm_vec4_ucopy(mat[1], dest[1]);
glm_vec4_ucopy(mat[2], dest[2]);
glm_mat3x4_copy(mat3x4 src, mat3x4 dest) {
glm_vec4_ucopy(src[0], dest[0]);
glm_vec4_ucopy(src[1], dest[1]);
glm_vec4_ucopy(src[2], dest[2]);
}
/*!
* @brief make given matrix zero.
* @brief Zero out the mat3x4 (m).
*
* @param[in, out] mat matrix
* @param[in, out] mat3x4 (src, dest)
*/
CGLM_INLINE
void
glm_mat3x4_zero(mat3x4 mat) {
glm_mat3x4_zero(mat3x4 m) {
CGLM_ALIGN_MAT mat3x4 t = GLM_MAT3X4_ZERO_INIT;
glm_mat3x4_copy(t, mat);
glm_mat3x4_copy(t, m);
}
/*!
* @brief Create mat3x4 matrix from pointer
* @brief Create mat3x4 (dest) from pointer (src).
*
* @param[in] src pointer to an array of floats
* @param[out] dest matrix
* @param[in] src pointer to an array of floats (left)
* @param[out] dest destination (result, mat3x4)
*/
CGLM_INLINE
void
@@ -84,15 +84,15 @@ glm_mat3x4_make(const float * __restrict src, mat3x4 dest) {
}
/*!
* @brief multiply m1 and m2 to dest
* @brief Multiply mat3x4 (m1) by mat4x3 (m2) and store in mat4 (dest).
*
* @code
* glm_mat3x4_mul(mat3x4, mat4x3, mat4);
* @endcode
*
* @param[in] m1 left matrix (mat3x4)
* @param[in] m2 right matrix (mat4x3)
* @param[out] dest destination matrix (mat4)
* @param[in] m1 mat3x4 (left)
* @param[in] m2 mat4x3 (right)
* @param[out] dest destination (result, mat4)
*/
CGLM_INLINE
void
@@ -128,11 +128,11 @@ glm_mat3x4_mul(mat3x4 m1, mat4x3 m2, mat4 dest) {
}
/*!
* @brief multiply matrix with column vector and store in dest column vector
* @brief Multiply mat3x4 (m) by vec3 (v) and store in vec4 (dest).
*
* @param[in] m matrix (left)
* @param[in] v vector (right, column vector)
* @param[out] dest result vector
* @param[in] m mat3x4 (left)
* @param[in] v vec3 (right, column vector)
* @param[out] dest destination (result, column vector)
*/
CGLM_INLINE
void
@@ -146,27 +146,25 @@ glm_mat3x4_mulv(mat3x4 m, vec3 v, vec4 dest) {
}
/*!
* @brief transpose matrix and store in dest
* @brief Transpose mat3x4 (src) and store in mat4x3 (dest).
*
* @param[in] m matrix
* @param[out] dest result
* @param[in] src mat3x4 (left)
* @param[out] dest destination (result, mat4x3)
*/
CGLM_INLINE
void
glm_mat3x4_transpose(mat3x4 m, mat4x3 dest) {
dest[0][0] = m[0][0]; dest[0][1] = m[1][0]; dest[0][2] = m[2][0];
dest[1][0] = m[0][1]; dest[1][1] = m[1][1]; dest[1][2] = m[2][1];
dest[2][0] = m[0][2]; dest[2][1] = m[1][2]; dest[2][2] = m[2][2];
dest[3][0] = m[0][3]; dest[3][1] = m[1][3]; dest[3][2] = m[2][3];
glm_mat3x4_transpose(mat3x4 src, mat4x3 dest) {
dest[0][0] = src[0][0]; dest[0][1] = src[1][0]; dest[0][2] = src[2][0];
dest[1][0] = src[0][1]; dest[1][1] = src[1][1]; dest[1][2] = src[2][1];
dest[2][0] = src[0][2]; dest[2][1] = src[1][2]; dest[2][2] = src[2][2];
dest[3][0] = src[0][3]; dest[3][1] = src[1][3]; dest[3][2] = src[2][3];
}
/*!
* @brief scale (multiply with scalar) matrix
* @brief Multiply mat3x4 (m) by scalar constant (s).
*
* multiply matrix with scalar
*
* @param[in, out] m matrix
* @param[in] s scalar
* @param[in, out] m (src, dest)
* @param[in] s float (scalar)
*/
CGLM_INLINE
void

View File

@@ -35,87 +35,85 @@
#define GLMS_MAT3X4_ZERO ((mat3x4s)GLMS_MAT3X4_ZERO_INIT)
/*!
* @brief make given matrix zero.
* @brief Zero out the mat3x4s (dest).
*
* @param[in, out] mat matrix
* @return[out] dest constructed mat3x4s from raw pointer
*/
CGLM_INLINE
mat3x4s
glms_mat3x4_(zero)(void) {
mat3x4s r;
glm_mat3x4_zero(r.raw);
return r;
mat3x4s dest;
glm_mat3x4_zero(dest.raw);
return dest;
}
/*!
* @brief Create mat3x4 matrix from pointer
* @brief Create mat3x4s (dest) from pointer (src).
*
* @param[in] src pointer to an array of floats
* @return constructed matrix from raw pointer
* @return[out] dest constructed mat3x4s from raw pointer
*/
CGLM_INLINE
mat3x4s
glms_mat3x4_(make)(const float * __restrict src) {
mat3x4s r;
glm_mat3x4_make(src, r.raw);
return r;
mat3x4s dest;
glm_mat3x4_make(src, dest.raw);
return dest;
}
/*!
* @brief multiply m1 and m2 to dest
* @brief Multiply mat3x4s (m1) by mat4x3s (m2) and store in mat4s (dest).
*
* @code
* r = glms_mat3x4_mul(mat3x4s, mat4x3s);
* @endcode
*
* @param[in] m1 left matrix (mat3x4s)
* @param[in] m2 right matrix (mat4x3s)
* @returns destination matrix (mat4s)
* @param[in] m1 mat3x4s (left)
* @param[in] m2 mat4x3s (right)
* @return[out] dest constructed mat4s from raw pointers
*/
CGLM_INLINE
mat4s
glms_mat3x4_(mul)(mat3x4s m1, mat4x3s m2) {
mat4s r;
glm_mat3x4_mul(m1.raw, m2.raw, r.raw);
return r;
mat4s dest;
glm_mat3x4_mul(m1.raw, m2.raw, dest.raw);
return dest;
}
/*!
* @brief multiply matrix with column vector and store in dest column vector
* @brief Multiply mat3x4s (m) by vec3s (v) and store in vec4s (dest).
*
* @param[in] m matrix (left)
* @param[in] v vector (right, column vector)
* @returns destination vector (vec4s)
* @param[in] m mat3x4s (left)
* @param[in] v vec3s (right, column vector)
* @return[out] dest constructed vec4s from raw pointers
*/
CGLM_INLINE
vec4s
glms_mat3x4_(mulv)(mat3x4s m, vec3s v) {
vec4s r;
glm_mat3x4_mulv(m.raw, v.raw, r.raw);
return r;
vec4s dest;
glm_mat3x4_mulv(m.raw, v.raw, dest.raw);
return dest;
}
/*!
* @brief transpose matrix and store in dest
* @brief Transpose mat3x4s (m) and store in mat4x3s (dest).
*
* @param[in] m matrix
* @param[out] dest result
* @param[in] m mat3x4s (left)
* @return[out] dest constructed mat4x3s from raw pointers
*/
CGLM_INLINE
mat4x3s
glms_mat3x4_(transpose)(mat3x4s m) {
mat4x3s r;
glm_mat3x4_transpose(m.raw, r.raw);
return r;
mat4x3s dest;
glm_mat3x4_transpose(m.raw, dest.raw);
return dest;
}
/*!
* @brief scale (multiply with scalar) matrix
* @brief Multiply mat3x4s (m) by scalar constant (s).
*
* multiply matrix with scalar
*
* @param[in, out] m matrix
* @param[in] s scalar
* @param[in, out] m mat3x4s (src, dest)
* @param[in] s float (scalar)
*/
CGLM_INLINE
mat3x4s

View File

@@ -10,14 +10,14 @@
CGLM_EXPORT
void
glmc_mat3x4_copy(mat3x4 mat, mat3x4 dest) {
glm_mat3x4_copy(mat, dest);
glmc_mat3x4_copy(mat3x4 src, mat3x4 dest) {
glm_mat3x4_copy(src, dest);
}
CGLM_EXPORT
void
glmc_mat3x4_zero(mat3x4 mat) {
glm_mat3x4_zero(mat);
glmc_mat3x4_zero(mat3x4 m) {
glm_mat3x4_zero(m);
}
CGLM_EXPORT
@@ -40,8 +40,8 @@ glmc_mat3x4_mulv(mat3x4 m, vec3 v, vec4 dest) {
CGLM_EXPORT
void
glmc_mat3x4_transpose(mat3x4 m, mat4x3 dest) {
glm_mat3x4_transpose(m, dest);
glmc_mat3x4_transpose(mat3x4 src, mat4x3 dest) {
glm_mat3x4_transpose(src, dest);
}
CGLM_EXPORT