|
22 | 22 | CGLM_INLINE void glm_mat4_copy(mat4 mat, mat4 dest);
|
23 | 23 | CGLM_INLINE void glm_mat4_identity(mat4 mat);
|
24 | 24 | CGLM_INLINE void glm_mat4_identity_array(mat4 * restrict mat, size_t count);
|
| 25 | + CGLM_INLINE void glm_mat4_zero(mat4 mat); |
25 | 26 | CGLM_INLINE void glm_mat4_pick3(mat4 mat, mat3 dest);
|
26 | 27 | CGLM_INLINE void glm_mat4_pick3t(mat4 mat, mat3 dest);
|
27 | 28 | CGLM_INLINE void glm_mat4_ins3(mat3 mat, mat4 dest);
|
|
31 | 32 | CGLM_INLINE void glm_mat4_mulv3(mat4 m, vec3 v, vec3 dest);
|
32 | 33 | CGLM_INLINE float glm_mat4_trace(mat4 m);
|
33 | 34 | CGLM_INLINE float glm_mat4_trace3(mat4 m);
|
| 35 | + CGLM_INLINE void glm_mat4_quat(mat4 m, versor dest) ; |
34 | 36 | CGLM_INLINE void glm_mat4_transpose_to(mat4 m, mat4 dest);
|
35 | 37 | CGLM_INLINE void glm_mat4_transpose(mat4 m);
|
36 | 38 | CGLM_INLINE void glm_mat4_scale_p(mat4 m, float s);
|
|
40 | 42 | CGLM_INLINE void glm_mat4_inv_fast(mat4 mat, mat4 dest);
|
41 | 43 | CGLM_INLINE void glm_mat4_swap_col(mat4 mat, int col1, int col2);
|
42 | 44 | CGLM_INLINE void glm_mat4_swap_row(mat4 mat, int row1, int row2);
|
| 45 | + CGLM_INLINE float glm_mat4_rmc(vec4 r, mat4 m, vec4 c); |
43 | 46 | */
|
44 | 47 |
|
45 | 48 | #ifndef cglm_mat_h
|
|
98 | 101 | CGLM_INLINE
|
99 | 102 | void
|
100 | 103 | glm_mat4_ucopy(mat4 mat, mat4 dest) {
|
101 |
| - glm__memcpy(float, dest, mat, sizeof(mat4)); |
| 104 | + dest[0][0] = mat[0][0]; dest[1][0] = mat[1][0]; |
| 105 | + dest[0][1] = mat[0][1]; dest[1][1] = mat[1][1]; |
| 106 | + dest[0][2] = mat[0][2]; dest[1][2] = mat[1][2]; |
| 107 | + dest[0][3] = mat[0][3]; dest[1][3] = mat[1][3]; |
| 108 | + |
| 109 | + dest[2][0] = mat[2][0]; dest[3][0] = mat[3][0]; |
| 110 | + dest[2][1] = mat[2][1]; dest[3][1] = mat[3][1]; |
| 111 | + dest[2][2] = mat[2][2]; dest[3][2] = mat[3][2]; |
| 112 | + dest[2][3] = mat[2][3]; dest[3][3] = mat[3][3]; |
102 | 113 | }
|
103 | 114 |
|
104 | 115 | /*!
|
@@ -168,6 +179,18 @@ glm_mat4_identity_array(mat4 * __restrict mat, size_t count) {
|
168 | 179 | }
|
169 | 180 | }
|
170 | 181 |
|
| 182 | +/*! |
| 183 | + * @brief make given matrix zero. |
| 184 | + * |
| 185 | + * @param[in, out] mat matrix |
| 186 | + */ |
| 187 | +CGLM_INLINE |
| 188 | +void |
| 189 | +glm_mat4_zero(mat4 mat) { |
| 190 | + CGLM_ALIGN_MAT mat4 t = GLM_MAT4_ZERO_INIT; |
| 191 | + glm_mat4_copy(t, mat); |
| 192 | +} |
| 193 | + |
171 | 194 | /*!
|
172 | 195 | * @brief copy upper-left of mat4 to mat3
|
173 | 196 | *
|
@@ -474,10 +497,8 @@ glm_mat4_transpose(mat4 m) {
|
474 | 497 | glm_mat4_transp_sse2(m, m);
|
475 | 498 | #else
|
476 | 499 | mat4 d;
|
477 |
| - |
478 | 500 | glm_mat4_transpose_to(m, d);
|
479 |
| - |
480 |
| - glm__memcpy(float, m, d, sizeof(mat4)); |
| 501 | + glm_mat4_ucopy(d, m); |
481 | 502 | #endif
|
482 | 503 | }
|
483 | 504 |
|
@@ -682,7 +703,7 @@ glm_mat4_swap_row(mat4 mat, int row1, int row2) {
|
682 | 703 | *
|
683 | 704 | * rmc stands for Row * Matrix * Column
|
684 | 705 | *
|
685 |
| - * the result is scalar because S * M = Matrix1x4 (row vector), |
| 706 | + * the result is scalar because R * M = Matrix1x4 (row vector), |
686 | 707 | * then Matrix1x4 * Vec4 (column vector) = Matrix1x1 (Scalar)
|
687 | 708 | *
|
688 | 709 | * @param[in] r row vector or matrix1x4
|
|
0 commit comments