summaryrefslogtreecommitdiffhomepage
path: root/src/math/rodeo_vec3.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/math/rodeo_vec3.c')
-rw-r--r--src/math/rodeo_vec3.c191
1 files changed, 191 insertions, 0 deletions
diff --git a/src/math/rodeo_vec3.c b/src/math/rodeo_vec3.c
new file mode 100644
index 0000000..c94ecd3
--- /dev/null
+++ b/src/math/rodeo_vec3.c
@@ -0,0 +1,191 @@
+
+// -- internal --
+// public
+#include "rodeo/math.h"
+#include "rodeo/math/vec3.h"
+// private
+#include "math/irodeo_math.h"
+#include "math/irodeo_vec3.h"
+
+rodeo_math_vec3_t
+irodeo_math_cglmVec3_to_rodeoVec3(vec3s in)
+{
+ return (rodeo_math_vec3_t){
+ .raw[0] = in.raw[0],
+ .raw[1] = in.raw[1],
+ .raw[2] = in.raw[2]
+ };
+}
+
+vec3s
+irodeo_math_rodeoVec3_to_cglmVec3(rodeo_math_vec3_t in)
+{
+ return (vec3s){
+ .raw[0] = in.raw[0],
+ .raw[1] = in.raw[1],
+ .raw[2] = in.raw[2],
+ };
+}
+
+rodeo_math_vec3_t
+rodeo_math_vec3_zero(void)
+{
+ return irodeo_math_cglmVec3_to_rodeoVec3(glms_vec3_zero());
+}
+
+rodeo_math_vec3_t
+rodeo_math_vec3_one(void)
+{
+ return irodeo_math_cglmVec3_to_rodeoVec3(glms_vec3_one());
+}
+
+float
+rodeo_math_vec3_dot(rodeo_math_vec3_t a, rodeo_math_vec3_t b)
+{
+ return glms_vec3_dot(
+ irodeo_math_rodeoVec3_to_cglmVec3(a),
+ irodeo_math_rodeoVec3_to_cglmVec3(b)
+ );
+}
+
+float
+rodeo_math_vec3_cross(rodeo_math_vec3_t a, rodeo_math_vec3_t b)
+{
+ return glms_vec3_dot(
+ irodeo_math_rodeoVec3_to_cglmVec3(a),
+ irodeo_math_rodeoVec3_to_cglmVec3(b)
+ );
+}
+
+rodeo_math_vec3_t
+rodeo_math_vec3_add(rodeo_math_vec3_t a, rodeo_math_vec3_t b)
+{
+ return irodeo_math_cglmVec3_to_rodeoVec3(
+ glms_vec3_add(
+ irodeo_math_rodeoVec3_to_cglmVec3(a),
+ irodeo_math_rodeoVec3_to_cglmVec3(b)
+ )
+ );
+}
+
+rodeo_math_vec3_t
+rodeo_math_vec3_subtract(rodeo_math_vec3_t a, rodeo_math_vec3_t b)
+{
+ return irodeo_math_cglmVec3_to_rodeoVec3(
+ glms_vec3_sub(
+ irodeo_math_rodeoVec3_to_cglmVec3(a),
+ irodeo_math_rodeoVec3_to_cglmVec3(b)
+ )
+ );
+}
+
+rodeo_math_vec3_t
+rodeo_math_vec3_multiply(rodeo_math_vec3_t a, rodeo_math_vec3_t b)
+{
+ return irodeo_math_cglmVec3_to_rodeoVec3(
+ glms_vec3_mul(
+ irodeo_math_rodeoVec3_to_cglmVec3(a),
+ irodeo_math_rodeoVec3_to_cglmVec3(b)
+ )
+ );
+}
+
+rodeo_math_vec3_t
+rodeo_math_vec3_scale(rodeo_math_vec3_t a, float b)
+{
+ return irodeo_math_cglmVec3_to_rodeoVec3(
+ glms_vec3_scale(
+ irodeo_math_rodeoVec3_to_cglmVec3(a),
+ b
+ )
+ );
+}
+
+rodeo_math_vec3_t
+rodeo_math_vec3_divide(rodeo_math_vec3_t a, rodeo_math_vec3_t b)
+{
+ return irodeo_math_cglmVec3_to_rodeoVec3(
+ glms_vec3_div(
+ irodeo_math_rodeoVec3_to_cglmVec3(a),
+ irodeo_math_rodeoVec3_to_cglmVec3(b)
+ )
+ );
+}
+
+rodeo_math_vec3_t
+rodeo_math_vec3_negate(rodeo_math_vec3_t a)
+{
+ return irodeo_math_cglmVec3_to_rodeoVec3(
+ glms_vec3_negate(
+ irodeo_math_rodeoVec3_to_cglmVec3(a)
+ )
+ );
+}
+
+rodeo_math_vec3_t
+rodeo_math_vec3_normalize(rodeo_math_vec3_t a)
+{
+ return irodeo_math_cglmVec3_to_rodeoVec3(
+ glms_vec3_normalize(
+ irodeo_math_rodeoVec3_to_cglmVec3(a)
+ )
+ );
+}
+
+rodeo_math_vec3_t
+rodeo_math_vec3_rotate(rodeo_math_vec3_t a, float turns, rodeo_math_vec3_t axis)
+{
+ return irodeo_math_cglmVec3_to_rodeoVec3(
+ glms_vec3_rotate(
+ irodeo_math_rodeoVec3_to_cglmVec3(a),
+ rodeo_math_radians_to_turns(turns),
+ irodeo_math_rodeoVec3_to_cglmVec3(axis)
+ )
+ );
+}
+
+float
+rodeo_math_vec3_distance(rodeo_math_vec3_t a, rodeo_math_vec3_t b)
+{
+ return (
+ glms_vec3_distance(
+ irodeo_math_rodeoVec3_to_cglmVec3(a),
+ irodeo_math_rodeoVec3_to_cglmVec3(b)
+ )
+ );
+}
+
+float
+rodeo_math_vec3_distanceSq(rodeo_math_vec3_t a, rodeo_math_vec3_t b)
+{
+ return (
+ glms_vec3_distance2(
+ irodeo_math_rodeoVec3_to_cglmVec3(a),
+ irodeo_math_rodeoVec3_to_cglmVec3(b)
+ )
+ );
+}
+
+rodeo_math_vec3_t
+rodeo_math_vec3_clamp(rodeo_math_vec3_t a, float minimum, float maximum)
+{
+ return irodeo_math_cglmVec3_to_rodeoVec3(
+ glms_vec3_clamp(
+ irodeo_math_rodeoVec3_to_cglmVec3(a),
+ minimum,
+ maximum
+ )
+ );
+}
+
+rodeo_math_vec3_t
+rodeo_math_vec3_lerp(rodeo_math_vec3_t from, rodeo_math_vec3_t to, float t)
+{
+ return irodeo_math_cglmVec3_to_rodeoVec3(
+ glms_vec3_lerp(
+ irodeo_math_rodeoVec3_to_cglmVec3(from),
+ irodeo_math_rodeoVec3_to_cglmVec3(to),
+ t
+ )
+ );
+}