-
-
Notifications
You must be signed in to change notification settings - Fork 229
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #334 from EasyIP2023/feature/mat3x4
add new matrix mat3x4
- Loading branch information
Showing
24 changed files
with
316 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -50,6 +50,7 @@ Follow the :doc:`build` documentation for this | |
mat2x4 | ||
mat3 | ||
mat3x2 | ||
mat3x4 | ||
mat4 | ||
vec2 | ||
vec2-ext | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
.. default-domain:: C | ||
|
||
mat3x4 | ||
====== | ||
|
||
Header: cglm/mat3x4.h | ||
|
||
Table of contents (click to go): | ||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
Macros: | ||
|
||
1. GLM_MAT3X4_ZERO_INIT | ||
#. GLM_MAT3X4_ZERO | ||
|
||
Functions: | ||
|
||
1. :c:func:`glm_mat3x4_make` | ||
|
||
Functions documentation | ||
~~~~~~~~~~~~~~~~~~~~~~~ | ||
|
||
.. c:function:: void glm_mat3x4_make(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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
/* | ||
* Copyright (c), Recep Aslantas. | ||
* | ||
* MIT License (MIT), http://opensource.org/licenses/MIT | ||
* Full license can be found in the LICENSE file | ||
*/ | ||
|
||
#ifndef cglmc_mat3x4_h | ||
#define cglmc_mat3x4_h | ||
#ifdef __cplusplus | ||
extern "C" { | ||
#endif | ||
|
||
#include "../cglm.h" | ||
|
||
CGLM_EXPORT | ||
void | ||
glmc_mat3x4_make(float * __restrict src, mat3x4 dest); | ||
|
||
#ifdef __cplusplus | ||
} | ||
#endif | ||
#endif /* cglmc_mat3x4_h */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
/* | ||
* Copyright (c), Recep Aslantas. | ||
* | ||
* MIT License (MIT), http://opensource.org/licenses/MIT | ||
* Full license can be found in the LICENSE file | ||
*/ | ||
|
||
/* | ||
Macros: | ||
GLM_MAT3X4_ZERO_INIT | ||
GLM_MAT3X4_ZERO | ||
Functions: | ||
CGLM_INLINE void glm_mat3x4_make(float * restrict src, mat3x4 dest) | ||
*/ | ||
|
||
#ifndef cglm_mat3x4_h | ||
#define cglm_mat3x4_h | ||
|
||
#include "common.h" | ||
|
||
#define GLM_MAT3X4_ZERO_INIT {{0.0f, 0.0f, 0.0f, 0.0f}, \ | ||
{0.0f, 0.0f, 0.0f, 0.0f}, \ | ||
{0.0f, 0.0f, 0.0f, 0.0f}} | ||
|
||
/* for C only */ | ||
#define GLM_MAT3X4_ZERO GLM_MAT3X4_ZERO_INIT | ||
|
||
/*! | ||
* @brief Create mat3x4 matrix from pointer | ||
* | ||
* @param[in] src pointer to an array of floats | ||
* @param[out] dest matrix | ||
*/ | ||
CGLM_INLINE | ||
void | ||
glm_mat3x4_make(float * __restrict src, mat3x4 dest) { | ||
dest[0][0] = src[0]; | ||
dest[0][1] = src[1]; | ||
dest[0][2] = src[2]; | ||
dest[0][3] = src[3]; | ||
|
||
dest[1][0] = src[4]; | ||
dest[1][1] = src[5]; | ||
dest[1][2] = src[6]; | ||
dest[1][3] = src[7]; | ||
|
||
dest[2][0] = src[8]; | ||
dest[2][1] = src[9]; | ||
dest[2][2] = src[10]; | ||
dest[2][3] = src[11]; | ||
} | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
/* | ||
* Copyright (c), Recep Aslantas. | ||
* | ||
* MIT License (MIT), http://opensource.org/licenses/MIT | ||
* Full license can be found in the LICENSE file | ||
*/ | ||
|
||
/* | ||
Macros: | ||
GLMS_MAT3X4_ZERO_INIT | ||
GLMS_MAT3X4_ZERO | ||
Functions: | ||
CGLM_INLINE mat3x4s glms_mat3x4_make(float * __restrict src); | ||
*/ | ||
|
||
#ifndef cglms_mat3x4_h | ||
#define cglms_mat3x4_h | ||
|
||
#include "../common.h" | ||
#include "../types-struct.h" | ||
#include "../mat3x4.h" | ||
|
||
/* api definition */ | ||
#define glms_mat3x4_(NAME) CGLM_STRUCTAPI(mat3x4, NAME) | ||
|
||
#define GLMS_MAT3X4_ZERO_INIT {GLM_MAT3X4_ZERO_INIT} | ||
|
||
/* for C only */ | ||
#define GLMS_MAT3X4_ZERO ((mat3x4s)GLMS_MAT3X4_ZERO_INIT) | ||
|
||
/*! | ||
* @brief Create mat3x4 matrix from pointer | ||
* | ||
* @param[in] src pointer to an array of floats | ||
* @return constructed matrix from raw pointer | ||
*/ | ||
CGLM_INLINE | ||
mat3x4s | ||
glms_mat3x4_(make)(float * __restrict src) { | ||
mat3x4s r; | ||
glm_mat3x4_make(src, r.raw); | ||
return r; | ||
} | ||
|
||
#endif /* cglms_mat3x4_h */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
/* | ||
* Copyright (c), Recep Aslantas. | ||
* | ||
* MIT License (MIT), http://opensource.org/licenses/MIT | ||
* Full license can be found in the LICENSE file | ||
*/ | ||
|
||
#include "../include/cglm/cglm.h" | ||
#include "../include/cglm/call.h" | ||
|
||
CGLM_EXPORT | ||
void | ||
glmc_mat3x4_make(float * __restrict src, mat3x4 dest) { | ||
glm_mat3x4_make(src, dest); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
/* | ||
* Copyright (c), Recep Aslantas. | ||
* | ||
* MIT License (MIT), http://opensource.org/licenses/MIT | ||
* Full license can be found in the LICENSE file | ||
*/ | ||
|
||
#include "test_common.h" | ||
|
||
#ifndef CGLM_TEST_MAT3X4_ONCE | ||
#define CGLM_TEST_MAT3X4_ONCE | ||
|
||
TEST_IMPL(MACRO_GLM_MAT3X4_ZERO_INIT) { | ||
mat3x4 mat3x4_zero = GLM_MAT3X4_ZERO_INIT; | ||
test_assert_mat3x4_eq_zero(mat3x4_zero); | ||
TEST_SUCCESS | ||
} | ||
|
||
TEST_IMPL(MACRO_GLM_MAT3X4_ZERO) { | ||
mat3x4 mat3x4_zero = GLM_MAT3X4_ZERO; | ||
test_assert_mat3x4_eq_zero(mat3x4_zero); | ||
TEST_SUCCESS | ||
} | ||
|
||
#endif /* CGLM_TEST_MAT3X4_ONCE */ | ||
|
||
TEST_IMPL(GLM_PREFIX, mat3x4_make) { | ||
float src[36] = { | ||
0.5f, 1.7f, 10.3f, 4.2f, 8.9f, 1.1f, 2.3f, 4.2f, 66.5f, 23.7f, 6.6f, 8.9f, | ||
2.3f, 4.2f, 66.5f, 23.7f, 6.6f, 8.9f, 0.5f, 1.7f, 10.3f, 4.2f, 8.9f, 1.1f, | ||
5.3f, 4.8f, 96.3f, 13.7f, 4.7f, 5.5f, 2.3f, 4.2f, 66.5f, 23.7f, 6.6f, 8.9f | ||
}; | ||
|
||
mat3x4 dest[3]; | ||
|
||
float *srcp = src; | ||
unsigned int i, j, k; | ||
|
||
for (i = 0, j = 0, k = 0; i < sizeof(src) / sizeof(float); i+=12,j++) { | ||
GLM(mat3x4_make)(srcp + i, dest[j]); | ||
|
||
ASSERT(test_eq(src[ i ], dest[j][k][0])); | ||
ASSERT(test_eq(src[i+1], dest[j][k][1])); | ||
ASSERT(test_eq(src[i+2], dest[j][k][2])); | ||
ASSERT(test_eq(src[i+3], dest[j][k][3])); | ||
|
||
ASSERT(test_eq(src[i+4], dest[j][k+1][0])); | ||
ASSERT(test_eq(src[i+5], dest[j][k+1][1])); | ||
ASSERT(test_eq(src[i+6], dest[j][k+1][2])); | ||
ASSERT(test_eq(src[i+7], dest[j][k+1][3])); | ||
|
||
ASSERT(test_eq(src[i+8], dest[j][k+2][0])); | ||
ASSERT(test_eq(src[i+9], dest[j][k+2][1])); | ||
ASSERT(test_eq(src[i+10], dest[j][k+2][2])); | ||
ASSERT(test_eq(src[i+11], dest[j][k+2][3])); | ||
} | ||
|
||
TEST_SUCCESS | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.