diff options
| author | realtradam <[email protected]> | 2023-06-16 01:18:13 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2023-06-16 01:18:13 -0400 |
| commit | a47cc44ef7191d03f8ca1b8d4e6b9dd34fba1807 (patch) | |
| tree | f7e358545f5043df20695d0cf51dcf8caa10cb12 /src/math/rodeo_vec3.c | |
| parent | 425516a9c53183179c43517f1b6501a790378a05 (diff) | |
| download | RodeoKit-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_vec3.c')
| -rw-r--r-- | src/math/rodeo_vec3.c | 191 |
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 + ) + ); +} |
