diff options
| author | realtradam <[email protected]> | 2023-06-16 01:15:57 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2023-06-16 01:15:57 -0400 |
| commit | 94625b3133193acd22b68595fe922b7228528b11 (patch) | |
| tree | f7e358545f5043df20695d0cf51dcf8caa10cb12 /src/math | |
| parent | acc9db32d765728b63162d6fc74a278d0da10b83 (diff) | |
| download | RodeoKit-94625b3133193acd22b68595fe922b7228528b11.tar.gz RodeoKit-94625b3133193acd22b68595fe922b7228528b11.zip | |
fix matrix wrapper as well as a lot of refactoring cleanupmatrixtemp
Diffstat (limited to 'src/math')
| -rw-r--r-- | src/math/irodeo_mat4.h | 8 | ||||
| -rw-r--r-- | src/math/irodeo_rng_t.h | 23 | ||||
| -rw-r--r-- | src/math/rodeo_mat4.c | 41 | ||||
| -rw-r--r-- | src/math/rodeo_rng.c | 81 | ||||
| -rw-r--r-- | src/math/rodeo_vec2.c | 8 | ||||
| -rw-r--r-- | src/math/rodeo_vec3.c | 12 |
6 files changed, 162 insertions, 11 deletions
diff --git a/src/math/irodeo_mat4.h b/src/math/irodeo_mat4.h new file mode 100644 index 0000000..ff625a7 --- /dev/null +++ b/src/math/irodeo_mat4.h @@ -0,0 +1,8 @@ +#pragma once + +// -- internal -- +// public +#include "rodeo/math/mat4_t.h" + +void +irodeo_print_matrix(rodeo_math_mat4_t mat); diff --git a/src/math/irodeo_rng_t.h b/src/math/irodeo_rng_t.h new file mode 100644 index 0000000..0419496 --- /dev/null +++ b/src/math/irodeo_rng_t.h @@ -0,0 +1,23 @@ +#pragma once + +// -- internal -- +// public +#include "rodeo/math/rng_t.h" +// private +#include "math/irodeo_rng_t.h" + +// -- external -- +#include "stc/crand.h" + +typedef +struct +{ + rodeo_math_rng_generator_t global_generator; +} +irodeo_math_rng_state_t; + +struct +irodeo_math_rng_generator +{ + crand_t crand; +}; diff --git a/src/math/rodeo_mat4.c b/src/math/rodeo_mat4.c index 958e123..70d0226 100644 --- a/src/math/rodeo_mat4.c +++ b/src/math/rodeo_mat4.c @@ -2,6 +2,7 @@ // -- internal -- // public #include "rodeo/math.h" +#include "rodeo/log.h" // private #include "math/irodeo_math.h" @@ -35,12 +36,50 @@ irodeo_math_rodeoMat4_to_cglmMat4(rodeo_math_mat4_t in) in.val.m20, in.val.m21, in.val.m22, in.val.m23 }, { - in.val.m20, in.val.m21, in.val.m22, in.val.m23 + in.val.m30, in.val.m31, in.val.m32, in.val.m33 }, } }; } +void +irodeo_print_matrix(rodeo_math_mat4_t mat) +{ + rodeo_log( + rodeo_logLevel_warning, + "%.05f, %.05f, %.05f, %.05f", + mat.raw[0][0], + mat.raw[0][1], + mat.raw[0][2], + mat.raw[0][3] + ); + rodeo_log( + rodeo_logLevel_info, + "%.05f, %.05f, %.05f, %.05f", + mat.raw[1][0], + mat.raw[1][1], + mat.raw[1][2], + mat.raw[1][3] + ); + rodeo_log( + rodeo_logLevel_info, + "%.05f, %.05f, %.05f, %.05f", + mat.raw[2][0], + mat.raw[2][1], + mat.raw[2][2], + mat.raw[2][3] + ); + rodeo_log( + rodeo_logLevel_info, + "%.05f, %.05f, %.05f, %.05f", + mat.raw[3][0], + mat.raw[3][1], + mat.raw[3][2], + mat.raw[3][3] + ); +} + + rodeo_math_mat4_t rodeo_math_mat4_identity(void) { diff --git a/src/math/rodeo_rng.c b/src/math/rodeo_rng.c new file mode 100644 index 0000000..bf94e0b --- /dev/null +++ b/src/math/rodeo_rng.c @@ -0,0 +1,81 @@ + +// internal +// public +#include "rodeo/math/rng.h" +// private +#include "math/irodeo_rng_t.h" + +// external +#include "stc/crand.h" +#include "SDL.h" + +// system +#include <inttypes.h> + +void +rodeo_math_rng_init(void) +{ + csrand(SDL_GetTicks64()); +} + +void +rodeo_math_rng_deinit(void) +{ + // no need to do anything +} + +rodeo_math_rng_generator_t +rodeo_math_rng_generator_create(uint64_t seed) +{ + rodeo_math_rng_generator_t result = { + .seed = seed, + .data = malloc(sizeof(*(rodeo_math_rng_generator_t){0}.data)) + }; + result.data->crand = crand_init(seed); + return result; +} + +void +rodeo_math_rng_generator_destroy(rodeo_math_rng_generator_t generator) +{ + free(generator.data); +} + +double +rodeo_math_rng_double_get(rodeo_math_rng_generator_t generator) +{ + if(generator.seed == 0) + { + return crandf(); + } + else + { + return crand_f64(&generator.data->crand); + } +} + +float +rodeo_math_rng_float_get(rodeo_math_rng_generator_t generator) +{ + return (float)rodeo_math_rng_double_get(generator); +} + +uint64_t +rodeo_math_rng_uint64_get(rodeo_math_rng_generator_t generator) +{ + if(generator.seed == 0) + { + return crand(); + } + else + { + return crand_u64(&generator.data->crand); + } +} + +uint32_t +rodeo_math_rng_uint32_get(rodeo_math_rng_generator_t generator) +{ + return (uint32_t)rodeo_math_rng_uint64_get(generator); +} + diff --git a/src/math/rodeo_vec2.c b/src/math/rodeo_vec2.c index a9e369e..be9d7ff 100644 --- a/src/math/rodeo_vec2.c +++ b/src/math/rodeo_vec2.c @@ -11,8 +11,8 @@ rodeo_math_vec2_t irodeo_math_cglmVec2_to_rodeoVec2(vec2s in) { return (rodeo_math_vec2_t){ - .x = in.raw[0], - .y = in.raw[1] + .raw[0] = in.raw[0], + .raw[1] = in.raw[1] }; } @@ -20,8 +20,8 @@ vec2s irodeo_math_rodeoVec2_to_cglmVec2(rodeo_math_vec2_t in) { return (vec2s){ - .raw[0] = in.x, - .raw[1] = in.y + .raw[0] = in.raw[0], + .raw[1] = in.raw[1] }; } diff --git a/src/math/rodeo_vec3.c b/src/math/rodeo_vec3.c index bcdf86b..c94ecd3 100644 --- a/src/math/rodeo_vec3.c +++ b/src/math/rodeo_vec3.c @@ -11,9 +11,9 @@ rodeo_math_vec3_t irodeo_math_cglmVec3_to_rodeoVec3(vec3s in) { return (rodeo_math_vec3_t){ - .x = in.raw[0], - .y = in.raw[1], - .z = in.raw[2] + .raw[0] = in.raw[0], + .raw[1] = in.raw[1], + .raw[2] = in.raw[2] }; } @@ -21,9 +21,9 @@ vec3s irodeo_math_rodeoVec3_to_cglmVec3(rodeo_math_vec3_t in) { return (vec3s){ - .raw[0] = in.x, - .raw[1] = in.y, - .raw[2] = in.z + .raw[0] = in.raw[0], + .raw[1] = in.raw[1], + .raw[2] = in.raw[2], }; } |
