summaryrefslogtreecommitdiffhomepage
path: root/src/math/rodeo_vec2.c
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2023-06-16 01:18:13 -0400
committerrealtradam <[email protected]>2023-06-16 01:18:13 -0400
commita47cc44ef7191d03f8ca1b8d4e6b9dd34fba1807 (patch)
treef7e358545f5043df20695d0cf51dcf8caa10cb12 /src/math/rodeo_vec2.c
parent425516a9c53183179c43517f1b6501a790378a05 (diff)
downloadRodeoKit-a47cc44ef7191d03f8ca1b8d4e6b9dd34fba1807.tar.gz
RodeoKit-a47cc44ef7191d03f8ca1b8d4e6b9dd34fba1807.zip
matrix math wrapper as well as various refactors for consistant and cleaner code
Diffstat (limited to 'src/math/rodeo_vec2.c')
-rw-r--r--src/math/rodeo_vec2.c189
1 files changed, 189 insertions, 0 deletions
diff --git a/src/math/rodeo_vec2.c b/src/math/rodeo_vec2.c
new file mode 100644
index 0000000..be9d7ff
--- /dev/null
+++ b/src/math/rodeo_vec2.c
@@ -0,0 +1,189 @@
+
+// -- internal --
+// public
+#include "rodeo/math.h"
+#include "rodeo/math/vec2.h"
+// private
+#include "math/irodeo_math.h"
+#include "math/irodeo_vec2.h"
+
+rodeo_math_vec2_t
+irodeo_math_cglmVec2_to_rodeoVec2(vec2s in)
+{
+ return (rodeo_math_vec2_t){
+ .raw[0] = in.raw[0],
+ .raw[1] = in.raw[1]
+ };
+}
+
+vec2s
+irodeo_math_rodeoVec2_to_cglmVec2(rodeo_math_vec2_t in)
+{
+ return (vec2s){
+ .raw[0] = in.raw[0],
+ .raw[1] = in.raw[1]
+ };
+}
+
+
+rodeo_math_vec2_t
+rodeo_math_vec2_zero(void)
+{
+ return irodeo_math_cglmVec2_to_rodeoVec2(glms_vec2_zero());
+}
+
+rodeo_math_vec2_t
+rodeo_math_vec2_one(void)
+{
+ return irodeo_math_cglmVec2_to_rodeoVec2(glms_vec2_one());
+}
+
+float
+rodeo_math_vec2_dot(rodeo_math_vec2_t a, rodeo_math_vec2_t b)
+{
+ return glms_vec2_dot(
+ irodeo_math_rodeoVec2_to_cglmVec2(a),
+ irodeo_math_rodeoVec2_to_cglmVec2(b)
+ );
+}
+
+float
+rodeo_math_vec2_cross(rodeo_math_vec2_t a, rodeo_math_vec2_t b)
+{
+ return glms_vec2_dot(
+ irodeo_math_rodeoVec2_to_cglmVec2(a),
+ irodeo_math_rodeoVec2_to_cglmVec2(b)
+ );
+}
+
+rodeo_math_vec2_t
+rodeo_math_vec2_add(rodeo_math_vec2_t a, rodeo_math_vec2_t b)
+{
+ return irodeo_math_cglmVec2_to_rodeoVec2(
+ glms_vec2_add(
+ irodeo_math_rodeoVec2_to_cglmVec2(a),
+ irodeo_math_rodeoVec2_to_cglmVec2(b)
+ )
+ );
+}
+
+rodeo_math_vec2_t
+rodeo_math_vec2_subtract(rodeo_math_vec2_t a, rodeo_math_vec2_t b)
+{
+ return irodeo_math_cglmVec2_to_rodeoVec2(
+ glms_vec2_sub(
+ irodeo_math_rodeoVec2_to_cglmVec2(a),
+ irodeo_math_rodeoVec2_to_cglmVec2(b)
+ )
+ );
+}
+
+rodeo_math_vec2_t
+rodeo_math_vec2_multiply(rodeo_math_vec2_t a, rodeo_math_vec2_t b)
+{
+ return irodeo_math_cglmVec2_to_rodeoVec2(
+ glms_vec2_mul(
+ irodeo_math_rodeoVec2_to_cglmVec2(a),
+ irodeo_math_rodeoVec2_to_cglmVec2(b)
+ )
+ );
+}
+
+rodeo_math_vec2_t
+rodeo_math_vec2_scale(rodeo_math_vec2_t a, float b)
+{
+ return irodeo_math_cglmVec2_to_rodeoVec2(
+ glms_vec2_scale(
+ irodeo_math_rodeoVec2_to_cglmVec2(a),
+ b
+ )
+ );
+}
+
+rodeo_math_vec2_t
+rodeo_math_vec2_divide(rodeo_math_vec2_t a, rodeo_math_vec2_t b)
+{
+ return irodeo_math_cglmVec2_to_rodeoVec2(
+ glms_vec2_div(
+ irodeo_math_rodeoVec2_to_cglmVec2(a),
+ irodeo_math_rodeoVec2_to_cglmVec2(b)
+ )
+ );
+}
+
+rodeo_math_vec2_t
+rodeo_math_vec2_negate(rodeo_math_vec2_t a)
+{
+ return irodeo_math_cglmVec2_to_rodeoVec2(
+ glms_vec2_negate(
+ irodeo_math_rodeoVec2_to_cglmVec2(a)
+ )
+ );
+}
+
+rodeo_math_vec2_t
+rodeo_math_vec2_normalize(rodeo_math_vec2_t a)
+{
+ return irodeo_math_cglmVec2_to_rodeoVec2(
+ glms_vec2_normalize(
+ irodeo_math_rodeoVec2_to_cglmVec2(a)
+ )
+ );
+}
+
+rodeo_math_vec2_t
+rodeo_math_vec2_rotate(rodeo_math_vec2_t a, float turns)
+{
+ return irodeo_math_cglmVec2_to_rodeoVec2(
+ glms_vec2_rotate(
+ irodeo_math_rodeoVec2_to_cglmVec2(a),
+ rodeo_math_radians_to_turns(turns)
+ )
+ );
+}
+
+float
+rodeo_math_vec2_distance(rodeo_math_vec2_t a, rodeo_math_vec2_t b)
+{
+ return (
+ glms_vec2_distance(
+ irodeo_math_rodeoVec2_to_cglmVec2(a),
+ irodeo_math_rodeoVec2_to_cglmVec2(b)
+ )
+ );
+}
+
+float
+rodeo_math_vec2_distanceSq(rodeo_math_vec2_t a, rodeo_math_vec2_t b)
+{
+ return (
+ glms_vec2_distance2(
+ irodeo_math_rodeoVec2_to_cglmVec2(a),
+ irodeo_math_rodeoVec2_to_cglmVec2(b)
+ )
+ );
+}
+
+rodeo_math_vec2_t
+rodeo_math_vec2_clamp(rodeo_math_vec2_t a, float minimum, float maximum)
+{
+ return irodeo_math_cglmVec2_to_rodeoVec2(
+ glms_vec2_clamp(
+ irodeo_math_rodeoVec2_to_cglmVec2(a),
+ minimum,
+ maximum
+ )
+ );
+}
+
+rodeo_math_vec2_t
+rodeo_math_vec2_lerp(rodeo_math_vec2_t from, rodeo_math_vec2_t to, float t)
+{
+ return irodeo_math_cglmVec2_to_rodeoVec2(
+ glms_vec2_lerp(
+ irodeo_math_rodeoVec2_to_cglmVec2(from),
+ irodeo_math_rodeoVec2_to_cglmVec2(to),
+ t
+ )
+ );
+}