summaryrefslogtreecommitdiffhomepage
path: root/src/math
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2023-06-16 01:15:57 -0400
committerrealtradam <[email protected]>2023-06-16 01:15:57 -0400
commit94625b3133193acd22b68595fe922b7228528b11 (patch)
treef7e358545f5043df20695d0cf51dcf8caa10cb12 /src/math
parentacc9db32d765728b63162d6fc74a278d0da10b83 (diff)
downloadRodeoKit-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.h8
-rw-r--r--src/math/irodeo_rng_t.h23
-rw-r--r--src/math/rodeo_mat4.c41
-rw-r--r--src/math/rodeo_rng.c81
-rw-r--r--src/math/rodeo_vec2.c8
-rw-r--r--src/math/rodeo_vec3.c12
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],
};
}