From 463099350ac160f70e87ad5e10eba7fc2c35879b Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Wed, 28 Nov 2018 10:28:00 +0300 Subject: [PATCH 1/8] vec: use `_negate` instead of `_flipsign` and `_inv` * negate is better and common name, flipsign is deprecated now. --- docs/source/vec3.rst | 17 ++++++++++++ include/cglm/affine-mat.h | 2 +- include/cglm/affine.h | 6 ++--- include/cglm/call/vec3.h | 8 ++++++ include/cglm/quat.h | 6 ++--- include/cglm/vec3.h | 55 +++++++++++++++++++++++++++++++++------ src/vec3.c | 12 +++++++++ 7 files changed, 91 insertions(+), 15 deletions(-) diff --git a/docs/source/vec3.rst b/docs/source/vec3.rst index e4a2746..252c8f5 100644 --- a/docs/source/vec3.rst +++ b/docs/source/vec3.rst @@ -52,6 +52,8 @@ Functions: #. :c:func:`glm_vec_muladds` #. :c:func:`glm_vec_flipsign` #. :c:func:`glm_vec_flipsign_to` +#. :c:func:`glm_vec_negate` +#. :c:func:`glm_vec_negate_to` #. :c:func:`glm_vec_inv` #. :c:func:`glm_vec_inv_to` #. :c:func:`glm_vec_normalize` @@ -281,6 +283,21 @@ Functions documentation | *[in]* **v** vector | *[out]* **dest** negated vector +.. c:function:: void glm_vec_negate(vec3 v) + + negate vector components + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec_negate_to(vec3 v, vec3 dest) + + negate vector components and store result in dest + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** negated vector + .. c:function:: void glm_vec_inv(vec3 v) make vector as inverse/opposite of itself diff --git a/include/cglm/affine-mat.h b/include/cglm/affine-mat.h index 1f66776..d26857b 100644 --- a/include/cglm/affine-mat.h +++ b/include/cglm/affine-mat.h @@ -160,7 +160,7 @@ glm_inv_tr(mat4 mat) { /* translate */ glm_mat3_mulv(r, mat[3], t); - glm_vec_flipsign(t); + glm_vec_negate(t); glm_vec_copy(t, mat[3]); #endif } diff --git a/include/cglm/affine.h b/include/cglm/affine.h index dd2f619..4c0e1e9 100644 --- a/include/cglm/affine.h +++ b/include/cglm/affine.h @@ -370,7 +370,7 @@ void glm_rotate_at(mat4 m, vec3 pivot, float angle, vec3 axis) { CGLM_ALIGN(8) vec3 pivotInv; - glm_vec_inv_to(pivot, pivotInv); + glm_vec_negate_to(pivot, pivotInv); glm_translate(m, pivot); glm_rotate(m, angle, axis); @@ -395,7 +395,7 @@ void glm_rotate_atm(mat4 m, vec3 pivot, float angle, vec3 axis) { CGLM_ALIGN(8) vec3 pivotInv; - glm_vec_inv_to(pivot, pivotInv); + glm_vec_negate_to(pivot, pivotInv); glm_translate_make(m, pivot); glm_rotate(m, angle, axis); @@ -467,7 +467,7 @@ glm_decompose_rs(mat4 m, mat4 r, vec3 s) { glm_vec4_flipsign(r[0]); glm_vec4_flipsign(r[1]); glm_vec4_flipsign(r[2]); - glm_vec_flipsign(s); + glm_vec_negate(s); } } diff --git a/include/cglm/call/vec3.h b/include/cglm/call/vec3.h index ae21620..d96de98 100644 --- a/include/cglm/call/vec3.h +++ b/include/cglm/call/vec3.h @@ -116,6 +116,14 @@ CGLM_EXPORT void glmc_vec_flipsign_to(vec3 v, vec3 dest); +CGLM_EXPORT +void +glmc_vec_negate(vec3 v); + +CGLM_EXPORT +void +glmc_vec_negate_to(vec3 v, vec3 dest); + CGLM_EXPORT void glmc_vec_inv(vec3 v); diff --git a/include/cglm/quat.h b/include/cglm/quat.h index c544f0d..b4283b6 100644 --- a/include/cglm/quat.h +++ b/include/cglm/quat.h @@ -670,7 +670,7 @@ glm_quat_look(vec3 eye, versor ori, mat4 dest) { /* translate */ glm_mat4_mulv3(dest, eye, 1.0f, dest[3]); - glm_vec_flipsign(dest[3]); + glm_vec_negate(dest[3]); } /*! @@ -778,7 +778,7 @@ void glm_quat_rotate_at(mat4 m, versor q, vec3 pivot) { CGLM_ALIGN(8) vec3 pivotInv; - glm_vec_inv_to(pivot, pivotInv); + glm_vec_negate_to(pivot, pivotInv); glm_translate(m, pivot); glm_quat_rotate(m, q, m); @@ -802,7 +802,7 @@ void glm_quat_rotate_atm(mat4 m, versor q, vec3 pivot) { CGLM_ALIGN(8) vec3 pivotInv; - glm_vec_inv_to(pivot, pivotInv); + glm_vec_negate_to(pivot, pivotInv); glm_translate_make(m, pivot); glm_quat_rotate(m, q, m); diff --git a/include/cglm/vec3.h b/include/cglm/vec3.h index fc763a7..9ffcc9c 100644 --- a/include/cglm/vec3.h +++ b/include/cglm/vec3.h @@ -24,6 +24,8 @@ Functions: CGLM_INLINE void glm_vec3(vec4 v4, vec3 dest); CGLM_INLINE void glm_vec_copy(vec3 a, vec3 dest); + CGLM_INLINE void glm_vec_zero(vec3 v); + CGLM_INLINE void glm_vec_one(vec3 v); CGLM_INLINE float glm_vec_dot(vec3 a, vec3 b); CGLM_INLINE void glm_vec_cross(vec3 a, vec3 b, vec3 d); CGLM_INLINE float glm_vec_norm2(vec3 v); @@ -40,7 +42,11 @@ CGLM_INLINE void glm_vec_addadd(vec3 a, vec3 b, vec3 dest); CGLM_INLINE void glm_vec_subadd(vec3 a, vec3 b, vec3 dest); CGLM_INLINE void glm_vec_muladd(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec_muladds(vec3 a, float s, vec3 dest); CGLM_INLINE void glm_vec_flipsign(vec3 v); + CGLM_INLINE void glm_vec_flipsign_to(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec_negate_to(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec_negate(vec3 v); CGLM_INLINE void glm_vec_inv(vec3 v); CGLM_INLINE void glm_vec_inv_to(vec3 v, vec3 dest); CGLM_INLINE void glm_vec_normalize(vec3 v); @@ -49,18 +55,26 @@ CGLM_INLINE float glm_vec_angle(vec3 v1, vec3 v2); CGLM_INLINE void glm_vec_rotate(vec3 v, float angle, vec3 axis); CGLM_INLINE void glm_vec_rotate_m4(mat4 m, vec3 v, vec3 dest); + CGLM_INLINE void glm_vec_rotate_m4(mat3 m, vec3 v, vec3 dest); CGLM_INLINE void glm_vec_proj(vec3 a, vec3 b, vec3 dest); CGLM_INLINE void glm_vec_center(vec3 v1, vec3 v2, vec3 dest); + CGLM_INLINE float glm_vec_distance2(vec3 v1, vec3 v2); CGLM_INLINE void glm_vec_maxv(vec3 v1, vec3 v2, vec3 dest); CGLM_INLINE void glm_vec_minv(vec3 v1, vec3 v2, vec3 dest); CGLM_INLINE void glm_vec_ortho(vec3 v, vec3 dest); CGLM_INLINE void glm_vec_clamp(vec3 v, float minVal, float maxVal); + CGLM_INLINE void glm_vec_lerp(vec3 from, vec3 to, float t, vec3 dest); Convenient: CGLM_INLINE void glm_cross(vec3 a, vec3 b, vec3 d); CGLM_INLINE float glm_dot(vec3 a, vec3 b); CGLM_INLINE void glm_normalize(vec3 v); CGLM_INLINE void glm_normalize_to(vec3 v, vec3 dest); + + DEPRECATED: + glm_vec_dup + glm_vec_flipsign + glm_vec_flipsign_to */ #ifndef cglm_vec3_h @@ -120,9 +134,7 @@ glm_vec_copy(vec3 a, vec3 dest) { CGLM_INLINE void glm_vec_zero(vec3 v) { - v[0] = 0.0f; - v[1] = 0.0f; - v[2] = 0.0f; + v[0] = v[1] = v[2] = 0.0f; } /*! @@ -133,9 +145,7 @@ glm_vec_zero(vec3 v) { CGLM_INLINE void glm_vec_one(vec3 v) { - v[0] = 1.0f; - v[1] = 1.0f; - v[2] = 1.0f; + v[0] = v[1] = v[2] = 1.0f; } /*! @@ -408,7 +418,9 @@ glm_vec_muladds(vec3 a, float s, vec3 dest) { } /*! - * @brief flip sign of all vec3 members + * DEPRECATED! use glm_vec_negate and friends + * + * @brief negate vector components * * @param[in, out] v vector */ @@ -421,7 +433,9 @@ glm_vec_flipsign(vec3 v) { } /*! - * @brief flip sign of all vec3 members and store result in dest + * DEPRECATED! use glm_vec_negate and friends + * + * @brief negate vector components and store result in dest * * @param[in] v vector * @param[out] dest result vector @@ -434,6 +448,31 @@ glm_vec_flipsign_to(vec3 v, vec3 dest) { dest[2] = -v[2]; } +/*! + * @brief negate vector components and store result in dest + * + * @param[in] v vector + * @param[out] dest result vector + */ +CGLM_INLINE +void +glm_vec_negate_to(vec3 v, vec3 dest) { + dest[0] = -v[0]; + dest[1] = -v[1]; + dest[2] = -v[2]; +} + +/*! + * @brief negate vector components + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec_negate(vec3 v) { + glm_vec_negate_to(v, v); +} + /*! * @brief make vector as inverse/opposite of itself * diff --git a/src/vec3.c b/src/vec3.c index a2ab499..541dd13 100644 --- a/src/vec3.c +++ b/src/vec3.c @@ -158,6 +158,18 @@ glmc_vec_flipsign_to(vec3 v, vec3 dest) { glm_vec_flipsign_to(v, dest); } +CGLM_EXPORT +void +glmc_vec_negate(vec3 v) { + glm_vec_negate(v); +} + +CGLM_EXPORT +void +glmc_vec_negate_to(vec3 v, vec3 dest) { + glm_vec_negate_to(v, dest); +} + CGLM_EXPORT void glmc_vec_inv(vec3 v) { From 9af61d2101a471f958f4a3f5f56a2a0e1caf82c5 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Wed, 28 Nov 2018 10:50:21 +0300 Subject: [PATCH 2/8] vec: use `_negate` instead of `_flipsign` and `_inv` --- include/cglm/vec3.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/cglm/vec3.h b/include/cglm/vec3.h index 9ffcc9c..4534969 100644 --- a/include/cglm/vec3.h +++ b/include/cglm/vec3.h @@ -481,7 +481,7 @@ glm_vec_negate(vec3 v) { CGLM_INLINE void glm_vec_inv(vec3 v) { - glm_vec_flipsign(v); + glm_vec_negate(v); } /*! @@ -493,7 +493,7 @@ glm_vec_inv(vec3 v) { CGLM_INLINE void glm_vec_inv_to(vec3 v, vec3 dest) { - glm_vec_flipsign_to(v, dest); + glm_vec_negate_to(v, dest); } /*! From ef6134263e852363d8f412d55f5cd63c88caad48 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Wed, 28 Nov 2018 14:48:12 +0300 Subject: [PATCH 3/8] vec: improve angle between two vector * because `acosf()` may return NaN if cosine/dot is out of range --- include/cglm/vec3.h | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/include/cglm/vec3.h b/include/cglm/vec3.h index 4534969..5dfe612 100644 --- a/include/cglm/vec3.h +++ b/include/cglm/vec3.h @@ -548,11 +548,18 @@ glm_vec_normalize_to(vec3 vec, vec3 dest) { CGLM_INLINE float glm_vec_angle(vec3 v1, vec3 v2) { - float norm; + float norm, dot; /* maybe compiler generate approximation instruction (rcp) */ norm = 1.0f / (glm_vec_norm(v1) * glm_vec_norm(v2)); - return acosf(glm_vec_dot(v1, v2) * norm); + dot = glm_vec_dot(v1, v2) * norm; + + if (dot > 1.0f) + return 0.0f; + else if (dot < -1.0f) + return CGLM_PI; + + return acosf(dot); } /*! From 0b8c63a90e942f4db4cc929e3918010cca2e7385 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Wed, 28 Nov 2018 23:22:30 +0300 Subject: [PATCH 4/8] vec: rename `glm_vec_` namespace to `glm_vec3_` --- README.md | 10 +- include/cglm/affine-mat.h | 4 +- include/cglm/affine.h | 38 +++--- include/cglm/box.h | 52 ++++---- include/cglm/call/vec3.h | 113 +++++++++-------- include/cglm/cam.h | 20 +-- include/cglm/frustum.h | 12 +- include/cglm/mat3.h | 6 +- include/cglm/plane.h | 2 +- include/cglm/quat.h | 24 ++-- include/cglm/sphere.h | 8 +- include/cglm/vec3-ext.h | 59 +++++---- include/cglm/vec3.h | 251 +++++++++++++++++++------------------- include/cglm/vec4-ext.h | 23 ++-- include/cglm/vec4.h | 5 - src/vec3.c | 220 ++++++++++++++++----------------- test/src/test_cam.c | 2 +- test/src/test_clamp.c | 2 +- test/src/test_quat.c | 4 +- test/src/test_vec3.c | 68 +++++------ 20 files changed, 460 insertions(+), 463 deletions(-) diff --git a/README.md b/README.md index ff1b4df..9567960 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ Complete documentation: http://cglm.readthedocs.io #### Note for previous versions: -- _dup (duplicate) is changed to _copy. For instance `glm_vec_dup -> glm_vec_copy` +- _dup (duplicate) is changed to _copy. For instance `glm_vec_dup -> glm_vec3_copy` - OpenGL related functions are dropped to make this lib platform/third-party independent - make sure you have latest version and feel free to report bugs, troubles - **[bugfix]** euler angles was implemented in reverse order (extrinsic) it was fixed, now they are intrinsic. Make sure that @@ -201,15 +201,15 @@ If you want to use inline versions of funcstions then; include main header ``` the header will include all headers. Then call func you want e.g. rotate vector by axis: ```C -glm_vec_rotate(v1, glm_rad(45), (vec3){1.0f, 0.0f, 0.0f}); +glm_vec3_rotate(v1, glm_rad(45), (vec3){1.0f, 0.0f, 0.0f}); ``` some functions are overloaded :) e.g you can normalize vector: ```C -glm_vec_normalize(vec); +glm_vec3_normalize(vec); ``` this will normalize vec and store normalized vector into `vec` but if you will store normalized vector into another vector do this: ```C -glm_vec_normalize_to(vec, result); +glm_vec3_normalize_to(vec, result); ``` like this function you may see `_to` postfix, this functions store results to another variables and save temp memory @@ -220,7 +220,7 @@ to call pre-compiled versions include header with `c` postfix, c means call. Pre ``` this header will include all headers with c postfix. You need to call functions with c posfix: ```C -glmc_vec_normalize(vec); +glmc_vec3_normalize(vec); ``` Function usage and parameters are documented inside related headers. You may see same parameter passed twice in some examples like this: diff --git a/include/cglm/affine-mat.h b/include/cglm/affine-mat.h index d26857b..0dcb447 100644 --- a/include/cglm/affine-mat.h +++ b/include/cglm/affine-mat.h @@ -160,8 +160,8 @@ glm_inv_tr(mat4 mat) { /* translate */ glm_mat3_mulv(r, mat[3], t); - glm_vec_negate(t); - glm_vec_copy(t, mat[3]); + glm_vec3_negate(t); + glm_vec3_copy(t, mat[3]); #endif } diff --git a/include/cglm/affine.h b/include/cglm/affine.h index 4c0e1e9..364ed20 100644 --- a/include/cglm/affine.h +++ b/include/cglm/affine.h @@ -170,7 +170,7 @@ CGLM_INLINE void glm_translate_make(mat4 m, vec3 v) { glm_mat4_identity(m); - glm_vec_copy(v, m[3]); + glm_vec3_copy(v, m[3]); } /*! @@ -325,13 +325,13 @@ glm_rotate_make(mat4 m, float angle, vec3 axis) { c = cosf(angle); - glm_vec_normalize_to(axis, axisn); - glm_vec_scale(axisn, 1.0f - c, v); - glm_vec_scale(axisn, sinf(angle), vs); + glm_vec3_normalize_to(axis, axisn); + glm_vec3_scale(axisn, 1.0f - c, v); + glm_vec3_scale(axisn, sinf(angle), vs); - glm_vec_scale(axisn, v[0], m[0]); - glm_vec_scale(axisn, v[1], m[1]); - glm_vec_scale(axisn, v[2], m[2]); + glm_vec3_scale(axisn, v[0], m[0]); + glm_vec3_scale(axisn, v[1], m[1]); + glm_vec3_scale(axisn, v[2], m[2]); m[0][0] += c; m[1][0] -= vs[2]; m[2][0] += vs[1]; m[0][1] += vs[2]; m[1][1] += c; m[2][1] -= vs[0]; @@ -370,7 +370,7 @@ void glm_rotate_at(mat4 m, vec3 pivot, float angle, vec3 axis) { CGLM_ALIGN(8) vec3 pivotInv; - glm_vec_negate_to(pivot, pivotInv); + glm_vec3_negate_to(pivot, pivotInv); glm_translate(m, pivot); glm_rotate(m, angle, axis); @@ -395,7 +395,7 @@ void glm_rotate_atm(mat4 m, vec3 pivot, float angle, vec3 axis) { CGLM_ALIGN(8) vec3 pivotInv; - glm_vec_negate_to(pivot, pivotInv); + glm_vec3_negate_to(pivot, pivotInv); glm_translate_make(m, pivot); glm_rotate(m, angle, axis); @@ -411,9 +411,9 @@ glm_rotate_atm(mat4 m, vec3 pivot, float angle, vec3 axis) { CGLM_INLINE void glm_decompose_scalev(mat4 m, vec3 s) { - s[0] = glm_vec_norm(m[0]); - s[1] = glm_vec_norm(m[1]); - s[2] = glm_vec_norm(m[2]); + s[0] = glm_vec3_norm(m[0]); + s[1] = glm_vec3_norm(m[1]); + s[2] = glm_vec3_norm(m[2]); } /*! @@ -429,7 +429,7 @@ bool glm_uniscaled(mat4 m) { CGLM_ALIGN(8) vec3 s; glm_decompose_scalev(m, s); - return glm_vec_eq_all(s); + return glm_vec3_eq_all(s); } /*! @@ -451,9 +451,9 @@ glm_decompose_rs(mat4 m, mat4 r, vec3 s) { glm_vec4_copy(m[2], r[2]); glm_vec4_copy(t, r[3]); - s[0] = glm_vec_norm(m[0]); - s[1] = glm_vec_norm(m[1]); - s[2] = glm_vec_norm(m[2]); + s[0] = glm_vec3_norm(m[0]); + s[1] = glm_vec3_norm(m[1]); + s[2] = glm_vec3_norm(m[2]); glm_vec4_scale(r[0], 1.0f/s[0], r[0]); glm_vec4_scale(r[1], 1.0f/s[1], r[1]); @@ -462,12 +462,12 @@ glm_decompose_rs(mat4 m, mat4 r, vec3 s) { /* Note from Apple Open Source (asume that the matrix is orthonormal): check for a coordinate system flip. If the determinant is -1, then negate the matrix and the scaling factors. */ - glm_vec_cross(m[0], m[1], v); - if (glm_vec_dot(v, m[2]) < 0.0f) { + glm_vec3_cross(m[0], m[1], v); + if (glm_vec3_dot(v, m[2]) < 0.0f) { glm_vec4_flipsign(r[0]); glm_vec4_flipsign(r[1]); glm_vec4_flipsign(r[2]); - glm_vec_negate(s); + glm_vec3_negate(s); } } diff --git a/include/cglm/box.h b/include/cglm/box.h index 3708107..0fec3ee 100644 --- a/include/cglm/box.h +++ b/include/cglm/box.h @@ -25,33 +25,33 @@ void glm_aabb_transform(vec3 box[2], mat4 m, vec3 dest[2]) { vec3 v[2], xa, xb, ya, yb, za, zb, tmp; - glm_vec_scale(m[0], box[0][0], xa); - glm_vec_scale(m[0], box[1][0], xb); + glm_vec3_scale(m[0], box[0][0], xa); + glm_vec3_scale(m[0], box[1][0], xb); - glm_vec_scale(m[1], box[0][1], ya); - glm_vec_scale(m[1], box[1][1], yb); + glm_vec3_scale(m[1], box[0][1], ya); + glm_vec3_scale(m[1], box[1][1], yb); - glm_vec_scale(m[2], box[0][2], za); - glm_vec_scale(m[2], box[1][2], zb); + glm_vec3_scale(m[2], box[0][2], za); + glm_vec3_scale(m[2], box[1][2], zb); /* min(xa, xb) + min(ya, yb) + min(za, zb) + translation */ - glm_vec_minv(xa, xb, v[0]); - glm_vec_minv(ya, yb, tmp); - glm_vec_add(v[0], tmp, v[0]); - glm_vec_minv(za, zb, tmp); - glm_vec_add(v[0], tmp, v[0]); - glm_vec_add(v[0], m[3], v[0]); + glm_vec3_minv(xa, xb, v[0]); + glm_vec3_minv(ya, yb, tmp); + glm_vec3_add(v[0], tmp, v[0]); + glm_vec3_minv(za, zb, tmp); + glm_vec3_add(v[0], tmp, v[0]); + glm_vec3_add(v[0], m[3], v[0]); /* max(xa, xb) + max(ya, yb) + max(za, zb) + translation */ - glm_vec_maxv(xa, xb, v[1]); - glm_vec_maxv(ya, yb, tmp); - glm_vec_add(v[1], tmp, v[1]); - glm_vec_maxv(za, zb, tmp); - glm_vec_add(v[1], tmp, v[1]); - glm_vec_add(v[1], m[3], v[1]); + glm_vec3_maxv(xa, xb, v[1]); + glm_vec3_maxv(ya, yb, tmp); + glm_vec3_add(v[1], tmp, v[1]); + glm_vec3_maxv(za, zb, tmp); + glm_vec3_add(v[1], tmp, v[1]); + glm_vec3_add(v[1], m[3], v[1]); - glm_vec_copy(v[0], dest[0]); - glm_vec_copy(v[1], dest[1]); + glm_vec3_copy(v[0], dest[0]); + glm_vec3_copy(v[1], dest[1]); } /*! @@ -162,8 +162,8 @@ glm_aabb_frustum(vec3 box[2], vec4 planes[6]) { CGLM_INLINE void glm_aabb_invalidate(vec3 box[2]) { - glm_vec_broadcast(FLT_MAX, box[0]); - glm_vec_broadcast(-FLT_MAX, box[1]); + glm_vec3_broadcast(FLT_MAX, box[0]); + glm_vec3_broadcast(-FLT_MAX, box[1]); } /*! @@ -174,8 +174,8 @@ glm_aabb_invalidate(vec3 box[2]) { CGLM_INLINE bool glm_aabb_isvalid(vec3 box[2]) { - return glm_vec_max(box[0]) != FLT_MAX - && glm_vec_min(box[1]) != -FLT_MAX; + return glm_vec3_max(box[0]) != FLT_MAX + && glm_vec3_min(box[1]) != -FLT_MAX; } /*! @@ -186,7 +186,7 @@ glm_aabb_isvalid(vec3 box[2]) { CGLM_INLINE float glm_aabb_size(vec3 box[2]) { - return glm_vec_distance(box[0], box[1]); + return glm_vec3_distance(box[0], box[1]); } /*! @@ -209,7 +209,7 @@ glm_aabb_radius(vec3 box[2]) { CGLM_INLINE void glm_aabb_center(vec3 box[2], vec3 dest) { - glm_vec_center(box[0], box[1], dest); + glm_vec3_center(box[0], box[1], dest); } /*! diff --git a/include/cglm/call/vec3.h b/include/cglm/call/vec3.h index d96de98..1cd2e08 100644 --- a/include/cglm/call/vec3.h +++ b/include/cglm/call/vec3.h @@ -13,234 +13,231 @@ extern "C" { #include "../cglm.h" -/* DEPRECATED! use _copy, _ucopy versions */ -#define glmc_vec_dup(v, dest) glmc_vec_copy(v, dest) - CGLM_EXPORT void glmc_vec3(vec4 v4, vec3 dest); CGLM_EXPORT void -glmc_vec_copy(vec3 a, vec3 dest); +glmc_vec3_copy(vec3 a, vec3 dest); CGLM_EXPORT void -glmc_vec_zero(vec3 v); +glmc_vec3_zero(vec3 v); CGLM_EXPORT void -glmc_vec_one(vec3 v); +glmc_vec3_one(vec3 v); CGLM_EXPORT float -glmc_vec_dot(vec3 a, vec3 b); +glmc_vec3_dot(vec3 a, vec3 b); CGLM_EXPORT void -glmc_vec_cross(vec3 a, vec3 b, vec3 d); +glmc_vec3_cross(vec3 a, vec3 b, vec3 d); CGLM_EXPORT float -glmc_vec_norm(vec3 vec); +glmc_vec3_norm(vec3 vec); CGLM_EXPORT float -glmc_vec_norm2(vec3 vec); +glmc_vec3_norm2(vec3 vec); CGLM_EXPORT void -glmc_vec_normalize_to(vec3 vec, vec3 dest); +glmc_vec3_normalize_to(vec3 vec, vec3 dest); CGLM_EXPORT void -glmc_vec_normalize(vec3 v); +glmc_vec3_normalize(vec3 v); CGLM_EXPORT void -glmc_vec_add(vec3 v1, vec3 v2, vec3 dest); +glmc_vec3_add(vec3 v1, vec3 v2, vec3 dest); CGLM_EXPORT void -glmc_vec_adds(vec3 v, float s, vec3 dest); +glmc_vec3_adds(vec3 v, float s, vec3 dest); CGLM_EXPORT void -glmc_vec_sub(vec3 a, vec3 b, vec3 dest); +glmc_vec3_sub(vec3 a, vec3 b, vec3 dest); CGLM_EXPORT void -glmc_vec_subs(vec3 v, float s, vec3 dest); +glmc_vec3_subs(vec3 v, float s, vec3 dest); CGLM_EXPORT void -glmc_vec_mul(vec3 a, vec3 b, vec3 d); +glmc_vec3_mul(vec3 a, vec3 b, vec3 d); CGLM_EXPORT void -glmc_vec_scale(vec3 v, float s, vec3 dest); +glmc_vec3_scale(vec3 v, float s, vec3 dest); CGLM_EXPORT void -glmc_vec_scale_as(vec3 v, float s, vec3 dest); +glmc_vec3_scale_as(vec3 v, float s, vec3 dest); CGLM_EXPORT void -glmc_vec_div(vec3 a, vec3 b, vec3 dest); +glmc_vec3_div(vec3 a, vec3 b, vec3 dest); CGLM_EXPORT void -glmc_vec_divs(vec3 a, float s, vec3 dest); +glmc_vec3_divs(vec3 a, float s, vec3 dest); CGLM_EXPORT void -glmc_vec_addadd(vec3 a, vec3 b, vec3 dest); +glmc_vec3_addadd(vec3 a, vec3 b, vec3 dest); CGLM_EXPORT void -glmc_vec_subadd(vec3 a, vec3 b, vec3 dest); +glmc_vec3_subadd(vec3 a, vec3 b, vec3 dest); CGLM_EXPORT void -glmc_vec_muladd(vec3 a, vec3 b, vec3 dest); +glmc_vec3_muladd(vec3 a, vec3 b, vec3 dest); CGLM_EXPORT void -glmc_vec_muladds(vec3 a, float s, vec3 dest); +glmc_vec3_muladds(vec3 a, float s, vec3 dest); CGLM_EXPORT void -glmc_vec_flipsign(vec3 v); +glmc_vec3_flipsign(vec3 v); CGLM_EXPORT void -glmc_vec_flipsign_to(vec3 v, vec3 dest); +glmc_vec3_flipsign_to(vec3 v, vec3 dest); CGLM_EXPORT void -glmc_vec_negate(vec3 v); +glmc_vec3_negate(vec3 v); CGLM_EXPORT void -glmc_vec_negate_to(vec3 v, vec3 dest); +glmc_vec3_negate_to(vec3 v, vec3 dest); CGLM_EXPORT void -glmc_vec_inv(vec3 v); +glmc_vec3_inv(vec3 v); CGLM_EXPORT void -glmc_vec_inv_to(vec3 v, vec3 dest); +glmc_vec3_inv_to(vec3 v, vec3 dest); CGLM_EXPORT float -glmc_vec_angle(vec3 v1, vec3 v2); +glmc_vec3_angle(vec3 v1, vec3 v2); CGLM_EXPORT void -glmc_vec_rotate(vec3 v, float angle, vec3 axis); +glmc_vec3_rotate(vec3 v, float angle, vec3 axis); CGLM_EXPORT void -glmc_vec_rotate_m4(mat4 m, vec3 v, vec3 dest); +glmc_vec3_rotate_m4(mat4 m, vec3 v, vec3 dest); CGLM_EXPORT void -glmc_vec_rotate_m3(mat3 m, vec3 v, vec3 dest); +glmc_vec3_rotate_m3(mat3 m, vec3 v, vec3 dest); CGLM_EXPORT void -glmc_vec_proj(vec3 a, vec3 b, vec3 dest); +glmc_vec3_proj(vec3 a, vec3 b, vec3 dest); CGLM_EXPORT void -glmc_vec_center(vec3 v1, vec3 v2, vec3 dest); +glmc_vec3_center(vec3 v1, vec3 v2, vec3 dest); CGLM_EXPORT float -glmc_vec_distance2(vec3 v1, vec3 v2); +glmc_vec3_distance2(vec3 v1, vec3 v2); CGLM_EXPORT float -glmc_vec_distance(vec3 v1, vec3 v2); +glmc_vec3_distance(vec3 v1, vec3 v2); CGLM_EXPORT void -glmc_vec_maxv(vec3 v1, vec3 v2, vec3 dest); +glmc_vec3_maxv(vec3 v1, vec3 v2, vec3 dest); CGLM_EXPORT void -glmc_vec_minv(vec3 v1, vec3 v2, vec3 dest); +glmc_vec3_minv(vec3 v1, vec3 v2, vec3 dest); CGLM_EXPORT void -glmc_vec_clamp(vec3 v, float minVal, float maxVal); +glmc_vec3_clamp(vec3 v, float minVal, float maxVal); CGLM_EXPORT void -glmc_vec_ortho(vec3 v, vec3 dest); +glmc_vec3_ortho(vec3 v, vec3 dest); CGLM_EXPORT void -glmc_vec_lerp(vec3 from, vec3 to, float t, vec3 dest); +glmc_vec3_lerp(vec3 from, vec3 to, float t, vec3 dest); /* ext */ CGLM_EXPORT void -glmc_vec_mulv(vec3 a, vec3 b, vec3 d); +glmc_vec3_mulv(vec3 a, vec3 b, vec3 d); CGLM_EXPORT void -glmc_vec_broadcast(float val, vec3 d); +glmc_vec3_broadcast(float val, vec3 d); CGLM_EXPORT bool -glmc_vec_eq(vec3 v, float val); +glmc_vec3_eq(vec3 v, float val); CGLM_EXPORT bool -glmc_vec_eq_eps(vec3 v, float val); +glmc_vec3_eq_eps(vec3 v, float val); CGLM_EXPORT bool -glmc_vec_eq_all(vec3 v); +glmc_vec3_eq_all(vec3 v); CGLM_EXPORT bool -glmc_vec_eqv(vec3 v1, vec3 v2); +glmc_vec3_eqv(vec3 v1, vec3 v2); CGLM_EXPORT bool -glmc_vec_eqv_eps(vec3 v1, vec3 v2); +glmc_vec3_eqv_eps(vec3 v1, vec3 v2); CGLM_EXPORT float -glmc_vec_max(vec3 v); +glmc_vec3_max(vec3 v); CGLM_EXPORT float -glmc_vec_min(vec3 v); +glmc_vec3_min(vec3 v); CGLM_EXPORT bool -glmc_vec_isnan(vec3 v); +glmc_vec3_isnan(vec3 v); CGLM_EXPORT bool -glmc_vec_isinf(vec3 v); +glmc_vec3_isinf(vec3 v); CGLM_EXPORT bool -glmc_vec_isvalid(vec3 v); +glmc_vec3_isvalid(vec3 v); CGLM_EXPORT void -glmc_vec_sign(vec3 v, vec3 dest); +glmc_vec3_sign(vec3 v, vec3 dest); CGLM_EXPORT void -glmc_vec_sqrt(vec3 v, vec3 dest); +glmc_vec3_sqrt(vec3 v, vec3 dest); #ifdef __cplusplus } diff --git a/include/cglm/cam.h b/include/cglm/cam.h index 284ae82..acfa970 100644 --- a/include/cglm/cam.h +++ b/include/cglm/cam.h @@ -320,13 +320,13 @@ glm_lookat(vec3 eye, mat4 dest) { CGLM_ALIGN(8) vec3 f, u, s; - glm_vec_sub(center, eye, f); - glm_vec_normalize(f); + glm_vec3_sub(center, eye, f); + glm_vec3_normalize(f); - glm_vec_cross(f, up, s); - glm_vec_normalize(s); + glm_vec3_cross(f, up, s); + glm_vec3_normalize(s); - glm_vec_cross(s, f, u); + glm_vec3_cross(s, f, u); dest[0][0] = s[0]; dest[0][1] = u[0]; @@ -337,9 +337,9 @@ glm_lookat(vec3 eye, dest[2][0] = s[2]; dest[2][1] = u[2]; dest[2][2] =-f[2]; - dest[3][0] =-glm_vec_dot(s, eye); - dest[3][1] =-glm_vec_dot(u, eye); - dest[3][2] = glm_vec_dot(f, eye); + dest[3][0] =-glm_vec3_dot(s, eye); + dest[3][1] =-glm_vec3_dot(u, eye); + dest[3][2] = glm_vec3_dot(f, eye); dest[0][3] = dest[1][3] = dest[2][3] = 0.0f; dest[3][3] = 1.0f; } @@ -362,7 +362,7 @@ CGLM_INLINE void glm_look(vec3 eye, vec3 dir, vec3 up, mat4 dest) { CGLM_ALIGN(8) vec3 target; - glm_vec_add(eye, dir, target); + glm_vec3_add(eye, dir, target); glm_lookat(eye, target, up, dest); } @@ -380,7 +380,7 @@ CGLM_INLINE void glm_look_anyup(vec3 eye, vec3 dir, mat4 dest) { CGLM_ALIGN(8) vec3 up; - glm_vec_ortho(dir, up); + glm_vec3_ortho(dir, up); glm_look(eye, dir, up, dest); } diff --git a/include/cglm/frustum.h b/include/cglm/frustum.h index d4e8d47..78b39d2 100644 --- a/include/cglm/frustum.h +++ b/include/cglm/frustum.h @@ -106,7 +106,7 @@ glm_frustum_planes(mat4 m, vec4 dest[6]) { * * Find center coordinates: * for (j = 0; j < 4; j++) { - * glm_vec_center(corners[i], corners[i + 4], centerCorners[i]); + * glm_vec3_center(corners[i], corners[i + 4], centerCorners[i]); * } * * @param[in] invMat matrix (see brief) @@ -187,8 +187,8 @@ glm_frustum_box(vec4 corners[8], mat4 m, vec3 box[2]) { vec3 min, max; int i; - glm_vec_broadcast(FLT_MAX, min); - glm_vec_broadcast(-FLT_MAX, max); + glm_vec3_broadcast(FLT_MAX, min); + glm_vec3_broadcast(-FLT_MAX, max); for (i = 0; i < 8; i++) { glm_mat4_mulv(m, corners[i], v); @@ -202,8 +202,8 @@ glm_frustum_box(vec4 corners[8], mat4 m, vec3 box[2]) { max[2] = glm_max(max[2], v[2]); } - glm_vec_copy(min, box[0]); - glm_vec_copy(max, box[1]); + glm_vec3_copy(min, box[0]); + glm_vec3_copy(max, box[1]); } /*! @@ -228,7 +228,7 @@ glm_frustum_corners_at(vec4 corners[8], float dist, sc; /* because distance and scale is same for all */ - dist = glm_vec_distance(corners[GLM_RTF], corners[GLM_RTN]); + dist = glm_vec3_distance(corners[GLM_RTF], corners[GLM_RTN]); sc = dist * (splitDist / farDist); /* left bottom */ diff --git a/include/cglm/mat3.h b/include/cglm/mat3.h index 5d0d6ac..2d6523c 100644 --- a/include/cglm/mat3.h +++ b/include/cglm/mat3.h @@ -330,9 +330,9 @@ CGLM_INLINE void glm_mat3_swap_col(mat3 mat, int col1, int col2) { vec3 tmp; - glm_vec_copy(mat[col1], tmp); - glm_vec_copy(mat[col2], mat[col1]); - glm_vec_copy(tmp, mat[col2]); + glm_vec3_copy(mat[col1], tmp); + glm_vec3_copy(mat[col2], mat[col1]); + glm_vec3_copy(tmp, mat[col2]); } /*! diff --git a/include/cglm/plane.h b/include/cglm/plane.h index e0faed5..48fe879 100644 --- a/include/cglm/plane.h +++ b/include/cglm/plane.h @@ -30,7 +30,7 @@ CGLM_INLINE void glm_plane_normalize(vec4 plane) { - glm_vec4_scale(plane, 1.0f / glm_vec_norm(plane), plane); + glm_vec4_scale(plane, 1.0f / glm_vec3_norm(plane), plane); } #endif /* cglm_plane_h */ diff --git a/include/cglm/quat.h b/include/cglm/quat.h index b4283b6..37aba8d 100644 --- a/include/cglm/quat.h +++ b/include/cglm/quat.h @@ -361,7 +361,7 @@ glm_quat_imagn(versor q, vec3 dest) { CGLM_INLINE float glm_quat_imaglen(versor q) { - return glm_vec_norm(q); + return glm_vec3_norm(q); } /*! @@ -670,7 +670,7 @@ glm_quat_look(vec3 eye, versor ori, mat4 dest) { /* translate */ glm_mat4_mulv3(dest, eye, 1.0f, dest[3]); - glm_vec_negate(dest[3]); + glm_vec3_negate(dest[3]); } /*! @@ -687,7 +687,7 @@ glm_quat_for(vec3 dir, vec3 fwd, vec3 up, versor dest) { CGLM_ALIGN(8) vec3 axis; float dot, angle; - dot = glm_vec_dot(dir, fwd); + dot = glm_vec3_dot(dir, fwd); if (fabsf(dot + 1.0f) < 0.000001f) { glm_quat_init(dest, up[0], up[1], up[2], GLM_PIf); return; @@ -719,7 +719,7 @@ CGLM_INLINE void glm_quat_forp(vec3 from, vec3 to, vec3 fwd, vec3 up, versor dest) { CGLM_ALIGN(8) vec3 dir; - glm_vec_sub(to, from, dir); + glm_vec3_sub(to, from, dir); glm_quat_for(dir, fwd, up, dest); } @@ -741,14 +741,14 @@ glm_quat_rotatev(versor q, vec3 v, vec3 dest) { glm_quat_imag(p, u); s = glm_quat_real(p); - glm_vec_scale(u, 2.0f * glm_vec_dot(u, v), v1); - glm_vec_scale(v, s * s - glm_vec_dot(u, u), v2); - glm_vec_add(v1, v2, v1); + glm_vec3_scale(u, 2.0f * glm_vec3_dot(u, v), v1); + glm_vec3_scale(v, s * s - glm_vec3_dot(u, u), v2); + glm_vec3_add(v1, v2, v1); - glm_vec_cross(u, v, v2); - glm_vec_scale(v2, 2.0f * s, v2); + glm_vec3_cross(u, v, v2); + glm_vec3_scale(v2, 2.0f * s, v2); - glm_vec_add(v1, v2, dest); + glm_vec3_add(v1, v2, dest); } /*! @@ -778,7 +778,7 @@ void glm_quat_rotate_at(mat4 m, versor q, vec3 pivot) { CGLM_ALIGN(8) vec3 pivotInv; - glm_vec_negate_to(pivot, pivotInv); + glm_vec3_negate_to(pivot, pivotInv); glm_translate(m, pivot); glm_quat_rotate(m, q, m); @@ -802,7 +802,7 @@ void glm_quat_rotate_atm(mat4 m, versor q, vec3 pivot) { CGLM_ALIGN(8) vec3 pivotInv; - glm_vec_negate_to(pivot, pivotInv); + glm_vec3_negate_to(pivot, pivotInv); glm_translate_make(m, pivot); glm_quat_rotate(m, q, m); diff --git a/include/cglm/sphere.h b/include/cglm/sphere.h index a7501b9..334b83a 100644 --- a/include/cglm/sphere.h +++ b/include/cglm/sphere.h @@ -60,13 +60,13 @@ void glm_sphere_merge(vec4 s1, vec4 s2, vec4 dest) { float dist, radii; - dist = glm_vec_distance(s1, s2); + dist = glm_vec3_distance(s1, s2); radii = dist + s1[3] + s2[3]; radii = glm_max(radii, s1[3]); radii = glm_max(radii, s2[3]); - glm_vec_center(s1, s2, dest); + glm_vec3_center(s1, s2, dest); dest[3] = radii; } @@ -79,7 +79,7 @@ glm_sphere_merge(vec4 s1, vec4 s2, vec4 dest) { CGLM_INLINE bool glm_sphere_sphere(vec4 s1, vec4 s2) { - return glm_vec_distance2(s1, s2) <= glm_pow2(s1[3] + s2[3]); + return glm_vec3_distance2(s1, s2) <= glm_pow2(s1[3] + s2[3]); } /*! @@ -93,7 +93,7 @@ bool glm_sphere_point(vec4 s, vec3 point) { float rr; rr = s[3] * s[3]; - return glm_vec_distance2(point, s) <= rr; + return glm_vec3_distance2(point, s) <= rr; } #endif /* cglm_sphere_h */ diff --git a/include/cglm/vec3-ext.h b/include/cglm/vec3-ext.h index e12c133..34166f4 100644 --- a/include/cglm/vec3-ext.h +++ b/include/cglm/vec3-ext.h @@ -11,15 +11,20 @@ /* Functions: - CGLM_INLINE void glm_vec_mulv(vec3 a, vec3 b, vec3 d); - CGLM_INLINE void glm_vec_broadcast(float val, vec3 d); - CGLM_INLINE bool glm_vec_eq(vec3 v, float val); - CGLM_INLINE bool glm_vec_eq_eps(vec3 v, float val); - CGLM_INLINE bool glm_vec_eq_all(vec3 v); - CGLM_INLINE bool glm_vec_eqv(vec3 v1, vec3 v2); - CGLM_INLINE bool glm_vec_eqv_eps(vec3 v1, vec3 v2); - CGLM_INLINE float glm_vec_max(vec3 v); - CGLM_INLINE float glm_vec_min(vec3 v); + CGLM_INLINE void glm_vec3_mulv(vec3 a, vec3 b, vec3 d); + CGLM_INLINE void glm_vec3_broadcast(float val, vec3 d); + CGLM_INLINE bool glm_vec3_eq(vec3 v, float val); + CGLM_INLINE bool glm_vec3_eq_eps(vec3 v, float val); + CGLM_INLINE bool glm_vec3_eq_all(vec3 v); + CGLM_INLINE bool glm_vec3_eqv(vec3 v1, vec3 v2); + CGLM_INLINE bool glm_vec3_eqv_eps(vec3 v1, vec3 v2); + CGLM_INLINE float glm_vec3_max(vec3 v); + CGLM_INLINE float glm_vec3_min(vec3 v); + CGLM_INLINE bool glm_vec3_isnan(vec3 v); + CGLM_INLINE bool glm_vec3_isinf(vec3 v); + CGLM_INLINE bool glm_vec3_isvalid(vec3 v); + CGLM_INLINE void glm_vec3_sign(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_sqrt(vec3 v, vec3 dest); */ #ifndef cglm_vec3_ext_h @@ -32,7 +37,7 @@ #include /*! - * @brief DEPRECATED! use glm_vec_mul + * @brief DEPRECATED! use glm_vec3_mul * * @param[in] a vec1 * @param[in] b vec2 @@ -40,7 +45,7 @@ */ CGLM_INLINE void -glm_vec_mulv(vec3 a, vec3 b, vec3 d) { +glm_vec3_mulv(vec3 a, vec3 b, vec3 d) { d[0] = a[0] * b[0]; d[1] = a[1] * b[1]; d[2] = a[2] * b[2]; @@ -54,7 +59,7 @@ glm_vec_mulv(vec3 a, vec3 b, vec3 d) { */ CGLM_INLINE void -glm_vec_broadcast(float val, vec3 d) { +glm_vec3_broadcast(float val, vec3 d) { d[0] = d[1] = d[2] = val; } @@ -66,7 +71,7 @@ glm_vec_broadcast(float val, vec3 d) { */ CGLM_INLINE bool -glm_vec_eq(vec3 v, float val) { +glm_vec3_eq(vec3 v, float val) { return v[0] == val && v[0] == v[1] && v[0] == v[2]; } @@ -78,7 +83,7 @@ glm_vec_eq(vec3 v, float val) { */ CGLM_INLINE bool -glm_vec_eq_eps(vec3 v, float val) { +glm_vec3_eq_eps(vec3 v, float val) { return fabsf(v[0] - val) <= FLT_EPSILON && fabsf(v[1] - val) <= FLT_EPSILON && fabsf(v[2] - val) <= FLT_EPSILON; @@ -91,7 +96,7 @@ glm_vec_eq_eps(vec3 v, float val) { */ CGLM_INLINE bool -glm_vec_eq_all(vec3 v) { +glm_vec3_eq_all(vec3 v) { return v[0] == v[1] && v[0] == v[2]; } @@ -103,10 +108,10 @@ glm_vec_eq_all(vec3 v) { */ CGLM_INLINE bool -glm_vec_eqv(vec3 v1, vec3 v2) { +glm_vec3_eqv(vec3 v1, vec3 v2) { return v1[0] == v2[0] - && v1[1] == v2[1] - && v1[2] == v2[2]; + && v1[1] == v2[1] + && v1[2] == v2[2]; } /*! @@ -117,7 +122,7 @@ glm_vec_eqv(vec3 v1, vec3 v2) { */ CGLM_INLINE bool -glm_vec_eqv_eps(vec3 v1, vec3 v2) { +glm_vec3_eqv_eps(vec3 v1, vec3 v2) { return fabsf(v1[0] - v2[0]) <= FLT_EPSILON && fabsf(v1[1] - v2[1]) <= FLT_EPSILON && fabsf(v1[2] - v2[2]) <= FLT_EPSILON; @@ -130,7 +135,7 @@ glm_vec_eqv_eps(vec3 v1, vec3 v2) { */ CGLM_INLINE float -glm_vec_max(vec3 v) { +glm_vec3_max(vec3 v) { float max; max = v[0]; @@ -149,7 +154,7 @@ glm_vec_max(vec3 v) { */ CGLM_INLINE float -glm_vec_min(vec3 v) { +glm_vec3_min(vec3 v) { float min; min = v[0]; @@ -169,7 +174,7 @@ glm_vec_min(vec3 v) { */ CGLM_INLINE bool -glm_vec_isnan(vec3 v) { +glm_vec3_isnan(vec3 v) { return isnan(v[0]) || isnan(v[1]) || isnan(v[2]); } @@ -181,7 +186,7 @@ glm_vec_isnan(vec3 v) { */ CGLM_INLINE bool -glm_vec_isinf(vec3 v) { +glm_vec3_isinf(vec3 v) { return isinf(v[0]) || isinf(v[1]) || isinf(v[2]); } @@ -193,8 +198,8 @@ glm_vec_isinf(vec3 v) { */ CGLM_INLINE bool -glm_vec_isvalid(vec3 v) { - return !glm_vec_isnan(v) && !glm_vec_isinf(v); +glm_vec3_isvalid(vec3 v) { + return !glm_vec3_isnan(v) && !glm_vec3_isinf(v); } /*! @@ -206,7 +211,7 @@ glm_vec_isvalid(vec3 v) { */ CGLM_INLINE void -glm_vec_sign(vec3 v, vec3 dest) { +glm_vec3_sign(vec3 v, vec3 dest) { dest[0] = glm_signf(v[0]); dest[1] = glm_signf(v[1]); dest[2] = glm_signf(v[2]); @@ -220,7 +225,7 @@ glm_vec_sign(vec3 v, vec3 dest) { */ CGLM_INLINE void -glm_vec_sqrt(vec3 v, vec3 dest) { +glm_vec3_sqrt(vec3 v, vec3 dest) { dest[0] = sqrtf(v[0]); dest[1] = sqrtf(v[1]); dest[2] = sqrtf(v[2]); diff --git a/include/cglm/vec3.h b/include/cglm/vec3.h index 5dfe612..eb64c80 100644 --- a/include/cglm/vec3.h +++ b/include/cglm/vec3.h @@ -5,11 +5,6 @@ * Full license can be found in the LICENSE file */ -/*! - * vec3 functions dont have suffix e.g glm_vec_dot (not glm_vec3_dot) - * all functions without suffix are vec3 functions - */ - /* Macros: glm_vec_dup(v, dest) @@ -23,47 +18,47 @@ Functions: CGLM_INLINE void glm_vec3(vec4 v4, vec3 dest); - CGLM_INLINE void glm_vec_copy(vec3 a, vec3 dest); - CGLM_INLINE void glm_vec_zero(vec3 v); - CGLM_INLINE void glm_vec_one(vec3 v); - CGLM_INLINE float glm_vec_dot(vec3 a, vec3 b); - CGLM_INLINE void glm_vec_cross(vec3 a, vec3 b, vec3 d); - CGLM_INLINE float glm_vec_norm2(vec3 v); - CGLM_INLINE float glm_vec_norm(vec3 vec); - CGLM_INLINE void glm_vec_add(vec3 a, vec3 b, vec3 dest); - CGLM_INLINE void glm_vec_adds(vec3 a, float s, vec3 dest); - CGLM_INLINE void glm_vec_sub(vec3 a, vec3 b, vec3 dest); - CGLM_INLINE void glm_vec_subs(vec3 a, float s, vec3 dest); - CGLM_INLINE void glm_vec_mul(vec3 a, vec3 b, vec3 dest); - CGLM_INLINE void glm_vec_scale(vec3 v, float s, vec3 dest); - CGLM_INLINE void glm_vec_scale_as(vec3 v, float s, vec3 dest); - CGLM_INLINE void glm_vec_div(vec3 a, vec3 b, vec3 dest); - CGLM_INLINE void glm_vec_divs(vec3 a, float s, vec3 dest); - CGLM_INLINE void glm_vec_addadd(vec3 a, vec3 b, vec3 dest); - CGLM_INLINE void glm_vec_subadd(vec3 a, vec3 b, vec3 dest); - CGLM_INLINE void glm_vec_muladd(vec3 a, vec3 b, vec3 dest); - CGLM_INLINE void glm_vec_muladds(vec3 a, float s, vec3 dest); - CGLM_INLINE void glm_vec_flipsign(vec3 v); - CGLM_INLINE void glm_vec_flipsign_to(vec3 v, vec3 dest); - CGLM_INLINE void glm_vec_negate_to(vec3 v, vec3 dest); - CGLM_INLINE void glm_vec_negate(vec3 v); - CGLM_INLINE void glm_vec_inv(vec3 v); - CGLM_INLINE void glm_vec_inv_to(vec3 v, vec3 dest); - CGLM_INLINE void glm_vec_normalize(vec3 v); - CGLM_INLINE void glm_vec_normalize_to(vec3 vec, vec3 dest); - CGLM_INLINE float glm_vec_distance(vec3 v1, vec3 v2); - CGLM_INLINE float glm_vec_angle(vec3 v1, vec3 v2); - CGLM_INLINE void glm_vec_rotate(vec3 v, float angle, vec3 axis); - CGLM_INLINE void glm_vec_rotate_m4(mat4 m, vec3 v, vec3 dest); - CGLM_INLINE void glm_vec_rotate_m4(mat3 m, vec3 v, vec3 dest); - CGLM_INLINE void glm_vec_proj(vec3 a, vec3 b, vec3 dest); - CGLM_INLINE void glm_vec_center(vec3 v1, vec3 v2, vec3 dest); - CGLM_INLINE float glm_vec_distance2(vec3 v1, vec3 v2); - CGLM_INLINE void glm_vec_maxv(vec3 v1, vec3 v2, vec3 dest); - CGLM_INLINE void glm_vec_minv(vec3 v1, vec3 v2, vec3 dest); - CGLM_INLINE void glm_vec_ortho(vec3 v, vec3 dest); - CGLM_INLINE void glm_vec_clamp(vec3 v, float minVal, float maxVal); - CGLM_INLINE void glm_vec_lerp(vec3 from, vec3 to, float t, vec3 dest); + CGLM_INLINE void glm_vec3_copy(vec3 a, vec3 dest); + CGLM_INLINE void glm_vec3_zero(vec3 v); + CGLM_INLINE void glm_vec3_one(vec3 v); + CGLM_INLINE float glm_vec3_dot(vec3 a, vec3 b); + CGLM_INLINE void glm_vec3_cross(vec3 a, vec3 b, vec3 d); + CGLM_INLINE float glm_vec3_norm2(vec3 v); + CGLM_INLINE float glm_vec3_norm(vec3 vec); + CGLM_INLINE void glm_vec3_add(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_adds(vec3 a, float s, vec3 dest); + CGLM_INLINE void glm_vec3_sub(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_subs(vec3 a, float s, vec3 dest); + CGLM_INLINE void glm_vec3_mul(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_scale(vec3 v, float s, vec3 dest); + CGLM_INLINE void glm_vec3_scale_as(vec3 v, float s, vec3 dest); + CGLM_INLINE void glm_vec3_div(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_divs(vec3 a, float s, vec3 dest); + CGLM_INLINE void glm_vec3_addadd(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_subadd(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_muladd(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_muladds(vec3 a, float s, vec3 dest); + CGLM_INLINE void glm_vec3_flipsign(vec3 v); + CGLM_INLINE void glm_vec3_flipsign_to(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_negate_to(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_negate(vec3 v); + CGLM_INLINE void glm_vec3_inv(vec3 v); + CGLM_INLINE void glm_vec3_inv_to(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_normalize(vec3 v); + CGLM_INLINE void glm_vec3_normalize_to(vec3 vec, vec3 dest); + CGLM_INLINE float glm_vec3_distance(vec3 v1, vec3 v2); + CGLM_INLINE float glm_vec3_angle(vec3 v1, vec3 v2); + CGLM_INLINE void glm_vec3_rotate(vec3 v, float angle, vec3 axis); + CGLM_INLINE void glm_vec3_rotate_m4(mat4 m, vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_rotate_m3(mat3 m, vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_proj(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_center(vec3 v1, vec3 v2, vec3 dest); + CGLM_INLINE float glm_vec3_distance2(vec3 v1, vec3 v2); + CGLM_INLINE void glm_vec3_maxv(vec3 v1, vec3 v2, vec3 dest); + CGLM_INLINE void glm_vec3_minv(vec3 v1, vec3 v2, vec3 dest); + CGLM_INLINE void glm_vec3_ortho(vec3 v, vec3 dest); + CGLM_INLINE void glm_vec3_clamp(vec3 v, float minVal, float maxVal); + CGLM_INLINE void glm_vec3_lerp(vec3 from, vec3 to, float t, vec3 dest); Convenient: CGLM_INLINE void glm_cross(vec3 a, vec3 b, vec3 d); @@ -73,8 +68,8 @@ DEPRECATED: glm_vec_dup - glm_vec_flipsign - glm_vec_flipsign_to + glm_vec3_flipsign + glm_vec3_flipsign_to */ #ifndef cglm_vec3_h @@ -86,7 +81,7 @@ #include "util.h" /* DEPRECATED! use _copy, _ucopy versions */ -#define glm_vec_dup(v, dest) glm_vec_copy(v, dest) +#define glm_vec_dup(v, dest) glm_vec3_copy(v, dest) #define GLM_VEC3_ONE_INIT {1.0f, 1.0f, 1.0f} #define GLM_VEC3_ZERO_INIT {0.0f, 0.0f, 0.0f} @@ -120,7 +115,7 @@ glm_vec3(vec4 v4, vec3 dest) { */ CGLM_INLINE void -glm_vec_copy(vec3 a, vec3 dest) { +glm_vec3_copy(vec3 a, vec3 dest) { dest[0] = a[0]; dest[1] = a[1]; dest[2] = a[2]; @@ -133,7 +128,7 @@ glm_vec_copy(vec3 a, vec3 dest) { */ CGLM_INLINE void -glm_vec_zero(vec3 v) { +glm_vec3_zero(vec3 v) { v[0] = v[1] = v[2] = 0.0f; } @@ -144,7 +139,7 @@ glm_vec_zero(vec3 v) { */ CGLM_INLINE void -glm_vec_one(vec3 v) { +glm_vec3_one(vec3 v) { v[0] = v[1] = v[2] = 1.0f; } @@ -158,7 +153,7 @@ glm_vec_one(vec3 v) { */ CGLM_INLINE float -glm_vec_dot(vec3 a, vec3 b) { +glm_vec3_dot(vec3 a, vec3 b) { return a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; } @@ -171,7 +166,7 @@ glm_vec_dot(vec3 a, vec3 b) { */ CGLM_INLINE void -glm_vec_cross(vec3 a, vec3 b, vec3 d) { +glm_vec3_cross(vec3 a, vec3 b, vec3 d) { /* (u2.v3 - u3.v2, u3.v1 - u1.v3, u1.v2 - u2.v1) */ d[0] = a[1] * b[2] - a[2] * b[1]; d[1] = a[2] * b[0] - a[0] * b[2]; @@ -191,8 +186,8 @@ glm_vec_cross(vec3 a, vec3 b, vec3 d) { */ CGLM_INLINE float -glm_vec_norm2(vec3 v) { - return glm_vec_dot(v, v); +glm_vec3_norm2(vec3 v) { + return glm_vec3_dot(v, v); } /*! @@ -204,8 +199,8 @@ glm_vec_norm2(vec3 v) { */ CGLM_INLINE float -glm_vec_norm(vec3 vec) { - return sqrtf(glm_vec_norm2(vec)); +glm_vec3_norm(vec3 vec) { + return sqrtf(glm_vec3_norm2(vec)); } /*! @@ -217,7 +212,7 @@ glm_vec_norm(vec3 vec) { */ CGLM_INLINE void -glm_vec_add(vec3 a, vec3 b, vec3 dest) { +glm_vec3_add(vec3 a, vec3 b, vec3 dest) { dest[0] = a[0] + b[0]; dest[1] = a[1] + b[1]; dest[2] = a[2] + b[2]; @@ -232,7 +227,7 @@ glm_vec_add(vec3 a, vec3 b, vec3 dest) { */ CGLM_INLINE void -glm_vec_adds(vec3 v, float s, vec3 dest) { +glm_vec3_adds(vec3 v, float s, vec3 dest) { dest[0] = v[0] + s; dest[1] = v[1] + s; dest[2] = v[2] + s; @@ -247,7 +242,7 @@ glm_vec_adds(vec3 v, float s, vec3 dest) { */ CGLM_INLINE void -glm_vec_sub(vec3 a, vec3 b, vec3 dest) { +glm_vec3_sub(vec3 a, vec3 b, vec3 dest) { dest[0] = a[0] - b[0]; dest[1] = a[1] - b[1]; dest[2] = a[2] - b[2]; @@ -262,7 +257,7 @@ glm_vec_sub(vec3 a, vec3 b, vec3 dest) { */ CGLM_INLINE void -glm_vec_subs(vec3 v, float s, vec3 dest) { +glm_vec3_subs(vec3 v, float s, vec3 dest) { dest[0] = v[0] - s; dest[1] = v[1] - s; dest[2] = v[2] - s; @@ -277,7 +272,7 @@ glm_vec_subs(vec3 v, float s, vec3 dest) { */ CGLM_INLINE void -glm_vec_mul(vec3 a, vec3 b, vec3 d) { +glm_vec3_mul(vec3 a, vec3 b, vec3 d) { d[0] = a[0] * b[0]; d[1] = a[1] * b[1]; d[2] = a[2] * b[2]; @@ -292,7 +287,7 @@ glm_vec_mul(vec3 a, vec3 b, vec3 d) { */ CGLM_INLINE void -glm_vec_scale(vec3 v, float s, vec3 dest) { +glm_vec3_scale(vec3 v, float s, vec3 dest) { dest[0] = v[0] * s; dest[1] = v[1] * s; dest[2] = v[2] * s; @@ -307,16 +302,16 @@ glm_vec_scale(vec3 v, float s, vec3 dest) { */ CGLM_INLINE void -glm_vec_scale_as(vec3 v, float s, vec3 dest) { +glm_vec3_scale_as(vec3 v, float s, vec3 dest) { float norm; - norm = glm_vec_norm(v); + norm = glm_vec3_norm(v); if (norm == 0.0f) { - glm_vec_zero(dest); + glm_vec3_zero(dest); return; } - glm_vec_scale(v, s / norm, dest); + glm_vec3_scale(v, s / norm, dest); } /*! @@ -328,7 +323,7 @@ glm_vec_scale_as(vec3 v, float s, vec3 dest) { */ CGLM_INLINE void -glm_vec_div(vec3 a, vec3 b, vec3 dest) { +glm_vec3_div(vec3 a, vec3 b, vec3 dest) { dest[0] = a[0] / b[0]; dest[1] = a[1] / b[1]; dest[2] = a[2] / b[2]; @@ -343,7 +338,7 @@ glm_vec_div(vec3 a, vec3 b, vec3 dest) { */ CGLM_INLINE void -glm_vec_divs(vec3 v, float s, vec3 dest) { +glm_vec3_divs(vec3 v, float s, vec3 dest) { dest[0] = v[0] / s; dest[1] = v[1] / s; dest[2] = v[2] / s; @@ -360,7 +355,7 @@ glm_vec_divs(vec3 v, float s, vec3 dest) { */ CGLM_INLINE void -glm_vec_addadd(vec3 a, vec3 b, vec3 dest) { +glm_vec3_addadd(vec3 a, vec3 b, vec3 dest) { dest[0] += a[0] + b[0]; dest[1] += a[1] + b[1]; dest[2] += a[2] + b[2]; @@ -377,7 +372,7 @@ glm_vec_addadd(vec3 a, vec3 b, vec3 dest) { */ CGLM_INLINE void -glm_vec_subadd(vec3 a, vec3 b, vec3 dest) { +glm_vec3_subadd(vec3 a, vec3 b, vec3 dest) { dest[0] += a[0] - b[0]; dest[1] += a[1] - b[1]; dest[2] += a[2] - b[2]; @@ -394,7 +389,7 @@ glm_vec_subadd(vec3 a, vec3 b, vec3 dest) { */ CGLM_INLINE void -glm_vec_muladd(vec3 a, vec3 b, vec3 dest) { +glm_vec3_muladd(vec3 a, vec3 b, vec3 dest) { dest[0] += a[0] * b[0]; dest[1] += a[1] * b[1]; dest[2] += a[2] * b[2]; @@ -411,14 +406,14 @@ glm_vec_muladd(vec3 a, vec3 b, vec3 dest) { */ CGLM_INLINE void -glm_vec_muladds(vec3 a, float s, vec3 dest) { +glm_vec3_muladds(vec3 a, float s, vec3 dest) { dest[0] += a[0] * s; dest[1] += a[1] * s; dest[2] += a[2] * s; } /*! - * DEPRECATED! use glm_vec_negate and friends + * DEPRECATED! use glm_vec3_negate and friends * * @brief negate vector components * @@ -426,14 +421,14 @@ glm_vec_muladds(vec3 a, float s, vec3 dest) { */ CGLM_INLINE void -glm_vec_flipsign(vec3 v) { +glm_vec3_flipsign(vec3 v) { v[0] = -v[0]; v[1] = -v[1]; v[2] = -v[2]; } /*! - * DEPRECATED! use glm_vec_negate and friends + * DEPRECATED! use glm_vec3_negate and friends * * @brief negate vector components and store result in dest * @@ -442,7 +437,7 @@ glm_vec_flipsign(vec3 v) { */ CGLM_INLINE void -glm_vec_flipsign_to(vec3 v, vec3 dest) { +glm_vec3_flipsign_to(vec3 v, vec3 dest) { dest[0] = -v[0]; dest[1] = -v[1]; dest[2] = -v[2]; @@ -456,7 +451,7 @@ glm_vec_flipsign_to(vec3 v, vec3 dest) { */ CGLM_INLINE void -glm_vec_negate_to(vec3 v, vec3 dest) { +glm_vec3_negate_to(vec3 v, vec3 dest) { dest[0] = -v[0]; dest[1] = -v[1]; dest[2] = -v[2]; @@ -469,8 +464,8 @@ glm_vec_negate_to(vec3 v, vec3 dest) { */ CGLM_INLINE void -glm_vec_negate(vec3 v) { - glm_vec_negate_to(v, v); +glm_vec3_negate(vec3 v) { + glm_vec3_negate_to(v, v); } /*! @@ -480,8 +475,8 @@ glm_vec_negate(vec3 v) { */ CGLM_INLINE void -glm_vec_inv(vec3 v) { - glm_vec_negate(v); +glm_vec3_inv(vec3 v) { + glm_vec3_negate(v); } /*! @@ -492,8 +487,8 @@ glm_vec_inv(vec3 v) { */ CGLM_INLINE void -glm_vec_inv_to(vec3 v, vec3 dest) { - glm_vec_negate_to(v, dest); +glm_vec3_inv_to(vec3 v, vec3 dest) { + glm_vec3_negate_to(v, dest); } /*! @@ -503,17 +498,17 @@ glm_vec_inv_to(vec3 v, vec3 dest) { */ CGLM_INLINE void -glm_vec_normalize(vec3 v) { +glm_vec3_normalize(vec3 v) { float norm; - norm = glm_vec_norm(v); + norm = glm_vec3_norm(v); if (norm == 0.0f) { v[0] = v[1] = v[2] = 0.0f; return; } - glm_vec_scale(v, 1.0f / norm, v); + glm_vec3_scale(v, 1.0f / norm, v); } /*! @@ -524,17 +519,17 @@ glm_vec_normalize(vec3 v) { */ CGLM_INLINE void -glm_vec_normalize_to(vec3 vec, vec3 dest) { +glm_vec3_normalize_to(vec3 vec, vec3 dest) { float norm; - norm = glm_vec_norm(vec); + norm = glm_vec3_norm(vec); if (norm == 0.0f) { - glm_vec_zero(dest); + glm_vec3_zero(dest); return; } - glm_vec_scale(vec, 1.0f / norm, dest); + glm_vec3_scale(vec, 1.0f / norm, dest); } /*! @@ -547,12 +542,12 @@ glm_vec_normalize_to(vec3 vec, vec3 dest) { */ CGLM_INLINE float -glm_vec_angle(vec3 v1, vec3 v2) { +glm_vec3_angle(vec3 v1, vec3 v2) { float norm, dot; /* maybe compiler generate approximation instruction (rcp) */ - norm = 1.0f / (glm_vec_norm(v1) * glm_vec_norm(v2)); - dot = glm_vec_dot(v1, v2) * norm; + norm = 1.0f / (glm_vec3_norm(v1) * glm_vec3_norm(v2)); + dot = glm_vec3_dot(v1, v2) * norm; if (dot > 1.0f) return 0.0f; @@ -571,27 +566,27 @@ glm_vec_angle(vec3 v1, vec3 v2) { */ CGLM_INLINE void -glm_vec_rotate(vec3 v, float angle, vec3 axis) { +glm_vec3_rotate(vec3 v, float angle, vec3 axis) { vec3 v1, v2, k; float c, s; c = cosf(angle); s = sinf(angle); - glm_vec_normalize_to(axis, k); + glm_vec3_normalize_to(axis, k); /* Right Hand, Rodrigues' rotation formula: v = v*cos(t) + (kxv)sin(t) + k*(k.v)(1 - cos(t)) */ - glm_vec_scale(v, c, v1); + glm_vec3_scale(v, c, v1); - glm_vec_cross(k, v, v2); - glm_vec_scale(v2, s, v2); + glm_vec3_cross(k, v, v2); + glm_vec3_scale(v2, s, v2); - glm_vec_add(v1, v2, v1); + glm_vec3_add(v1, v2, v1); - glm_vec_scale(k, glm_vec_dot(k, v) * (1.0f - c), v2); - glm_vec_add(v1, v2, v); + glm_vec3_scale(k, glm_vec3_dot(k, v) * (1.0f - c), v2); + glm_vec3_add(v1, v2, v); } /*! @@ -609,7 +604,7 @@ glm_vec_rotate(vec3 v, float angle, vec3 axis) { */ CGLM_INLINE void -glm_vec_rotate_m4(mat4 m, vec3 v, vec3 dest) { +glm_vec3_rotate_m4(mat4 m, vec3 v, vec3 dest) { vec4 x, y, z, res; glm_vec4_normalize_to(m[0], x); @@ -632,7 +627,7 @@ glm_vec_rotate_m4(mat4 m, vec3 v, vec3 dest) { */ CGLM_INLINE void -glm_vec_rotate_m3(mat3 m, vec3 v, vec3 dest) { +glm_vec3_rotate_m3(mat3 m, vec3 v, vec3 dest) { vec4 res, x, y, z; glm_vec4(m[0], 0.0f, x); @@ -659,10 +654,10 @@ glm_vec_rotate_m3(mat3 m, vec3 v, vec3 dest) { */ CGLM_INLINE void -glm_vec_proj(vec3 a, vec3 b, vec3 dest) { - glm_vec_scale(b, - glm_vec_dot(a, b) / glm_vec_norm2(b), - dest); +glm_vec3_proj(vec3 a, vec3 b, vec3 dest) { + glm_vec3_scale(b, + glm_vec3_dot(a, b) / glm_vec3_norm2(b), + dest); } /** @@ -674,9 +669,9 @@ glm_vec_proj(vec3 a, vec3 b, vec3 dest) { */ CGLM_INLINE void -glm_vec_center(vec3 v1, vec3 v2, vec3 dest) { - glm_vec_add(v1, v2, dest); - glm_vec_scale(dest, 0.5f, dest); +glm_vec3_center(vec3 v1, vec3 v2, vec3 dest) { + glm_vec3_add(v1, v2, dest); + glm_vec3_scale(dest, 0.5f, dest); } /** @@ -688,7 +683,7 @@ glm_vec_center(vec3 v1, vec3 v2, vec3 dest) { */ CGLM_INLINE float -glm_vec_distance2(vec3 v1, vec3 v2) { +glm_vec3_distance2(vec3 v1, vec3 v2) { return glm_pow2(v2[0] - v1[0]) + glm_pow2(v2[1] - v1[1]) + glm_pow2(v2[2] - v1[2]); @@ -703,8 +698,8 @@ glm_vec_distance2(vec3 v1, vec3 v2) { */ CGLM_INLINE float -glm_vec_distance(vec3 v1, vec3 v2) { - return sqrtf(glm_vec_distance2(v1, v2)); +glm_vec3_distance(vec3 v1, vec3 v2) { + return sqrtf(glm_vec3_distance2(v1, v2)); } /*! @@ -716,7 +711,7 @@ glm_vec_distance(vec3 v1, vec3 v2) { */ CGLM_INLINE void -glm_vec_maxv(vec3 v1, vec3 v2, vec3 dest) { +glm_vec3_maxv(vec3 v1, vec3 v2, vec3 dest) { dest[0] = glm_max(v1[0], v2[0]); dest[1] = glm_max(v1[1], v2[1]); dest[2] = glm_max(v1[2], v2[2]); @@ -731,7 +726,7 @@ glm_vec_maxv(vec3 v1, vec3 v2, vec3 dest) { */ CGLM_INLINE void -glm_vec_minv(vec3 v1, vec3 v2, vec3 dest) { +glm_vec3_minv(vec3 v1, vec3 v2, vec3 dest) { dest[0] = glm_min(v1[0], v2[0]); dest[1] = glm_min(v1[1], v2[1]); dest[2] = glm_min(v1[2], v2[2]); @@ -745,7 +740,7 @@ glm_vec_minv(vec3 v1, vec3 v2, vec3 dest) { */ CGLM_INLINE void -glm_vec_ortho(vec3 v, vec3 dest) { +glm_vec3_ortho(vec3 v, vec3 dest) { dest[0] = v[1] - v[2]; dest[1] = v[2] - v[0]; dest[2] = v[0] - v[1]; @@ -760,7 +755,7 @@ glm_vec_ortho(vec3 v, vec3 dest) { */ CGLM_INLINE void -glm_vec_clamp(vec3 v, float minVal, float maxVal) { +glm_vec3_clamp(vec3 v, float minVal, float maxVal) { v[0] = glm_clamp(v[0], minVal, maxVal); v[1] = glm_clamp(v[1], minVal, maxVal); v[2] = glm_clamp(v[2], minVal, maxVal); @@ -778,14 +773,14 @@ glm_vec_clamp(vec3 v, float minVal, float maxVal) { */ CGLM_INLINE void -glm_vec_lerp(vec3 from, vec3 to, float t, vec3 dest) { +glm_vec3_lerp(vec3 from, vec3 to, float t, vec3 dest) { vec3 s, v; /* from + s * (to - from) */ - glm_vec_broadcast(glm_clamp_zo(t), s); - glm_vec_sub(to, from, v); - glm_vec_mulv(s, v, v); - glm_vec_add(from, v, dest); + glm_vec3_broadcast(glm_clamp_zo(t), s); + glm_vec3_sub(to, from, v); + glm_vec3_mulv(s, v, v); + glm_vec3_add(from, v, dest); } /*! @@ -800,7 +795,7 @@ glm_vec_lerp(vec3 from, vec3 to, float t, vec3 dest) { CGLM_INLINE void glm_cross(vec3 a, vec3 b, vec3 d) { - glm_vec_cross(a, b, d); + glm_vec3_cross(a, b, d); } /*! @@ -816,7 +811,7 @@ glm_cross(vec3 a, vec3 b, vec3 d) { CGLM_INLINE float glm_dot(vec3 a, vec3 b) { - return glm_vec_dot(a, b); + return glm_vec3_dot(a, b); } /*! @@ -829,7 +824,7 @@ glm_dot(vec3 a, vec3 b) { CGLM_INLINE void glm_normalize(vec3 v) { - glm_vec_normalize(v); + glm_vec3_normalize(v); } /*! @@ -843,7 +838,7 @@ glm_normalize(vec3 v) { CGLM_INLINE void glm_normalize_to(vec3 v, vec3 dest) { - glm_vec_normalize_to(v, dest); + glm_vec3_normalize_to(v, dest); } #endif /* cglm_vec3_h */ diff --git a/include/cglm/vec4-ext.h b/include/cglm/vec4-ext.h index b7902b6..e45ef85 100644 --- a/include/cglm/vec4-ext.h +++ b/include/cglm/vec4-ext.h @@ -11,15 +11,20 @@ /* Functions: - CGLM_INLINE void glm_vec4_mulv(vec4 a, vec4 b, vec4 d); - CGLM_INLINE void glm_vec4_broadcast(float val, vec4 d); - CGLM_INLINE bool glm_vec4_eq(vec4 v, float val); - CGLM_INLINE bool glm_vec4_eq_eps(vec4 v, float val); - CGLM_INLINE bool glm_vec4_eq_all(vec4 v); - CGLM_INLINE bool glm_vec4_eqv(vec4 v1, vec4 v2); - CGLM_INLINE bool glm_vec4_eqv_eps(vec4 v1, vec4 v2); + CGLM_INLINE void glm_vec4_mulv(vec4 a, vec4 b, vec4 d); + CGLM_INLINE void glm_vec4_broadcast(float val, vec4 d); + CGLM_INLINE bool glm_vec4_eq(vec4 v, float val); + CGLM_INLINE bool glm_vec4_eq_eps(vec4 v, float val); + CGLM_INLINE bool glm_vec4_eq_all(vec4 v); + CGLM_INLINE bool glm_vec4_eqv(vec4 v1, vec4 v2); + CGLM_INLINE bool glm_vec4_eqv_eps(vec4 v1, vec4 v2); CGLM_INLINE float glm_vec4_max(vec4 v); CGLM_INLINE float glm_vec4_min(vec4 v); + CGLM_INLINE bool glm_vec4_isnan(vec4 v); + CGLM_INLINE bool glm_vec4_isinf(vec4 v); + CGLM_INLINE bool glm_vec4_isvalid(vec4 v); + CGLM_INLINE void glm_vec4_sign(vec4 v, vec4 dest); + CGLM_INLINE void glm_vec4_sqrt(vec4 v, vec4 dest); */ #ifndef cglm_vec4_ext_h @@ -150,7 +155,7 @@ float glm_vec4_max(vec4 v) { float max; - max = glm_vec_max(v); + max = glm_vec3_max(v); if (v[3] > max) max = v[3]; @@ -167,7 +172,7 @@ float glm_vec4_min(vec4 v) { float min; - min = glm_vec_min(v); + min = glm_vec3_min(v); if (v[3] < min) min = v[3]; diff --git a/include/cglm/vec4.h b/include/cglm/vec4.h index d0221d4..ec14ce3 100644 --- a/include/cglm/vec4.h +++ b/include/cglm/vec4.h @@ -5,11 +5,6 @@ * Full license can be found in the LICENSE file */ -/*! - * vec3 functions dont have suffix e.g glm_vec_dot (not glm_vec3_dot) - * all functions without suffix are vec3 functions - */ - /* Macros: glm_vec4_dup3(v, dest) diff --git a/src/vec3.c b/src/vec3.c index 541dd13..5f743b3 100644 --- a/src/vec3.c +++ b/src/vec3.c @@ -16,332 +16,332 @@ glmc_vec3(vec4 v4, vec3 dest) { CGLM_EXPORT void -glmc_vec_copy(vec3 a, vec3 dest) { - glm_vec_copy(a, dest); +glmc_vec3_copy(vec3 a, vec3 dest) { + glm_vec3_copy(a, dest); } CGLM_EXPORT void -glmc_vec_zero(vec3 v) { - glm_vec_zero(v); +glmc_vec3_zero(vec3 v) { + glm_vec3_zero(v); } CGLM_EXPORT void -glmc_vec_one(vec3 v) { - glm_vec_one(v); +glmc_vec3_one(vec3 v) { + glm_vec3_one(v); } CGLM_EXPORT float -glmc_vec_dot(vec3 a, vec3 b) { - return glm_vec_dot(a, b); +glmc_vec3_dot(vec3 a, vec3 b) { + return glm_vec3_dot(a, b); } CGLM_EXPORT void -glmc_vec_cross(vec3 a, vec3 b, vec3 d) { - glm_vec_cross(a, b, d); +glmc_vec3_cross(vec3 a, vec3 b, vec3 d) { + glm_vec3_cross(a, b, d); } CGLM_EXPORT float -glmc_vec_norm(vec3 vec) { - return glm_vec_norm(vec); +glmc_vec3_norm(vec3 vec) { + return glm_vec3_norm(vec); } CGLM_EXPORT void -glmc_vec_normalize_to(vec3 vec, vec3 dest) { - glm_vec_normalize_to(vec, dest); +glmc_vec3_normalize_to(vec3 vec, vec3 dest) { + glm_vec3_normalize_to(vec, dest); } CGLM_EXPORT void -glmc_vec_normalize(vec3 v) { - glm_vec_normalize(v); +glmc_vec3_normalize(vec3 v) { + glm_vec3_normalize(v); } CGLM_EXPORT float -glmc_vec_norm2(vec3 vec) { - return glm_vec_norm2(vec); +glmc_vec3_norm2(vec3 vec) { + return glm_vec3_norm2(vec); } CGLM_EXPORT void -glmc_vec_add(vec3 v1, vec3 v2, vec3 dest) { - glm_vec_add(v1, v2, dest); +glmc_vec3_add(vec3 v1, vec3 v2, vec3 dest) { + glm_vec3_add(v1, v2, dest); } CGLM_EXPORT void -glmc_vec_adds(vec3 v, float s, vec3 dest) { - glm_vec_adds(v, s, dest); +glmc_vec3_adds(vec3 v, float s, vec3 dest) { + glm_vec3_adds(v, s, dest); } CGLM_EXPORT void -glmc_vec_sub(vec3 a, vec3 b, vec3 dest) { - glm_vec_sub(a, b, dest); +glmc_vec3_sub(vec3 a, vec3 b, vec3 dest) { + glm_vec3_sub(a, b, dest); } CGLM_EXPORT void -glmc_vec_subs(vec3 v, float s, vec3 dest) { - glm_vec_subs(v, s, dest); +glmc_vec3_subs(vec3 v, float s, vec3 dest) { + glm_vec3_subs(v, s, dest); } CGLM_EXPORT void -glmc_vec_mul(vec3 a, vec3 b, vec3 d) { - glm_vec_mul(a, b, d); +glmc_vec3_mul(vec3 a, vec3 b, vec3 d) { + glm_vec3_mul(a, b, d); } CGLM_EXPORT void -glmc_vec_scale(vec3 v, float s, vec3 dest) { - glm_vec_scale(v, s, dest); +glmc_vec3_scale(vec3 v, float s, vec3 dest) { + glm_vec3_scale(v, s, dest); } CGLM_EXPORT void -glmc_vec_scale_as(vec3 v, float s, vec3 dest) { - glm_vec_scale_as(v, s, dest); +glmc_vec3_scale_as(vec3 v, float s, vec3 dest) { + glm_vec3_scale_as(v, s, dest); } CGLM_EXPORT void -glmc_vec_div(vec3 a, vec3 b, vec3 dest) { - glm_vec_div(a, b, dest); +glmc_vec3_div(vec3 a, vec3 b, vec3 dest) { + glm_vec3_div(a, b, dest); } CGLM_EXPORT void -glmc_vec_divs(vec3 a, float s, vec3 dest) { - glm_vec_divs(a, s, dest); +glmc_vec3_divs(vec3 a, float s, vec3 dest) { + glm_vec3_divs(a, s, dest); } CGLM_EXPORT void -glmc_vec_addadd(vec3 a, vec3 b, vec3 dest) { - glm_vec_addadd(a, b, dest); +glmc_vec3_addadd(vec3 a, vec3 b, vec3 dest) { + glm_vec3_addadd(a, b, dest); } CGLM_EXPORT void -glmc_vec_subadd(vec3 a, vec3 b, vec3 dest) { - glm_vec_subadd(a, b, dest); +glmc_vec3_subadd(vec3 a, vec3 b, vec3 dest) { + glm_vec3_subadd(a, b, dest); } CGLM_EXPORT void -glmc_vec_muladd(vec3 a, vec3 b, vec3 dest) { - glm_vec_muladd(a, b, dest); +glmc_vec3_muladd(vec3 a, vec3 b, vec3 dest) { + glm_vec3_muladd(a, b, dest); } CGLM_EXPORT void -glmc_vec_muladds(vec3 a, float s, vec3 dest) { - glm_vec_muladds(a, s, dest); +glmc_vec3_muladds(vec3 a, float s, vec3 dest) { + glm_vec3_muladds(a, s, dest); } CGLM_EXPORT void -glmc_vec_flipsign(vec3 v) { - glm_vec_flipsign(v); +glmc_vec3_flipsign(vec3 v) { + glm_vec3_flipsign(v); } CGLM_EXPORT void -glmc_vec_flipsign_to(vec3 v, vec3 dest) { - glm_vec_flipsign_to(v, dest); +glmc_vec3_flipsign_to(vec3 v, vec3 dest) { + glm_vec3_flipsign_to(v, dest); } CGLM_EXPORT void -glmc_vec_negate(vec3 v) { - glm_vec_negate(v); +glmc_vec3_negate(vec3 v) { + glm_vec3_negate(v); } CGLM_EXPORT void -glmc_vec_negate_to(vec3 v, vec3 dest) { - glm_vec_negate_to(v, dest); +glmc_vec3_negate_to(vec3 v, vec3 dest) { + glm_vec3_negate_to(v, dest); } CGLM_EXPORT void -glmc_vec_inv(vec3 v) { - glm_vec_inv(v); +glmc_vec3_inv(vec3 v) { + glm_vec3_inv(v); } CGLM_EXPORT void -glmc_vec_inv_to(vec3 v, vec3 dest) { - glm_vec_inv_to(v, dest); +glmc_vec3_inv_to(vec3 v, vec3 dest) { + glm_vec3_inv_to(v, dest); } CGLM_EXPORT float -glmc_vec_angle(vec3 v1, vec3 v2) { - return glm_vec_angle(v1, v2); +glmc_vec3_angle(vec3 v1, vec3 v2) { + return glm_vec3_angle(v1, v2); } CGLM_EXPORT void -glmc_vec_rotate(vec3 v, float angle, vec3 axis) { - glm_vec_rotate(v, angle, axis); +glmc_vec3_rotate(vec3 v, float angle, vec3 axis) { + glm_vec3_rotate(v, angle, axis); } CGLM_EXPORT void -glmc_vec_rotate_m4(mat4 m, vec3 v, vec3 dest) { - glm_vec_rotate_m4(m, v, dest); +glmc_vec3_rotate_m4(mat4 m, vec3 v, vec3 dest) { + glm_vec3_rotate_m4(m, v, dest); } CGLM_EXPORT void -glmc_vec_rotate_m3(mat3 m, vec3 v, vec3 dest) { - glm_vec_rotate_m3(m, v, dest); +glmc_vec3_rotate_m3(mat3 m, vec3 v, vec3 dest) { + glm_vec3_rotate_m3(m, v, dest); } CGLM_EXPORT void -glmc_vec_proj(vec3 a, vec3 b, vec3 dest) { - glm_vec_proj(a, b, dest); +glmc_vec3_proj(vec3 a, vec3 b, vec3 dest) { + glm_vec3_proj(a, b, dest); } CGLM_EXPORT void -glmc_vec_center(vec3 v1, vec3 v2, vec3 dest) { - glm_vec_center(v1, v2, dest); +glmc_vec3_center(vec3 v1, vec3 v2, vec3 dest) { + glm_vec3_center(v1, v2, dest); } CGLM_EXPORT float -glmc_vec_distance2(vec3 v1, vec3 v2) { - return glm_vec_distance2(v1, v2); +glmc_vec3_distance2(vec3 v1, vec3 v2) { + return glm_vec3_distance2(v1, v2); } CGLM_EXPORT float -glmc_vec_distance(vec3 v1, vec3 v2) { - return glm_vec_distance(v1, v2); +glmc_vec3_distance(vec3 v1, vec3 v2) { + return glm_vec3_distance(v1, v2); } CGLM_EXPORT void -glmc_vec_maxv(vec3 v1, vec3 v2, vec3 dest) { - glm_vec_minv(v1, v2, dest); +glmc_vec3_maxv(vec3 v1, vec3 v2, vec3 dest) { + glm_vec3_minv(v1, v2, dest); } CGLM_EXPORT void -glmc_vec_minv(vec3 v1, vec3 v2, vec3 dest) { - glm_vec_maxv(v1, v2, dest); +glmc_vec3_minv(vec3 v1, vec3 v2, vec3 dest) { + glm_vec3_maxv(v1, v2, dest); } CGLM_EXPORT void -glmc_vec_clamp(vec3 v, float minVal, float maxVal) { - glm_vec_clamp(v, minVal, maxVal); +glmc_vec3_clamp(vec3 v, float minVal, float maxVal) { + glm_vec3_clamp(v, minVal, maxVal); } CGLM_EXPORT void -glmc_vec_ortho(vec3 v, vec3 dest) { - glm_vec_ortho(v, dest); +glmc_vec3_ortho(vec3 v, vec3 dest) { + glm_vec3_ortho(v, dest); } CGLM_EXPORT void -glmc_vec_lerp(vec3 from, vec3 to, float t, vec3 dest) { - glm_vec_lerp(from, to, t, dest); +glmc_vec3_lerp(vec3 from, vec3 to, float t, vec3 dest) { + glm_vec3_lerp(from, to, t, dest); } /* ext */ CGLM_EXPORT void -glmc_vec_mulv(vec3 a, vec3 b, vec3 d) { - glm_vec_mulv(a, b, d); +glmc_vec3_mulv(vec3 a, vec3 b, vec3 d) { + glm_vec3_mulv(a, b, d); } CGLM_EXPORT void -glmc_vec_broadcast(float val, vec3 d) { - glm_vec_broadcast(val, d); +glmc_vec3_broadcast(float val, vec3 d) { + glm_vec3_broadcast(val, d); } CGLM_EXPORT bool -glmc_vec_eq(vec3 v, float val) { - return glm_vec_eq(v, val); +glmc_vec3_eq(vec3 v, float val) { + return glm_vec3_eq(v, val); } CGLM_EXPORT bool -glmc_vec_eq_eps(vec3 v, float val) { - return glm_vec_eq_eps(v, val); +glmc_vec3_eq_eps(vec3 v, float val) { + return glm_vec3_eq_eps(v, val); } CGLM_EXPORT bool -glmc_vec_eq_all(vec3 v) { - return glm_vec_eq_all(v); +glmc_vec3_eq_all(vec3 v) { + return glm_vec3_eq_all(v); } CGLM_EXPORT bool -glmc_vec_eqv(vec3 v1, vec3 v2) { - return glm_vec_eqv(v1, v2); +glmc_vec3_eqv(vec3 v1, vec3 v2) { + return glm_vec3_eqv(v1, v2); } CGLM_EXPORT bool -glmc_vec_eqv_eps(vec3 v1, vec3 v2) { - return glm_vec_eqv_eps(v1, v2); +glmc_vec3_eqv_eps(vec3 v1, vec3 v2) { + return glm_vec3_eqv_eps(v1, v2); } CGLM_EXPORT float -glmc_vec_max(vec3 v) { - return glm_vec_max(v); +glmc_vec3_max(vec3 v) { + return glm_vec3_max(v); } CGLM_EXPORT float -glmc_vec_min(vec3 v) { - return glm_vec_min(v); +glmc_vec3_min(vec3 v) { + return glm_vec3_min(v); } CGLM_EXPORT bool -glmc_vec_isnan(vec3 v) { - return glm_vec_isnan(v); +glmc_vec3_isnan(vec3 v) { + return glm_vec3_isnan(v); } CGLM_EXPORT bool -glmc_vec_isinf(vec3 v) { - return glm_vec_isinf(v); +glmc_vec3_isinf(vec3 v) { + return glm_vec3_isinf(v); } CGLM_EXPORT bool -glmc_vec_isvalid(vec3 v) { - return glm_vec_isvalid(v); +glmc_vec3_isvalid(vec3 v) { + return glm_vec3_isvalid(v); } CGLM_EXPORT void -glmc_vec_sign(vec3 v, vec3 dest) { - glm_vec_sign(v, dest); +glmc_vec3_sign(vec3 v, vec3 dest) { + glm_vec3_sign(v, dest); } CGLM_EXPORT void -glmc_vec_sqrt(vec3 v, vec3 dest) { - glm_vec_sqrt(v, dest); +glmc_vec3_sqrt(vec3 v, vec3 dest) { + glm_vec3_sqrt(v, dest); } diff --git a/test/src/test_cam.c b/test/src/test_cam.c index f54c984..c1f31e1 100644 --- a/test/src/test_cam.c +++ b/test/src/test_cam.c @@ -16,7 +16,7 @@ test_camera_lookat(void **state) { up = {0.0f, 1.0f, 0.0f} ; - glm_vec_add(eye, dir, center); + glm_vec3_add(eye, dir, center); glm_lookat(eye, center, up, view1); glm_look(eye, dir, up, view2); diff --git a/test/src/test_clamp.c b/test/src/test_clamp.c index ee98958..70d684b 100644 --- a/test/src/test_clamp.c +++ b/test/src/test_clamp.c @@ -16,7 +16,7 @@ test_clamp(void **state) { assert_true(glm_clamp(-1.6f, 0.0f, 1.0f) == 0.0f); assert_true(glm_clamp(0.6f, 0.0f, 1.0f) == 0.6f); - glm_vec_clamp(v3, 0.0, 1.0); + glm_vec3_clamp(v3, 0.0, 1.0); glm_vec4_clamp(v4, 1.5, 3.0); assert_true(v3[0] == 1.0f); diff --git a/test/src/test_quat.c b/test/src/test_quat.c index 74d12b5..62e2306 100644 --- a/test/src/test_quat.c +++ b/test/src/test_quat.c @@ -128,7 +128,7 @@ test_quat(void **state) { axis[1] = sinf(glm_rad(-90.0f) * 0.5f) * 1.0f; axis[2] = 0.0f; - assert_true(glm_vec_eqv_eps(imag, axis)); + assert_true(glm_vec3_eqv_eps(imag, axis)); /* 9.2 axis */ glm_quat_axis(q4, axis); @@ -143,7 +143,7 @@ test_quat(void **state) { v1[0] = 0.0f; v1[1] = 0.0f; v1[2] = -1.0f; v2[0] = 0.0f; v2[1] = 0.0f; v2[2] = -1.0f; - glm_vec_rotate(v1, glm_rad(90.0f), (vec3){1.0f, 0.0f, 0.0f}); + glm_vec3_rotate(v1, glm_rad(90.0f), (vec3){1.0f, 0.0f, 0.0f}); glm_quatv(q3, glm_rad(90.0f), (vec3){1.0f, 0.0f, 0.0f}); glm_vec4_scale(q3, 1.5, q3); diff --git a/test/src/test_vec3.c b/test/src/test_vec3.c index dd0c55d..6cfc593 100644 --- a/test/src/test_vec3.c +++ b/test/src/test_vec3.c @@ -14,64 +14,64 @@ test_vec3(void **state) { vec3 v, v1, v2; /* test zero */ - glm_vec_zero(v); + glm_vec3_zero(v); test_assert_vec3_eq(GLM_VEC3_ZERO, v); /* test one */ - glm_vec_one(v); + glm_vec3_one(v); test_assert_vec3_eq(GLM_VEC3_ONE, v); /* adds, subs, div, divs, mul */ - glm_vec_add(v, GLM_VEC3_ONE, v); - assert_true(glmc_vec_eq_eps(v, 2)); + glm_vec3_add(v, GLM_VEC3_ONE, v); + assert_true(glmc_vec3_eq_eps(v, 2)); - glm_vec_adds(v, 10, v); - assert_true(glmc_vec_eq_eps(v, 12)); + glm_vec3_adds(v, 10, v); + assert_true(glmc_vec3_eq_eps(v, 12)); - glm_vec_sub(v, GLM_VEC3_ONE, v); - assert_true(glmc_vec_eq_eps(v, 11)); + glm_vec3_sub(v, GLM_VEC3_ONE, v); + assert_true(glmc_vec3_eq_eps(v, 11)); - glm_vec_subs(v, 1, v); - assert_true(glmc_vec_eq_eps(v, 10)); + glm_vec3_subs(v, 1, v); + assert_true(glmc_vec3_eq_eps(v, 10)); - glm_vec_broadcast(2, v1); - glm_vec_div(v, v1, v); - assert_true(glmc_vec_eq_eps(v, 5)); + glm_vec3_broadcast(2, v1); + glm_vec3_div(v, v1, v); + assert_true(glmc_vec3_eq_eps(v, 5)); - glm_vec_divs(v, 0.5, v); - assert_true(glmc_vec_eq_eps(v, 10)); + glm_vec3_divs(v, 0.5, v); + assert_true(glmc_vec3_eq_eps(v, 10)); - glm_vec_mul(v, v1, v); - assert_true(glmc_vec_eq_eps(v, 20)); + glm_vec3_mul(v, v1, v); + assert_true(glmc_vec3_eq_eps(v, 20)); - glm_vec_scale(v, 0.5, v); - assert_true(glmc_vec_eq_eps(v, 10)); + glm_vec3_scale(v, 0.5, v); + assert_true(glmc_vec3_eq_eps(v, 10)); - glm_vec_normalize_to(v, v1); - glm_vec_scale(v1, 0.8, v1); - glm_vec_scale_as(v, 0.8, v); + glm_vec3_normalize_to(v, v1); + glm_vec3_scale(v1, 0.8, v1); + glm_vec3_scale_as(v, 0.8, v); test_assert_vec3_eq(v1, v); /* addadd, subadd, muladd */ - glm_vec_one(v); + glm_vec3_one(v); - glm_vec_addadd(GLM_VEC3_ONE, GLM_VEC3_ONE, v); - assert_true(glmc_vec_eq_eps(v, 3)); + glm_vec3_addadd(GLM_VEC3_ONE, GLM_VEC3_ONE, v); + assert_true(glmc_vec3_eq_eps(v, 3)); - glm_vec_subadd(GLM_VEC3_ONE, GLM_VEC3_ZERO, v); - assert_true(glmc_vec_eq_eps(v, 4)); + glm_vec3_subadd(GLM_VEC3_ONE, GLM_VEC3_ZERO, v); + assert_true(glmc_vec3_eq_eps(v, 4)); - glm_vec_broadcast(2, v1); - glm_vec_broadcast(3, v2); - glm_vec_muladd(v1, v2, v); - assert_true(glmc_vec_eq_eps(v, 10)); + glm_vec3_broadcast(2, v1); + glm_vec3_broadcast(3, v2); + glm_vec3_muladd(v1, v2, v); + assert_true(glmc_vec3_eq_eps(v, 10)); /* rotate */ - glm_vec_copy(GLM_YUP, v); + glm_vec3_copy(GLM_YUP, v); glm_rotate_make(rot1, glm_rad(90), GLM_XUP); - glm_vec_rotate_m4(rot1, v, v1); + glm_vec3_rotate_m4(rot1, v, v1); glm_mat4_pick3(rot1, rot1m3); - glm_vec_rotate_m3(rot1m3, v, v2); + glm_vec3_rotate_m3(rot1m3, v, v2); test_assert_vec3_eq(v1, v2); test_assert_vec3_eq(v1, GLM_ZUP); From b4bf8f3537b01039ebb1c46230b856efe5d4708a Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Thu, 29 Nov 2018 09:07:48 +0300 Subject: [PATCH 5/8] vec: rename `glm_vec_` to `glm_vec3_` (continue) * add missing functions to vec4 * update docs --- README.md | 4 +- docs/source/api.rst | 4 +- docs/source/cam.rst | 2 +- docs/source/frustum.rst | 2 +- docs/source/troubleshooting.rst | 2 +- docs/source/vec3-ext.rst | 56 +++++----- docs/source/vec3.rst | 181 +++++++++++++++++--------------- docs/source/vec4.rst | 27 ++++- include/cglm/affine.h | 6 +- include/cglm/call/vec3.h | 5 + include/cglm/call/vec4.h | 10 +- include/cglm/mat4.h | 2 - include/cglm/quat.h | 4 +- include/cglm/vec3.h | 39 +------ include/cglm/vec4-ext.h | 24 ++--- include/cglm/vec4.h | 47 ++++----- src/vec3.c | 12 --- src/vec4.c | 8 +- 18 files changed, 214 insertions(+), 221 deletions(-) diff --git a/README.md b/README.md index 9567960..c9d92c0 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Documentation Status](https://readthedocs.org/projects/cglm/badge/?version=latest)](http://cglm.readthedocs.io/en/latest/?badge=latest) [![Coverage Status](https://coveralls.io/repos/github/recp/cglm/badge.svg?branch=master)](https://coveralls.io/github/recp/cglm?branch=master) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/6a62b37d5f214f178ebef269dc4a6bf1)](https://www.codacy.com/app/recp/cglm?utm_source=github.com&utm_medium=referral&utm_content=recp/cglm&utm_campaign=Badge_Grade) -[![Backers on Open Collective](https://opencollective.com/cglm/backers/badge.svg)](#backers) +[![Backers on Open Collective](https://opencollective.com/cglm/backers/badge.svg)](#backers) [![Sponsors on Open Collective](https://opencollective.com/cglm/sponsors/badge.svg)](#sponsors) The original glm library is for C++ only (templates, namespaces, classes...), this library targeted to C99 but currently you can use it for C89 safely by language extensions e.g `__restrict` @@ -19,7 +19,7 @@ Complete documentation: http://cglm.readthedocs.io - _dup (duplicate) is changed to _copy. For instance `glm_vec_dup -> glm_vec3_copy` - OpenGL related functions are dropped to make this lib platform/third-party independent - make sure you have latest version and feel free to report bugs, troubles -- **[bugfix]** euler angles was implemented in reverse order (extrinsic) it was fixed, now they are intrinsic. Make sure that +- **[bugfix]** euler angles was implemented in reverse order (extrinsic) it was fixed, now they are intrinsic. Make sure that you have the latest version - **[major change]** by starting v0.4.0, quaternions are stored as [x, y, z, w], it was [w, x, y, z] in v0.3.5 and earlier versions - **[api rename]** by starting v0.4.5, **glm_simd** functions are renamed to **glmm_** diff --git a/docs/source/api.rst b/docs/source/api.rst index d0e4721..e88b426 100644 --- a/docs/source/api.rst +++ b/docs/source/api.rst @@ -5,14 +5,14 @@ Some functions may exist twice, once for their namespace and once for global namespace to make easier to write very common functions -For instance, in general we use :code:`glm_vec_dot` to get dot product +For instance, in general we use :code:`glm_vec3_dot` to get dot product of two **vec3**. Now we can also do this with :code:`glm_dot`, same for *_cross* and so on... The original function stays where it is, the function in global namespace of same name is just an alias, so there is no call version of those functions. e.g there is no func like :code:`glmc_dot` because *glm_dot* is just alias for -:code:`glm_vec_dot` +:code:`glm_vec3_dot` By including **cglm/cglm.h** header you will include all inline version of functions. Since functions in this header[s] are inline you don't need to diff --git a/docs/source/cam.rst b/docs/source/cam.rst index 79b2bd4..6e4cc94 100644 --- a/docs/source/cam.rst +++ b/docs/source/cam.rst @@ -9,7 +9,7 @@ There are many convenient functions for camera. For instance :c:func:`glm_look` is just wrapper for :c:func:`glm_lookat`. Sometimes you only have direction instead of target, so that makes easy to build view matrix using direction. There is also :c:func:`glm_look_anyup` function which can help build view matrix -without providing UP axis. It uses :c:func:`glm_vec_ortho` to get a UP axis and +without providing UP axis. It uses :c:func:`glm_vec3_ortho` to get a UP axis and builds view matrix. You can also *_default* versions of ortho and perspective to build projection diff --git a/docs/source/frustum.rst b/docs/source/frustum.rst index 0ace87d..b58913c 100644 --- a/docs/source/frustum.rst +++ b/docs/source/frustum.rst @@ -127,7 +127,7 @@ Functions documentation .. code-block:: c for (j = 0; j < 4; j++) { - glm_vec_center(corners[i], corners[i + 4], centerCorners[i]); + glm_vec3_center(corners[i], corners[i + 4], centerCorners[i]); } corners[i + 4] is far of corners[i] point. diff --git a/docs/source/troubleshooting.rst b/docs/source/troubleshooting.rst index c897dc2..e4cea9f 100644 --- a/docs/source/troubleshooting.rst +++ b/docs/source/troubleshooting.rst @@ -62,7 +62,7 @@ Wrong Results: Again, you may used wrong function. -For instance if you use **glm_normalize()** or **glm_vec_normalize()** for **vec4**, +For instance if you use **glm_normalize()** or **glm_vec3_normalize()** for **vec4**, it will assume that passed param is **vec3** and will normalize it for **vec3**. Since you need to **vec4** to be normalized in your case, you will get wrong results. diff --git a/docs/source/vec3-ext.rst b/docs/source/vec3-ext.rst index c2c0bfc..88f3699 100644 --- a/docs/source/vec3-ext.rst +++ b/docs/source/vec3-ext.rst @@ -14,25 +14,25 @@ Table of contents (click to go): Functions: -1. :c:func:`glm_vec_mulv` -#. :c:func:`glm_vec_broadcast` -#. :c:func:`glm_vec_eq` -#. :c:func:`glm_vec_eq_eps` -#. :c:func:`glm_vec_eq_all` -#. :c:func:`glm_vec_eqv` -#. :c:func:`glm_vec_eqv_eps` -#. :c:func:`glm_vec_max` -#. :c:func:`glm_vec_min` -#. :c:func:`glm_vec_isnan` -#. :c:func:`glm_vec_isinf` -#. :c:func:`glm_vec_isvalid` -#. :c:func:`glm_vec_sign` -#. :c:func:`glm_vec_sqrt` +1. :c:func:`glm_vec3_mulv` +#. :c:func:`glm_vec3_broadcast` +#. :c:func:`glm_vec3_eq` +#. :c:func:`glm_vec3_eq_eps` +#. :c:func:`glm_vec3_eq_all` +#. :c:func:`glm_vec3_eqv` +#. :c:func:`glm_vec3_eqv_eps` +#. :c:func:`glm_vec3_max` +#. :c:func:`glm_vec3_min` +#. :c:func:`glm_vec3_isnan` +#. :c:func:`glm_vec3_isinf` +#. :c:func:`glm_vec3_isvalid` +#. :c:func:`glm_vec3_sign` +#. :c:func:`glm_vec3_sqrt` Functions documentation ~~~~~~~~~~~~~~~~~~~~~~~ -.. c:function:: void glm_vec_mulv(vec3 a, vec3 b, vec3 d) +.. c:function:: void glm_vec3_mulv(vec3 a, vec3 b, vec3 d) multiplies individual items @@ -41,7 +41,7 @@ Functions documentation | *[in]* **b** vec2 | *[out]* **d** destination (v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2]) -.. c:function:: void glm_vec_broadcast(float val, vec3 d) +.. c:function:: void glm_vec3_broadcast(float val, vec3 d) fill a vector with specified value @@ -49,7 +49,7 @@ Functions documentation | *[in]* **val** value | *[out]* **dest** destination -.. c:function:: bool glm_vec_eq(vec3 v, float val) +.. c:function:: bool glm_vec3_eq(vec3 v, float val) check if vector is equal to value (without epsilon) @@ -57,7 +57,7 @@ Functions documentation | *[in]* **v** vector | *[in]* **val** value -.. c:function:: bool glm_vec_eq_eps(vec3 v, float val) +.. c:function:: bool glm_vec3_eq_eps(vec3 v, float val) check if vector is equal to value (with epsilon) @@ -65,14 +65,14 @@ Functions documentation | *[in]* **v** vector | *[in]* **val** value -.. c:function:: bool glm_vec_eq_all(vec3 v) +.. c:function:: bool glm_vec3_eq_all(vec3 v) check if vectors members are equal (without epsilon) Parameters: | *[in]* **v** vector -.. c:function:: bool glm_vec_eqv(vec3 v1, vec3 v2) +.. c:function:: bool glm_vec3_eqv(vec3 v1, vec3 v2) check if vector is equal to another (without epsilon) vector @@ -80,7 +80,7 @@ Functions documentation | *[in]* **vec** vector 1 | *[in]* **vec** vector 2 -.. c:function:: bool glm_vec_eqv_eps(vec3 v1, vec3 v2) +.. c:function:: bool glm_vec3_eqv_eps(vec3 v1, vec3 v2) check if vector is equal to another (with epsilon) @@ -88,21 +88,21 @@ Functions documentation | *[in]* **v1** vector1 | *[in]* **v2** vector2 -.. c:function:: float glm_vec_max(vec3 v) +.. c:function:: float glm_vec3_max(vec3 v) max value of vector Parameters: | *[in]* **v** vector -.. c:function:: float glm_vec_min(vec3 v) +.. c:function:: float glm_vec3_min(vec3 v) min value of vector Parameters: | *[in]* **v** vector -.. c:function:: bool glm_vec_isnan(vec3 v) +.. c:function:: bool glm_vec3_isnan(vec3 v) | check if one of items is NaN (not a number) | you should only use this in DEBUG mode or very critical asserts @@ -110,7 +110,7 @@ Functions documentation Parameters: | *[in]* **v** vector -.. c:function:: bool glm_vec_isinf(vec3 v) +.. c:function:: bool glm_vec3_isinf(vec3 v) | check if one of items is INFINITY | you should only use this in DEBUG mode or very critical asserts @@ -118,7 +118,7 @@ Functions documentation Parameters: | *[in]* **v** vector -.. c:function:: bool glm_vec_isvalid(vec3 v) +.. c:function:: bool glm_vec3_isvalid(vec3 v) | check if all items are valid number | you should only use this in DEBUG mode or very critical asserts @@ -126,7 +126,7 @@ Functions documentation Parameters: | *[in]* **v** vector -.. c:function:: void glm_vec_sign(vec3 v, vec3 dest) +.. c:function:: void glm_vec3_sign(vec3 v, vec3 dest) get sign of 32 bit float as +1, -1, 0 @@ -134,7 +134,7 @@ Functions documentation | *[in]* **v** vector | *[out]* **dest** sign vector (only keeps signs as -1, 0, -1) -.. c:function:: void glm_vec_sqrt(vec3 v, vec3 dest) +.. c:function:: void glm_vec3_sqrt(vec3 v, vec3 dest) square root of each vector item diff --git a/docs/source/vec3.rst b/docs/source/vec3.rst index 252c8f5..e452550 100644 --- a/docs/source/vec3.rst +++ b/docs/source/vec3.rst @@ -5,9 +5,14 @@ vec3 Header: cglm/vec3.h + **Important:** *cglm* was used **glm_vec_** namespace for vec3 functions until + **v0.5.0**, since **v0.5.0** cglm uses **glm_vec3_** namespace for vec3. + + Also `glm_vec3_flipsign` has been renamed to `glm_vec3_negate` + We mostly use vectors in graphics math, to make writing code faster and easy to read, some *vec3* functions are aliased in global namespace. -For instance :c:func:`glm_dot` is alias of :c:func:`glm_vec_dot`, +For instance :c:func:`glm_dot` is alias of :c:func:`glm_vec3_dot`, alias means inline wrapper here. There is no call verison of alias functions There are also functions for rotating *vec3* vector. **_m4**, **_m3** prefixes @@ -18,7 +23,7 @@ Table of contents (click to go): Macros: -1. glm_vec_dup(v, dest) +1. glm_vec3_dup(v, dest) #. GLM_VEC3_ONE_INIT #. GLM_VEC3_ZERO_INIT #. GLM_VEC3_ONE @@ -30,47 +35,47 @@ Macros: Functions: 1. :c:func:`glm_vec3` -#. :c:func:`glm_vec_copy` -#. :c:func:`glm_vec_zero` -#. :c:func:`glm_vec_one` -#. :c:func:`glm_vec_dot` -#. :c:func:`glm_vec_cross` -#. :c:func:`glm_vec_norm2` -#. :c:func:`glm_vec_norm` -#. :c:func:`glm_vec_add` -#. :c:func:`glm_vec_adds` -#. :c:func:`glm_vec_sub` -#. :c:func:`glm_vec_subs` -#. :c:func:`glm_vec_mul` -#. :c:func:`glm_vec_scale` -#. :c:func:`glm_vec_scale_as` -#. :c:func:`glm_vec_div` -#. :c:func:`glm_vec_divs` -#. :c:func:`glm_vec_addadd` -#. :c:func:`glm_vec_subadd` -#. :c:func:`glm_vec_muladd` -#. :c:func:`glm_vec_muladds` -#. :c:func:`glm_vec_flipsign` -#. :c:func:`glm_vec_flipsign_to` -#. :c:func:`glm_vec_negate` -#. :c:func:`glm_vec_negate_to` -#. :c:func:`glm_vec_inv` -#. :c:func:`glm_vec_inv_to` -#. :c:func:`glm_vec_normalize` -#. :c:func:`glm_vec_normalize_to` -#. :c:func:`glm_vec_distance2` -#. :c:func:`glm_vec_distance` -#. :c:func:`glm_vec_angle` -#. :c:func:`glm_vec_rotate` -#. :c:func:`glm_vec_rotate_m4` -#. :c:func:`glm_vec_rotate_m3` -#. :c:func:`glm_vec_proj` -#. :c:func:`glm_vec_center` -#. :c:func:`glm_vec_maxv` -#. :c:func:`glm_vec_minv` -#. :c:func:`glm_vec_ortho` -#. :c:func:`glm_vec_clamp` -#. :c:func:`glm_vec_lerp` +#. :c:func:`glm_vec3_copy` +#. :c:func:`glm_vec3_zero` +#. :c:func:`glm_vec3_one` +#. :c:func:`glm_vec3_dot` +#. :c:func:`glm_vec3_cross` +#. :c:func:`glm_vec3_norm2` +#. :c:func:`glm_vec3_norm` +#. :c:func:`glm_vec3_add` +#. :c:func:`glm_vec3_adds` +#. :c:func:`glm_vec3_sub` +#. :c:func:`glm_vec3_subs` +#. :c:func:`glm_vec3_mul` +#. :c:func:`glm_vec3_scale` +#. :c:func:`glm_vec3_scale_as` +#. :c:func:`glm_vec3_div` +#. :c:func:`glm_vec3_divs` +#. :c:func:`glm_vec3_addadd` +#. :c:func:`glm_vec3_subadd` +#. :c:func:`glm_vec3_muladd` +#. :c:func:`glm_vec3_muladds` +#. :c:func:`glm_vec3_flipsign` +#. :c:func:`glm_vec3_flipsign_to` +#. :c:func:`glm_vec3_negate` +#. :c:func:`glm_vec3_negate_to` +#. :c:func:`glm_vec3_inv` +#. :c:func:`glm_vec3_inv_to` +#. :c:func:`glm_vec3_normalize` +#. :c:func:`glm_vec3_normalize_to` +#. :c:func:`glm_vec3_distance2` +#. :c:func:`glm_vec3_distance` +#. :c:func:`glm_vec3_angle` +#. :c:func:`glm_vec3_rotate` +#. :c:func:`glm_vec3_rotate_m4` +#. :c:func:`glm_vec3_rotate_m3` +#. :c:func:`glm_vec3_proj` +#. :c:func:`glm_vec3_center` +#. :c:func:`glm_vec3_maxv` +#. :c:func:`glm_vec3_minv` +#. :c:func:`glm_vec3_ortho` +#. :c:func:`glm_vec3_clamp` +#. :c:func:`glm_vec3_lerp` Functions documentation ~~~~~~~~~~~~~~~~~~~~~~~ @@ -83,7 +88,7 @@ Functions documentation | *[in]* **v4** vector4 | *[out]* **dest** destination -.. c:function:: void glm_vec_copy(vec3 a, vec3 dest) +.. c:function:: void glm_vec3_copy(vec3 a, vec3 dest) copy all members of [a] to [dest] @@ -91,21 +96,21 @@ Functions documentation | *[in]* **a** source | *[out]* **dest** destination -.. c:function:: void glm_vec_zero(vec3 v) +.. c:function:: void glm_vec3_zero(vec3 v) makes all members 0.0f (zero) Parameters: | *[in, out]* **v** vector -.. c:function:: void glm_vec_one(vec3 v) +.. c:function:: void glm_vec3_one(vec3 v) makes all members 1.0f (one) Parameters: | *[in, out]* **v** vector -.. c:function:: float glm_vec_dot(vec3 a, vec3 b) +.. c:function:: float glm_vec3_dot(vec3 a, vec3 b) dot product of vec3 @@ -116,7 +121,7 @@ Functions documentation Returns: dot product -.. c:function:: void glm_vec_cross(vec3 a, vec3 b, vec3 d) +.. c:function:: void glm_vec3_cross(vec3 a, vec3 b, vec3 d) cross product @@ -125,7 +130,7 @@ Functions documentation | *[in]* **b** source 2 | *[out]* **d** destination -.. c:function:: float glm_vec_norm2(vec3 v) +.. c:function:: float glm_vec3_norm2(vec3 v) norm * norm (magnitude) of vector @@ -139,14 +144,14 @@ Functions documentation Returns: square of norm / magnitude -.. c:function:: float glm_vec_norm(vec3 vec) +.. c:function:: float glm_vec3_norm(vec3 vec) norm (magnitude) of vec3 Parameters: | *[in]* **vec** vector -.. c:function:: void glm_vec_add(vec3 a, vec3 b, vec3 dest) +.. c:function:: void glm_vec3_add(vec3 a, vec3 b, vec3 dest) add a vector to b vector store result in dest @@ -155,7 +160,7 @@ Functions documentation | *[in]* **b** vector2 | *[out]* **dest** destination vector -.. c:function:: void glm_vec_adds(vec3 a, float s, vec3 dest) +.. c:function:: void glm_vec3_adds(vec3 a, float s, vec3 dest) add scalar to v vector store result in dest (d = v + vec(s)) @@ -164,7 +169,7 @@ Functions documentation | *[in]* **s** scalar | *[out]* **dest** destination vector -.. c:function:: void glm_vec_sub(vec3 v1, vec3 v2, vec3 dest) +.. c:function:: void glm_vec3_sub(vec3 v1, vec3 v2, vec3 dest) subtract b vector from a vector store result in dest (d = v1 - v2) @@ -173,7 +178,7 @@ Functions documentation | *[in]* **b** vector2 | *[out]* **dest** destination vector -.. c:function:: void glm_vec_subs(vec3 v, float s, vec3 dest) +.. c:function:: void glm_vec3_subs(vec3 v, float s, vec3 dest) subtract scalar from v vector store result in dest (d = v - vec(s)) @@ -182,7 +187,7 @@ Functions documentation | *[in]* **s** scalar | *[out]* **dest** destination vector -.. c:function:: void glm_vec_mul(vec3 a, vec3 b, vec3 d) +.. c:function:: void glm_vec3_mul(vec3 a, vec3 b, vec3 d) multiply two vector (component-wise multiplication) @@ -191,7 +196,7 @@ Functions documentation | *[in]* **b** scalar | *[out]* **d** result = (a[0] * b[0], a[1] * b[1], a[2] * b[2]) -.. c:function:: void glm_vec_scale(vec3 v, float s, vec3 dest) +.. c:function:: void glm_vec3_scale(vec3 v, float s, vec3 dest) multiply/scale vec3 vector with scalar: result = v * s @@ -201,7 +206,7 @@ Functions documentation | *[in]* **s** scalar | *[out]* **dest** destination vector -.. c:function:: void glm_vec_scale_as(vec3 v, float s, vec3 dest) +.. c:function:: void glm_vec3_scale_as(vec3 v, float s, vec3 dest) make vec3 vector scale as specified: result = unit(v) * s @@ -210,7 +215,7 @@ Functions documentation | *[in]* **s** scalar | *[out]* **dest** destination vector -.. c:function:: void glm_vec_div(vec3 a, vec3 b, vec3 dest) +.. c:function:: void glm_vec3_div(vec3 a, vec3 b, vec3 dest) div vector with another component-wise division: d = a / b @@ -219,7 +224,7 @@ Functions documentation | *[in]* **b** vector 2 | *[out]* **dest** result = (a[0] / b[0], a[1] / b[1], a[2] / b[2]) -.. c:function:: void glm_vec_divs(vec3 v, float s, vec3 dest) +.. c:function:: void glm_vec3_divs(vec3 v, float s, vec3 dest) div vector with scalar: d = v / s @@ -228,7 +233,7 @@ Functions documentation | *[in]* **s** scalar | *[out]* **dest** result = (a[0] / s, a[1] / s, a[2] / s]) -.. c:function:: void glm_vec_addadd(vec3 a, vec3 b, vec3 dest) +.. c:function:: void glm_vec3_addadd(vec3 a, vec3 b, vec3 dest) | add two vectors and add result to sum | it applies += operator so dest must be initialized @@ -238,7 +243,7 @@ Functions documentation | *[in]* **b** vector 2 | *[out]* **dest** dest += (a + b) -.. c:function:: void glm_vec_subadd(vec3 a, vec3 b, vec3 dest) +.. c:function:: void glm_vec3_subadd(vec3 a, vec3 b, vec3 dest) | sub two vectors and add result to sum | it applies += operator so dest must be initialized @@ -248,7 +253,7 @@ Functions documentation | *[in]* **b** vector 2 | *[out]* **dest** dest += (a - b) -.. c:function:: void glm_vec_muladd(vec3 a, vec3 b, vec3 dest) +.. c:function:: void glm_vec3_muladd(vec3 a, vec3 b, vec3 dest) | mul two vectors and add result to sum | it applies += operator so dest must be initialized @@ -258,7 +263,7 @@ Functions documentation | *[in]* **b** vector 2 | *[out]* **dest** dest += (a * b) -.. c:function:: void glm_vec_muladds(vec3 a, float s, vec3 dest) +.. c:function:: void glm_vec3_muladds(vec3 a, float s, vec3 dest) | mul vector with scalar and add result to sum | it applies += operator so dest must be initialized @@ -268,29 +273,33 @@ Functions documentation | *[in]* **s** scalar | *[out]* **dest** dest += (a * b) -.. c:function:: void glm_vec_flipsign(vec3 v) +.. c:function:: void glm_vec3_flipsign(vec3 v) - flip sign of all vec3 members + **DEPRACATED!** + + use :c:func:`glm_vec3_negate` Parameters: | *[in, out]* **v** vector -.. c:function:: void glm_vec_flipsign_to(vec3 v, vec3 dest) +.. c:function:: void glm_vec3_flipsign_to(vec3 v, vec3 dest) - flip sign of all vec3 members and store result in dest + **DEPRACATED!** + + use :c:func:`glm_vec3_negate_to` Parameters: | *[in]* **v** vector | *[out]* **dest** negated vector -.. c:function:: void glm_vec_negate(vec3 v) +.. c:function:: void glm_vec3_negate(vec3 v) negate vector components Parameters: | *[in, out]* **v** vector -.. c:function:: void glm_vec_negate_to(vec3 v, vec3 dest) +.. c:function:: void glm_vec3_negate_to(vec3 v, vec3 dest) negate vector components and store result in dest @@ -298,14 +307,14 @@ Functions documentation | *[in]* **v** vector | *[out]* **dest** negated vector -.. c:function:: void glm_vec_inv(vec3 v) +.. c:function:: void glm_vec3_inv(vec3 v) make vector as inverse/opposite of itself Parameters: | *[in, out]* **v** vector -.. c:function:: void glm_vec_inv_to(vec3 v, vec3 dest) +.. c:function:: void glm_vec3_inv_to(vec3 v, vec3 dest) inverse/opposite vector @@ -313,14 +322,14 @@ Functions documentation | *[in]* **v** source | *[out]* **dest** destination -.. c:function:: void glm_vec_normalize(vec3 v) +.. c:function:: void glm_vec3_normalize(vec3 v) normalize vec3 and store result in same vec Parameters: | *[in, out]* **v** vector -.. c:function:: void glm_vec_normalize_to(vec3 vec, vec3 dest) +.. c:function:: void glm_vec3_normalize_to(vec3 vec, vec3 dest) normalize vec3 to dest @@ -328,7 +337,7 @@ Functions documentation | *[in]* **vec** source | *[out]* **dest** destination -.. c:function:: float glm_vec_angle(vec3 v1, vec3 v2) +.. c:function:: float glm_vec3_angle(vec3 v1, vec3 v2) angle betwen two vector @@ -339,7 +348,7 @@ Functions documentation Return: | angle as radians -.. c:function:: void glm_vec_rotate(vec3 v, float angle, vec3 axis) +.. c:function:: void glm_vec3_rotate(vec3 v, float angle, vec3 axis) rotate vec3 around axis by angle using Rodrigues' rotation formula @@ -348,7 +357,7 @@ Functions documentation | *[in]* **axis** axis vector (will be normalized) | *[out]* **angle** angle (radians) -.. c:function:: void glm_vec_rotate_m4(mat4 m, vec3 v, vec3 dest) +.. c:function:: void glm_vec3_rotate_m4(mat4 m, vec3 v, vec3 dest) apply rotation matrix to vector @@ -357,7 +366,7 @@ Functions documentation | *[in]* **v** vector | *[out]* **dest** rotated vector -.. c:function:: void glm_vec_rotate_m3(mat3 m, vec3 v, vec3 dest) +.. c:function:: void glm_vec3_rotate_m3(mat3 m, vec3 v, vec3 dest) apply rotation matrix to vector @@ -366,7 +375,7 @@ Functions documentation | *[in]* **v** vector | *[out]* **dest** rotated vector -.. c:function:: void glm_vec_proj(vec3 a, vec3 b, vec3 dest) +.. c:function:: void glm_vec3_proj(vec3 a, vec3 b, vec3 dest) project a vector onto b vector @@ -375,7 +384,7 @@ Functions documentation | *[in]* **b** vector2 | *[out]* **dest** projected vector -.. c:function:: void glm_vec_center(vec3 v1, vec3 v2, vec3 dest) +.. c:function:: void glm_vec3_center(vec3 v1, vec3 v2, vec3 dest) find center point of two vector @@ -384,7 +393,7 @@ Functions documentation | *[in]* **v2** vector2 | *[out]* **dest** center point -.. c:function:: float glm_vec_distance2(vec3 v1, vec3 v2) +.. c:function:: float glm_vec3_distance2(vec3 v1, vec3 v2) squared distance between two vectors @@ -395,7 +404,7 @@ Functions documentation Returns: | squared distance (distance * distance) -.. c:function:: float glm_vec_distance(vec3 v1, vec3 v2) +.. c:function:: float glm_vec3_distance(vec3 v1, vec3 v2) distance between two vectors @@ -406,7 +415,7 @@ Functions documentation Returns: | distance -.. c:function:: void glm_vec_maxv(vec3 v1, vec3 v2, vec3 dest) +.. c:function:: void glm_vec3_maxv(vec3 v1, vec3 v2, vec3 dest) max values of vectors @@ -415,7 +424,7 @@ Functions documentation | *[in]* **v2** vector2 | *[out]* **dest** destination -.. c:function:: void glm_vec_minv(vec3 v1, vec3 v2, vec3 dest) +.. c:function:: void glm_vec3_minv(vec3 v1, vec3 v2, vec3 dest) min values of vectors @@ -424,7 +433,7 @@ Functions documentation | *[in]* **v2** vector2 | *[out]* **dest** destination -.. c:function:: void glm_vec_ortho(vec3 v, vec3 dest) +.. c:function:: void glm_vec3_ortho(vec3 v, vec3 dest) possible orthogonal/perpendicular vector @@ -432,7 +441,7 @@ Functions documentation | *[in]* **mat** vector | *[out]* **dest** orthogonal/perpendicular vector -.. c:function:: void glm_vec_clamp(vec3 v, float minVal, float maxVal) +.. c:function:: void glm_vec3_clamp(vec3 v, float minVal, float maxVal) constrain a value to lie between two further values @@ -441,7 +450,7 @@ Functions documentation | *[in]* **minVal** minimum value | *[in]* **maxVal** maximum value -.. c:function:: void glm_vec_lerp(vec3 from, vec3 to, float t, vec3 dest) +.. c:function:: void glm_vec3_lerp(vec3 from, vec3 to, float t, vec3 dest) linear interpolation between two vector diff --git a/docs/source/vec4.rst b/docs/source/vec4.rst index 947a2da..cf025e6 100644 --- a/docs/source/vec4.rst +++ b/docs/source/vec4.rst @@ -44,7 +44,9 @@ Functions: #. :c:func:`glm_vec4_muladd` #. :c:func:`glm_vec4_muladds` #. :c:func:`glm_vec4_flipsign` -#. :c:func:`glm_vec_flipsign_to` +#. :c:func:`glm_vec4_flipsign_to` +#. :c:func:`glm_vec4_negate` +#. :c:func:`glm_vec4_negate_to` #. :c:func:`glm_vec4_inv` #. :c:func:`glm_vec4_inv_to` #. :c:func:`glm_vec4_normalize` @@ -262,14 +264,33 @@ Functions documentation .. c:function:: void glm_vec4_flipsign(vec4 v) - flip sign of all vec4 members + **DEPRACATED!** + + use :c:func:`glm_vec4_negate` Parameters: | *[in, out]* **v** vector .. c:function:: void glm_vec4_flipsign_to(vec4 v, vec4 dest) - flip sign of all vec4 members and store result in dest + **DEPRACATED!** + + use :c:func:`glm_vec4_negate_TO` + + Parameters: + | *[in]* **v** vector + | *[out]* **dest** negated vector + +.. c:function:: void glm_vec4_negate(vec4 v) + + negate vector components + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec4_negate_to(vec4 v, vec4 dest) + + negate vector components and store result in dest Parameters: | *[in]* **v** vector diff --git a/include/cglm/affine.h b/include/cglm/affine.h index 364ed20..84ead4b 100644 --- a/include/cglm/affine.h +++ b/include/cglm/affine.h @@ -464,9 +464,9 @@ glm_decompose_rs(mat4 m, mat4 r, vec3 s) { is -1, then negate the matrix and the scaling factors. */ glm_vec3_cross(m[0], m[1], v); if (glm_vec3_dot(v, m[2]) < 0.0f) { - glm_vec4_flipsign(r[0]); - glm_vec4_flipsign(r[1]); - glm_vec4_flipsign(r[2]); + glm_vec4_negate(r[0]); + glm_vec4_negate(r[1]); + glm_vec4_negate(r[2]); glm_vec3_negate(s); } } diff --git a/include/cglm/call/vec3.h b/include/cglm/call/vec3.h index 1cd2e08..89e2fe2 100644 --- a/include/cglm/call/vec3.h +++ b/include/cglm/call/vec3.h @@ -13,6 +13,11 @@ extern "C" { #include "../cglm.h" +/* DEPRECATED! use _copy, _ucopy versions */ +#define glmc_vec_dup(v, dest) glmc_vec3_copy(v, dest) +#define glmc_vec3_flipsign(v) glmc_vec3_negate(v) +#define glmc_vec3_flipsign_to(v, dest) glmc_vec3_negate_to(v, dest) + CGLM_EXPORT void glmc_vec3(vec4 v4, vec3 dest); diff --git a/include/cglm/call/vec4.h b/include/cglm/call/vec4.h index 729a3f2..78c39ae 100644 --- a/include/cglm/call/vec4.h +++ b/include/cglm/call/vec4.h @@ -14,8 +14,10 @@ extern "C" { #include "../cglm.h" /* DEPRECATED! use _copy, _ucopy versions */ -#define glmc_vec4_dup3(v, dest) glmc_vec4_copy3(v, dest) -#define glmc_vec4_dup(v, dest) glmc_vec4_copy(v, dest) +#define glmc_vec4_dup3(v, dest) glmc_vec4_copy3(v, dest) +#define glmc_vec4_dup(v, dest) glmc_vec4_copy(v, dest) +#define glmc_vec4_flipsign(v) glmc_vec4_negate(v) +#define glmc_vec4_flipsign_to(v, dest) glmc_vec4_negate_to(v, dest) CGLM_EXPORT void @@ -115,11 +117,11 @@ glmc_vec4_muladds(vec4 a, float s, vec4 dest); CGLM_EXPORT void -glmc_vec4_flipsign(vec4 v); +glmc_vec4_negate(vec4 v); CGLM_EXPORT void -glmc_vec4_flipsign_to(vec4 v, vec4 dest); +glmc_vec4_negate_to(vec4 v, vec4 dest); CGLM_EXPORT void diff --git a/include/cglm/mat4.h b/include/cglm/mat4.h index dc8ef88..8ce027d 100644 --- a/include/cglm/mat4.h +++ b/include/cglm/mat4.h @@ -16,8 +16,6 @@ GLM_MAT4_ZERO_INIT GLM_MAT4_IDENTITY GLM_MAT4_ZERO - glm_mat4_udup(mat, dest) - glm_mat4_dup(mat, dest) Functions: CGLM_INLINE void glm_mat4_ucopy(mat4 mat, mat4 dest); diff --git a/include/cglm/quat.h b/include/cglm/quat.h index 37aba8d..eee4f53 100644 --- a/include/cglm/quat.h +++ b/include/cglm/quat.h @@ -273,7 +273,7 @@ glm_quat_dot(versor p, versor q) { CGLM_INLINE void glm_quat_conjugate(versor q, versor dest) { - glm_vec4_flipsign_to(q, dest); + glm_vec4_negate_to(q, dest); dest[3] = -dest[3]; } @@ -634,7 +634,7 @@ glm_quat_slerp(versor from, versor to, float t, versor dest) { } if (cosTheta < 0.0f) { - glm_vec4_flipsign(q1); + glm_vec4_negate(q1); cosTheta = -cosTheta; } diff --git a/include/cglm/vec3.h b/include/cglm/vec3.h index eb64c80..9b9efc4 100644 --- a/include/cglm/vec3.h +++ b/include/cglm/vec3.h @@ -7,7 +7,7 @@ /* Macros: - glm_vec_dup(v, dest) + glm_vec3_dup(v, dest) GLM_VEC3_ONE_INIT GLM_VEC3_ZERO_INIT GLM_VEC3_ONE @@ -67,7 +67,7 @@ CGLM_INLINE void glm_normalize_to(vec3 v, vec3 dest); DEPRECATED: - glm_vec_dup + glm_vec3_dup glm_vec3_flipsign glm_vec3_flipsign_to */ @@ -81,7 +81,9 @@ #include "util.h" /* DEPRECATED! use _copy, _ucopy versions */ -#define glm_vec_dup(v, dest) glm_vec3_copy(v, dest) +#define glm_vec3_dup(v, dest) glm_vec3_copy(v, dest) +#define glm_vec3_flipsign(v) glm_vec3_negate(v) +#define glm_vec3_flipsign_to(v, dest) glm_vec3_negate_to(v, dest) #define GLM_VEC3_ONE_INIT {1.0f, 1.0f, 1.0f} #define GLM_VEC3_ZERO_INIT {0.0f, 0.0f, 0.0f} @@ -412,37 +414,6 @@ glm_vec3_muladds(vec3 a, float s, vec3 dest) { dest[2] += a[2] * s; } -/*! - * DEPRECATED! use glm_vec3_negate and friends - * - * @brief negate vector components - * - * @param[in, out] v vector - */ -CGLM_INLINE -void -glm_vec3_flipsign(vec3 v) { - v[0] = -v[0]; - v[1] = -v[1]; - v[2] = -v[2]; -} - -/*! - * DEPRECATED! use glm_vec3_negate and friends - * - * @brief negate vector components and store result in dest - * - * @param[in] v vector - * @param[out] dest result vector - */ -CGLM_INLINE -void -glm_vec3_flipsign_to(vec3 v, vec3 dest) { - dest[0] = -v[0]; - dest[1] = -v[1]; - dest[2] = -v[2]; -} - /*! * @brief negate vector components and store result in dest * diff --git a/include/cglm/vec4-ext.h b/include/cglm/vec4-ext.h index e45ef85..3e41c30 100644 --- a/include/cglm/vec4-ext.h +++ b/include/cglm/vec4-ext.h @@ -11,20 +11,20 @@ /* Functions: - CGLM_INLINE void glm_vec4_mulv(vec4 a, vec4 b, vec4 d); - CGLM_INLINE void glm_vec4_broadcast(float val, vec4 d); - CGLM_INLINE bool glm_vec4_eq(vec4 v, float val); - CGLM_INLINE bool glm_vec4_eq_eps(vec4 v, float val); - CGLM_INLINE bool glm_vec4_eq_all(vec4 v); - CGLM_INLINE bool glm_vec4_eqv(vec4 v1, vec4 v2); - CGLM_INLINE bool glm_vec4_eqv_eps(vec4 v1, vec4 v2); + CGLM_INLINE void glm_vec4_mulv(vec4 a, vec4 b, vec4 d); + CGLM_INLINE void glm_vec4_broadcast(float val, vec4 d); + CGLM_INLINE bool glm_vec4_eq(vec4 v, float val); + CGLM_INLINE bool glm_vec4_eq_eps(vec4 v, float val); + CGLM_INLINE bool glm_vec4_eq_all(vec4 v); + CGLM_INLINE bool glm_vec4_eqv(vec4 v1, vec4 v2); + CGLM_INLINE bool glm_vec4_eqv_eps(vec4 v1, vec4 v2); CGLM_INLINE float glm_vec4_max(vec4 v); CGLM_INLINE float glm_vec4_min(vec4 v); - CGLM_INLINE bool glm_vec4_isnan(vec4 v); - CGLM_INLINE bool glm_vec4_isinf(vec4 v); - CGLM_INLINE bool glm_vec4_isvalid(vec4 v); - CGLM_INLINE void glm_vec4_sign(vec4 v, vec4 dest); - CGLM_INLINE void glm_vec4_sqrt(vec4 v, vec4 dest); + CGLM_INLINE bool glm_vec4_isnan(vec4 v); + CGLM_INLINE bool glm_vec4_isinf(vec4 v); + CGLM_INLINE bool glm_vec4_isvalid(vec4 v); + CGLM_INLINE void glm_vec4_sign(vec4 v, vec4 dest); + CGLM_INLINE void glm_vec4_sqrt(vec4 v, vec4 dest); */ #ifndef cglm_vec4_ext_h diff --git a/include/cglm/vec4.h b/include/cglm/vec4.h index ec14ce3..dad9a9e 100644 --- a/include/cglm/vec4.h +++ b/include/cglm/vec4.h @@ -36,7 +36,7 @@ CGLM_INLINE void glm_vec4_addadd(vec4 a, vec4 b, vec4 dest); CGLM_INLINE void glm_vec4_subadd(vec4 a, vec4 b, vec4 dest); CGLM_INLINE void glm_vec4_muladd(vec4 a, vec4 b, vec4 dest); - CGLM_INLINE void glm_vec4_flipsign(vec4 v); + CGLM_INLINE void glm_vec4_negate(vec4 v); CGLM_INLINE void glm_vec4_inv(vec4 v); CGLM_INLINE void glm_vec4_inv_to(vec4 v, vec4 dest); CGLM_INLINE void glm_vec4_normalize(vec4 v); @@ -46,6 +46,12 @@ CGLM_INLINE void glm_vec4_minv(vec4 v1, vec4 v2, vec4 dest); CGLM_INLINE void glm_vec4_clamp(vec4 v, float minVal, float maxVal); CGLM_INLINE void glm_vec4_lerp(vec4 from, vec4 to, float t, vec4 dest) + + + DEPRECATED: + glm_vec4_dup + glm_vec4_flipsign + glm_vec4_flipsign_to */ #ifndef cglm_vec4_h @@ -510,32 +516,14 @@ glm_vec4_muladds(vec4 a, float s, vec4 dest) { } /*! - * @brief flip sign of all vec4 members - * - * @param[in, out] v vector - */ -CGLM_INLINE -void -glm_vec4_flipsign(vec4 v) { -#if defined( __SSE__ ) || defined( __SSE2__ ) - glmm_store(v, _mm_xor_ps(glmm_load(v), _mm_set1_ps(-0.0f))); -#else - v[0] = -v[0]; - v[1] = -v[1]; - v[2] = -v[2]; - v[3] = -v[3]; -#endif -} - -/*! - * @brief flip sign of all vec4 members and store result in dest + * @brief negate vector components and store result in dest * * @param[in] v vector - * @param[out] dest vector + * @param[out] dest result vector */ CGLM_INLINE void -glm_vec4_flipsign_to(vec4 v, vec4 dest) { +glm_vec4_negate_to(vec4 v, vec4 dest) { #if defined( __SSE__ ) || defined( __SSE2__ ) glmm_store(dest, _mm_xor_ps(glmm_load(v), _mm_set1_ps(-0.0f))); #else @@ -546,6 +534,17 @@ glm_vec4_flipsign_to(vec4 v, vec4 dest) { #endif } +/*! + * @brief flip sign of all vec4 members + * + * @param[in, out] v vector + */ +CGLM_INLINE +void +glm_vec4_negate(vec4 v) { + glm_vec4_negate_to(v, v); +} + /*! * @brief make vector as inverse/opposite of itself * @@ -554,7 +553,7 @@ glm_vec4_flipsign_to(vec4 v, vec4 dest) { CGLM_INLINE void glm_vec4_inv(vec4 v) { - glm_vec4_flipsign(v); + glm_vec4_negate(v); } /*! @@ -567,7 +566,7 @@ CGLM_INLINE void glm_vec4_inv_to(vec4 v, vec4 dest) { glm_vec4_copy(v, dest); - glm_vec4_flipsign(dest); + glm_vec4_negate(dest); } /*! diff --git a/src/vec3.c b/src/vec3.c index 5f743b3..c150b0b 100644 --- a/src/vec3.c +++ b/src/vec3.c @@ -146,18 +146,6 @@ glmc_vec3_muladds(vec3 a, float s, vec3 dest) { glm_vec3_muladds(a, s, dest); } -CGLM_EXPORT -void -glmc_vec3_flipsign(vec3 v) { - glm_vec3_flipsign(v); -} - -CGLM_EXPORT -void -glmc_vec3_flipsign_to(vec3 v, vec3 dest) { - glm_vec3_flipsign_to(v, dest); -} - CGLM_EXPORT void glmc_vec3_negate(vec3 v) { diff --git a/src/vec4.c b/src/vec4.c index 29ccc4d..379d527 100644 --- a/src/vec4.c +++ b/src/vec4.c @@ -154,14 +154,14 @@ glmc_vec4_muladds(vec4 a, float s, vec4 dest) { CGLM_EXPORT void -glmc_vec4_flipsign(vec4 v) { - glm_vec4_flipsign(v); +glmc_vec4_negate(vec4 v) { + glm_vec4_negate(v); } CGLM_EXPORT void -glmc_vec4_flipsign_to(vec4 v, vec4 dest) { - glm_vec4_flipsign_to(v, dest); +glmc_vec4_negate_to(vec4 v, vec4 dest) { + glm_vec4_negate_to(v, dest); } CGLM_EXPORT From aee381d869a3c7343c01736c010fecb841d680e4 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Thu, 29 Nov 2018 09:23:14 +0300 Subject: [PATCH 6/8] vec: deprecate `glm_vec_inv` and `glm_vec4_inv` * because in the current implementation, `glm_vec3_negate` does same thing. It is duplicate. --- docs/source/vec3.rst | 38 +++++++++++++++++++++----------------- docs/source/vec4.rst | 40 ++++++++++++++++++++++------------------ include/cglm/call/vec3.h | 18 ++---------------- include/cglm/call/vec4.h | 10 ++-------- include/cglm/vec3.h | 27 ++++----------------------- include/cglm/vec4.h | 36 +++++++++--------------------------- src/vec3.c | 12 ------------ src/vec4.c | 12 ------------ 8 files changed, 60 insertions(+), 133 deletions(-) diff --git a/docs/source/vec3.rst b/docs/source/vec3.rst index e452550..d8f7ced 100644 --- a/docs/source/vec3.rst +++ b/docs/source/vec3.rst @@ -57,10 +57,10 @@ Functions: #. :c:func:`glm_vec3_muladds` #. :c:func:`glm_vec3_flipsign` #. :c:func:`glm_vec3_flipsign_to` -#. :c:func:`glm_vec3_negate` -#. :c:func:`glm_vec3_negate_to` #. :c:func:`glm_vec3_inv` #. :c:func:`glm_vec3_inv_to` +#. :c:func:`glm_vec3_negate` +#. :c:func:`glm_vec3_negate_to` #. :c:func:`glm_vec3_normalize` #. :c:func:`glm_vec3_normalize_to` #. :c:func:`glm_vec3_distance2` @@ -292,6 +292,25 @@ Functions documentation | *[in]* **v** vector | *[out]* **dest** negated vector +.. c:function:: void glm_vec3_inv(vec3 v) + + **DEPRACATED!** + + use :c:func:`glm_vec3_negate` + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec3_inv_to(vec3 v, vec3 dest) + + **DEPRACATED!** + + use :c:func:`glm_vec3_negate_to` + + Parameters: + | *[in]* **v** source + | *[out]* **dest** destination + .. c:function:: void glm_vec3_negate(vec3 v) negate vector components @@ -307,21 +326,6 @@ Functions documentation | *[in]* **v** vector | *[out]* **dest** negated vector -.. c:function:: void glm_vec3_inv(vec3 v) - - make vector as inverse/opposite of itself - - Parameters: - | *[in, out]* **v** vector - -.. c:function:: void glm_vec3_inv_to(vec3 v, vec3 dest) - - inverse/opposite vector - - Parameters: - | *[in]* **v** source - | *[out]* **dest** destination - .. c:function:: void glm_vec3_normalize(vec3 v) normalize vec3 and store result in same vec diff --git a/docs/source/vec4.rst b/docs/source/vec4.rst index cf025e6..99f65cc 100644 --- a/docs/source/vec4.rst +++ b/docs/source/vec4.rst @@ -45,10 +45,10 @@ Functions: #. :c:func:`glm_vec4_muladds` #. :c:func:`glm_vec4_flipsign` #. :c:func:`glm_vec4_flipsign_to` -#. :c:func:`glm_vec4_negate` -#. :c:func:`glm_vec4_negate_to` #. :c:func:`glm_vec4_inv` #. :c:func:`glm_vec4_inv_to` +#. :c:func:`glm_vec4_negate` +#. :c:func:`glm_vec4_negate_to` #. :c:func:`glm_vec4_normalize` #. :c:func:`glm_vec4_normalize_to` #. :c:func:`glm_vec4_distance` @@ -275,12 +275,31 @@ Functions documentation **DEPRACATED!** - use :c:func:`glm_vec4_negate_TO` + use :c:func:`glm_vec4_negate_to` Parameters: | *[in]* **v** vector | *[out]* **dest** negated vector +.. c:function:: void glm_vec4_inv(vec4 v) + + **DEPRACATED!** + + use :c:func:`glm_vec4_negate` + + Parameters: + | *[in, out]* **v** vector + +.. c:function:: void glm_vec4_inv_to(vec4 v, vec4 dest) + + **DEPRACATED!** + + use :c:func:`glm_vec4_negate_to` + + Parameters: + | *[in]* **v** source + | *[out]* **dest** destination + .. c:function:: void glm_vec4_negate(vec4 v) negate vector components @@ -296,21 +315,6 @@ Functions documentation | *[in]* **v** vector | *[out]* **dest** negated vector -.. c:function:: void glm_vec4_inv(vec4 v) - - make vector as inverse/opposite of itself - - Parameters: - | *[in, out]* **v** vector - -.. c:function:: void glm_vec4_inv_to(vec4 v, vec4 dest) - - inverse/opposite vector - - Parameters: - | *[in]* **v** source - | *[out]* **dest** destination - .. c:function:: void glm_vec4_normalize(vec4 v) normalize vec4 and store result in same vec diff --git a/include/cglm/call/vec3.h b/include/cglm/call/vec3.h index 89e2fe2..63d7e38 100644 --- a/include/cglm/call/vec3.h +++ b/include/cglm/call/vec3.h @@ -17,6 +17,8 @@ extern "C" { #define glmc_vec_dup(v, dest) glmc_vec3_copy(v, dest) #define glmc_vec3_flipsign(v) glmc_vec3_negate(v) #define glmc_vec3_flipsign_to(v, dest) glmc_vec3_negate_to(v, dest) +#define glmc_vec3_inv(v) glmc_vec3_negate(v) +#define glmc_vec3_inv_to(v, dest) glmc_vec3_negate_to(v, dest) CGLM_EXPORT void @@ -110,14 +112,6 @@ CGLM_EXPORT void glmc_vec3_muladds(vec3 a, float s, vec3 dest); -CGLM_EXPORT -void -glmc_vec3_flipsign(vec3 v); - -CGLM_EXPORT -void -glmc_vec3_flipsign_to(vec3 v, vec3 dest); - CGLM_EXPORT void glmc_vec3_negate(vec3 v); @@ -126,14 +120,6 @@ CGLM_EXPORT void glmc_vec3_negate_to(vec3 v, vec3 dest); -CGLM_EXPORT -void -glmc_vec3_inv(vec3 v); - -CGLM_EXPORT -void -glmc_vec3_inv_to(vec3 v, vec3 dest); - CGLM_EXPORT float glmc_vec3_angle(vec3 v1, vec3 v2); diff --git a/include/cglm/call/vec4.h b/include/cglm/call/vec4.h index 78c39ae..c71f440 100644 --- a/include/cglm/call/vec4.h +++ b/include/cglm/call/vec4.h @@ -18,6 +18,8 @@ extern "C" { #define glmc_vec4_dup(v, dest) glmc_vec4_copy(v, dest) #define glmc_vec4_flipsign(v) glmc_vec4_negate(v) #define glmc_vec4_flipsign_to(v, dest) glmc_vec4_negate_to(v, dest) +#define glmc_vec4_inv(v) glmc_vec4_negate(v) +#define glmc_vec4_inv_to(v, dest) glmc_vec4_negate_to(v, dest) CGLM_EXPORT void @@ -123,14 +125,6 @@ CGLM_EXPORT void glmc_vec4_negate_to(vec4 v, vec4 dest); -CGLM_EXPORT -void -glmc_vec4_inv(vec4 v); - -CGLM_EXPORT -void -glmc_vec4_inv_to(vec4 v, vec4 dest); - CGLM_EXPORT float glmc_vec4_distance(vec4 v1, vec4 v2); diff --git a/include/cglm/vec3.h b/include/cglm/vec3.h index 9b9efc4..de83ada 100644 --- a/include/cglm/vec3.h +++ b/include/cglm/vec3.h @@ -70,6 +70,8 @@ glm_vec3_dup glm_vec3_flipsign glm_vec3_flipsign_to + glm_vec3_inv + glm_vec3_inv_to */ #ifndef cglm_vec3_h @@ -84,6 +86,8 @@ #define glm_vec3_dup(v, dest) glm_vec3_copy(v, dest) #define glm_vec3_flipsign(v) glm_vec3_negate(v) #define glm_vec3_flipsign_to(v, dest) glm_vec3_negate_to(v, dest) +#define glm_vec3_inv(v) glm_vec3_negate(v) +#define glm_vec3_inv_to(v, dest) glm_vec3_negate_to(v, dest) #define GLM_VEC3_ONE_INIT {1.0f, 1.0f, 1.0f} #define GLM_VEC3_ZERO_INIT {0.0f, 0.0f, 0.0f} @@ -439,29 +443,6 @@ glm_vec3_negate(vec3 v) { glm_vec3_negate_to(v, v); } -/*! - * @brief make vector as inverse/opposite of itself - * - * @param[in, out] v vector - */ -CGLM_INLINE -void -glm_vec3_inv(vec3 v) { - glm_vec3_negate(v); -} - -/*! - * @brief inverse/opposite vector - * - * @param[in] v source - * @param[out] dest destination - */ -CGLM_INLINE -void -glm_vec3_inv_to(vec3 v, vec3 dest) { - glm_vec3_negate_to(v, dest); -} - /*! * @brief normalize vec3 and store result in same vec * diff --git a/include/cglm/vec4.h b/include/cglm/vec4.h index dad9a9e..b170530 100644 --- a/include/cglm/vec4.h +++ b/include/cglm/vec4.h @@ -52,6 +52,8 @@ glm_vec4_dup glm_vec4_flipsign glm_vec4_flipsign_to + glm_vec4_inv + glm_vec4_inv_to */ #ifndef cglm_vec4_h @@ -61,9 +63,13 @@ #include "vec4-ext.h" #include "util.h" -/* DEPRECATED! use _copy, _ucopy versions */ -#define glm_vec4_dup3(v, dest) glm_vec4_copy3(v, dest) -#define glm_vec4_dup(v, dest) glm_vec4_copy(v, dest) +/* DEPRECATED! functions */ +#define glm_vec4_dup3(v, dest) glm_vec4_copy3(v, dest) +#define glm_vec4_dup(v, dest) glm_vec4_copy(v, dest) +#define glm_vec4_flipsign(v) glm_vec4_negate(v) +#define glm_vec4_flipsign_to(v, dest) glm_vec4_negate_to(v, dest) +#define glm_vec4_inv(v) glm_vec4_negate(v) +#define glm_vec4_inv_to(v, dest) glm_vec4_negate_to(v, dest) #define GLM_VEC4_ONE_INIT {1.0f, 1.0f, 1.0f, 1.0f} #define GLM_VEC4_BLACK_INIT {0.0f, 0.0f, 0.0f, 1.0f} @@ -545,30 +551,6 @@ glm_vec4_negate(vec4 v) { glm_vec4_negate_to(v, v); } -/*! - * @brief make vector as inverse/opposite of itself - * - * @param[in, out] v vector - */ -CGLM_INLINE -void -glm_vec4_inv(vec4 v) { - glm_vec4_negate(v); -} - -/*! - * @brief inverse/opposite vector - * - * @param[in] v source - * @param[out] dest destination - */ -CGLM_INLINE -void -glm_vec4_inv_to(vec4 v, vec4 dest) { - glm_vec4_copy(v, dest); - glm_vec4_negate(dest); -} - /*! * @brief normalize vec4 to dest * diff --git a/src/vec3.c b/src/vec3.c index c150b0b..9e26cc4 100644 --- a/src/vec3.c +++ b/src/vec3.c @@ -158,18 +158,6 @@ glmc_vec3_negate_to(vec3 v, vec3 dest) { glm_vec3_negate_to(v, dest); } -CGLM_EXPORT -void -glmc_vec3_inv(vec3 v) { - glm_vec3_inv(v); -} - -CGLM_EXPORT -void -glmc_vec3_inv_to(vec3 v, vec3 dest) { - glm_vec3_inv_to(v, dest); -} - CGLM_EXPORT float glmc_vec3_angle(vec3 v1, vec3 v2) { diff --git a/src/vec4.c b/src/vec4.c index 379d527..a559b12 100644 --- a/src/vec4.c +++ b/src/vec4.c @@ -164,18 +164,6 @@ glmc_vec4_negate_to(vec4 v, vec4 dest) { glm_vec4_negate_to(v, dest); } -CGLM_EXPORT -void -glmc_vec4_inv(vec4 v) { - glm_vec4_inv(v); -} - -CGLM_EXPORT -void -glmc_vec4_inv_to(vec4 v, vec4 dest) { - glm_vec4_inv_to(v, dest); -} - CGLM_EXPORT float glmc_vec4_distance(vec4 v1, vec4 v2) { From 4e08b7e335faf77eeb03c402e9bde017f1fe7b0e Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Thu, 29 Nov 2018 09:55:27 +0300 Subject: [PATCH 7/8] vec: rename parameter names --- include/cglm/call/vec3.h | 24 ++++---- include/cglm/call/vec4.h | 18 +++--- include/cglm/quat.h | 2 +- include/cglm/vec3-ext.h | 44 +++++---------- include/cglm/vec3.h | 115 ++++++++++++++++++++------------------- include/cglm/vec4-ext.h | 53 ++++++------------ include/cglm/vec4.h | 100 +++++++++++++++++----------------- src/vec3.c | 48 ++++++++-------- src/vec4.c | 36 ++++++------ 9 files changed, 202 insertions(+), 238 deletions(-) diff --git a/include/cglm/call/vec3.h b/include/cglm/call/vec3.h index 63d7e38..106257e 100644 --- a/include/cglm/call/vec3.h +++ b/include/cglm/call/vec3.h @@ -46,15 +46,15 @@ glmc_vec3_cross(vec3 a, vec3 b, vec3 d); CGLM_EXPORT float -glmc_vec3_norm(vec3 vec); +glmc_vec3_norm(vec3 v); CGLM_EXPORT float -glmc_vec3_norm2(vec3 vec); +glmc_vec3_norm2(vec3 v); CGLM_EXPORT void -glmc_vec3_normalize_to(vec3 vec, vec3 dest); +glmc_vec3_normalize_to(vec3 v, vec3 dest); CGLM_EXPORT void @@ -62,7 +62,7 @@ glmc_vec3_normalize(vec3 v); CGLM_EXPORT void -glmc_vec3_add(vec3 v1, vec3 v2, vec3 dest); +glmc_vec3_add(vec3 a, vec3 b, vec3 dest); CGLM_EXPORT void @@ -122,7 +122,7 @@ glmc_vec3_negate_to(vec3 v, vec3 dest); CGLM_EXPORT float -glmc_vec3_angle(vec3 v1, vec3 v2); +glmc_vec3_angle(vec3 a, vec3 b); CGLM_EXPORT void @@ -142,23 +142,23 @@ glmc_vec3_proj(vec3 a, vec3 b, vec3 dest); CGLM_EXPORT void -glmc_vec3_center(vec3 v1, vec3 v2, vec3 dest); +glmc_vec3_center(vec3 a, vec3 b, vec3 dest); CGLM_EXPORT float -glmc_vec3_distance2(vec3 v1, vec3 v2); +glmc_vec3_distance2(vec3 a, vec3 b); CGLM_EXPORT float -glmc_vec3_distance(vec3 v1, vec3 v2); +glmc_vec3_distance(vec3 a, vec3 b); CGLM_EXPORT void -glmc_vec3_maxv(vec3 v1, vec3 v2, vec3 dest); +glmc_vec3_maxv(vec3 a, vec3 b, vec3 dest); CGLM_EXPORT void -glmc_vec3_minv(vec3 v1, vec3 v2, vec3 dest); +glmc_vec3_minv(vec3 a, vec3 b, vec3 dest); CGLM_EXPORT void @@ -196,11 +196,11 @@ glmc_vec3_eq_all(vec3 v); CGLM_EXPORT bool -glmc_vec3_eqv(vec3 v1, vec3 v2); +glmc_vec3_eqv(vec3 a, vec3 b); CGLM_EXPORT bool -glmc_vec3_eqv_eps(vec3 v1, vec3 v2); +glmc_vec3_eqv_eps(vec3 a, vec3 b); CGLM_EXPORT float diff --git a/include/cglm/call/vec4.h b/include/cglm/call/vec4.h index c71f440..1923da6 100644 --- a/include/cglm/call/vec4.h +++ b/include/cglm/call/vec4.h @@ -35,7 +35,7 @@ glmc_vec4_one(vec4 v); CGLM_EXPORT void -glmc_vec4_copy3(vec4 a, vec3 dest); +glmc_vec4_copy3(vec4 v, vec3 dest); CGLM_EXPORT void @@ -51,15 +51,15 @@ glmc_vec4_dot(vec4 a, vec4 b); CGLM_EXPORT float -glmc_vec4_norm(vec4 vec); +glmc_vec4_norm(vec4 v); CGLM_EXPORT float -glmc_vec4_norm2(vec4 vec); +glmc_vec4_norm2(vec4 v); CGLM_EXPORT void -glmc_vec4_normalize_to(vec4 vec, vec4 dest); +glmc_vec4_normalize_to(vec4 v, vec4 dest); CGLM_EXPORT void @@ -127,15 +127,15 @@ glmc_vec4_negate_to(vec4 v, vec4 dest); CGLM_EXPORT float -glmc_vec4_distance(vec4 v1, vec4 v2); +glmc_vec4_distance(vec4 a, vec4 b); CGLM_EXPORT void -glmc_vec4_maxv(vec4 v1, vec4 v2, vec4 dest); +glmc_vec4_maxv(vec4 a, vec4 b, vec4 dest); CGLM_EXPORT void -glmc_vec4_minv(vec4 v1, vec4 v2, vec4 dest); +glmc_vec4_minv(vec4 a, vec4 b, vec4 dest); CGLM_EXPORT void @@ -169,11 +169,11 @@ glmc_vec4_eq_all(vec4 v); CGLM_EXPORT bool -glmc_vec4_eqv(vec4 v1, vec4 v2); +glmc_vec4_eqv(vec4 a, vec4 b); CGLM_EXPORT bool -glmc_vec4_eqv_eps(vec4 v1, vec4 v2); +glmc_vec4_eqv_eps(vec4 a, vec4 b); CGLM_EXPORT float diff --git a/include/cglm/quat.h b/include/cglm/quat.h index eee4f53..1db0161 100644 --- a/include/cglm/quat.h +++ b/include/cglm/quat.h @@ -19,7 +19,7 @@ CGLM_INLINE float glm_quat_norm(versor q); CGLM_INLINE void glm_quat_normalize(versor q); CGLM_INLINE void glm_quat_normalize_to(versor q, versor dest); - CGLM_INLINE float glm_quat_dot(versor q1, versor q2); + CGLM_INLINE float glm_quat_dot(versor p, versor q); CGLM_INLINE void glm_quat_conjugate(versor q, versor dest); CGLM_INLINE void glm_quat_inv(versor q, versor dest); CGLM_INLINE void glm_quat_add(versor p, versor q, versor dest); diff --git a/include/cglm/vec3-ext.h b/include/cglm/vec3-ext.h index 34166f4..0e64325 100644 --- a/include/cglm/vec3-ext.h +++ b/include/cglm/vec3-ext.h @@ -11,13 +11,12 @@ /* Functions: - CGLM_INLINE void glm_vec3_mulv(vec3 a, vec3 b, vec3 d); CGLM_INLINE void glm_vec3_broadcast(float val, vec3 d); CGLM_INLINE bool glm_vec3_eq(vec3 v, float val); CGLM_INLINE bool glm_vec3_eq_eps(vec3 v, float val); CGLM_INLINE bool glm_vec3_eq_all(vec3 v); - CGLM_INLINE bool glm_vec3_eqv(vec3 v1, vec3 v2); - CGLM_INLINE bool glm_vec3_eqv_eps(vec3 v1, vec3 v2); + CGLM_INLINE bool glm_vec3_eqv(vec3 a, vec3 b); + CGLM_INLINE bool glm_vec3_eqv_eps(vec3 a, vec3 b); CGLM_INLINE float glm_vec3_max(vec3 v); CGLM_INLINE float glm_vec3_min(vec3 v); CGLM_INLINE bool glm_vec3_isnan(vec3 v); @@ -36,21 +35,6 @@ #include #include -/*! - * @brief DEPRECATED! use glm_vec3_mul - * - * @param[in] a vec1 - * @param[in] b vec2 - * @param[out] d vec3 = (v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2]) - */ -CGLM_INLINE -void -glm_vec3_mulv(vec3 a, vec3 b, vec3 d) { - d[0] = a[0] * b[0]; - d[1] = a[1] * b[1]; - d[2] = a[2] * b[2]; -} - /*! * @brief fill a vector with specified value * @@ -103,29 +87,29 @@ glm_vec3_eq_all(vec3 v) { /*! * @brief check if vector is equal to another (without epsilon) * - * @param[in] v1 vector - * @param[in] v2 vector + * @param[in] a vector + * @param[in] b vector */ CGLM_INLINE bool -glm_vec3_eqv(vec3 v1, vec3 v2) { - return v1[0] == v2[0] - && v1[1] == v2[1] - && v1[2] == v2[2]; +glm_vec3_eqv(vec3 a, vec3 b) { + return a[0] == b[0] + && a[1] == b[1] + && a[2] == b[2]; } /*! * @brief check if vector is equal to another (with epsilon) * - * @param[in] v1 vector - * @param[in] v2 vector + * @param[in] a vector + * @param[in] b vector */ CGLM_INLINE bool -glm_vec3_eqv_eps(vec3 v1, vec3 v2) { - return fabsf(v1[0] - v2[0]) <= FLT_EPSILON - && fabsf(v1[1] - v2[1]) <= FLT_EPSILON - && fabsf(v1[2] - v2[2]) <= FLT_EPSILON; +glm_vec3_eqv_eps(vec3 a, vec3 b) { + return fabsf(a[0] - b[0]) <= FLT_EPSILON + && fabsf(a[1] - b[1]) <= FLT_EPSILON + && fabsf(a[2] - b[2]) <= FLT_EPSILON; } /*! diff --git a/include/cglm/vec3.h b/include/cglm/vec3.h index de83ada..d311c27 100644 --- a/include/cglm/vec3.h +++ b/include/cglm/vec3.h @@ -7,7 +7,6 @@ /* Macros: - glm_vec3_dup(v, dest) GLM_VEC3_ONE_INIT GLM_VEC3_ZERO_INIT GLM_VEC3_ONE @@ -24,7 +23,7 @@ CGLM_INLINE float glm_vec3_dot(vec3 a, vec3 b); CGLM_INLINE void glm_vec3_cross(vec3 a, vec3 b, vec3 d); CGLM_INLINE float glm_vec3_norm2(vec3 v); - CGLM_INLINE float glm_vec3_norm(vec3 vec); + CGLM_INLINE float glm_vec3_norm(vec3 v); CGLM_INLINE void glm_vec3_add(vec3 a, vec3 b, vec3 dest); CGLM_INLINE void glm_vec3_adds(vec3 a, float s, vec3 dest); CGLM_INLINE void glm_vec3_sub(vec3 a, vec3 b, vec3 dest); @@ -45,17 +44,17 @@ CGLM_INLINE void glm_vec3_inv(vec3 v); CGLM_INLINE void glm_vec3_inv_to(vec3 v, vec3 dest); CGLM_INLINE void glm_vec3_normalize(vec3 v); - CGLM_INLINE void glm_vec3_normalize_to(vec3 vec, vec3 dest); - CGLM_INLINE float glm_vec3_distance(vec3 v1, vec3 v2); - CGLM_INLINE float glm_vec3_angle(vec3 v1, vec3 v2); + CGLM_INLINE void glm_vec3_normalize_to(vec3 v, vec3 dest); + CGLM_INLINE float glm_vec3_distance(vec3 a, vec3 b); + CGLM_INLINE float glm_vec3_angle(vec3 a, vec3 b); CGLM_INLINE void glm_vec3_rotate(vec3 v, float angle, vec3 axis); CGLM_INLINE void glm_vec3_rotate_m4(mat4 m, vec3 v, vec3 dest); CGLM_INLINE void glm_vec3_rotate_m3(mat3 m, vec3 v, vec3 dest); CGLM_INLINE void glm_vec3_proj(vec3 a, vec3 b, vec3 dest); - CGLM_INLINE void glm_vec3_center(vec3 v1, vec3 v2, vec3 dest); - CGLM_INLINE float glm_vec3_distance2(vec3 v1, vec3 v2); - CGLM_INLINE void glm_vec3_maxv(vec3 v1, vec3 v2, vec3 dest); - CGLM_INLINE void glm_vec3_minv(vec3 v1, vec3 v2, vec3 dest); + CGLM_INLINE void glm_vec3_center(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE float glm_vec3_distance2(vec3 a, vec3 b); + CGLM_INLINE void glm_vec3_maxv(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_minv(vec3 a, vec3 b, vec3 dest); CGLM_INLINE void glm_vec3_ortho(vec3 v, vec3 dest); CGLM_INLINE void glm_vec3_clamp(vec3 v, float minVal, float maxVal); CGLM_INLINE void glm_vec3_lerp(vec3 from, vec3 to, float t, vec3 dest); @@ -72,6 +71,7 @@ glm_vec3_flipsign_to glm_vec3_inv glm_vec3_inv_to + glm_vec3_mulv */ #ifndef cglm_vec3_h @@ -88,6 +88,7 @@ #define glm_vec3_flipsign_to(v, dest) glm_vec3_negate_to(v, dest) #define glm_vec3_inv(v) glm_vec3_negate(v) #define glm_vec3_inv_to(v, dest) glm_vec3_negate_to(v, dest) +#define glm_vec3_mulv(a, b, d) glm_vec3_mul(a, b, d) #define GLM_VEC3_ONE_INIT {1.0f, 1.0f, 1.0f} #define GLM_VEC3_ZERO_INIT {0.0f, 0.0f, 0.0f} @@ -199,14 +200,14 @@ glm_vec3_norm2(vec3 v) { /*! * @brief norm (magnitude) of vec3 * - * @param[in] vec vector + * @param[in] v vector * * @return norm */ CGLM_INLINE float -glm_vec3_norm(vec3 vec) { - return sqrtf(glm_vec3_norm2(vec)); +glm_vec3_norm(vec3 v) { + return sqrtf(glm_vec3_norm2(v)); } /*! @@ -240,7 +241,7 @@ glm_vec3_adds(vec3 v, float s, vec3 dest) { } /*! - * @brief subtract v2 vector from v1 vector store result in dest + * @brief subtract b vector from a vector store result in dest * * @param[in] a vector1 * @param[in] b vector2 @@ -272,16 +273,16 @@ glm_vec3_subs(vec3 v, float s, vec3 dest) { /*! * @brief multiply two vector (component-wise multiplication) * - * @param a v1 - * @param b v2 - * @param d v3 = (a[0] * b[0], a[1] * b[1], a[2] * b[2]) + * @param a vector1 + * @param b vector2 + * @param dest v3 = (a[0] * b[0], a[1] * b[1], a[2] * b[2]) */ CGLM_INLINE void -glm_vec3_mul(vec3 a, vec3 b, vec3 d) { - d[0] = a[0] * b[0]; - d[1] = a[1] * b[1]; - d[2] = a[2] * b[2]; +glm_vec3_mul(vec3 a, vec3 b, vec3 dest) { + dest[0] = a[0] * b[0]; + dest[1] = a[1] * b[1]; + dest[2] = a[2] * b[2]; } /*! @@ -466,40 +467,40 @@ glm_vec3_normalize(vec3 v) { /*! * @brief normalize vec3 to dest * - * @param[in] vec source + * @param[in] v source * @param[out] dest destination */ CGLM_INLINE void -glm_vec3_normalize_to(vec3 vec, vec3 dest) { +glm_vec3_normalize_to(vec3 v, vec3 dest) { float norm; - norm = glm_vec3_norm(vec); + norm = glm_vec3_norm(v); if (norm == 0.0f) { glm_vec3_zero(dest); return; } - glm_vec3_scale(vec, 1.0f / norm, dest); + glm_vec3_scale(v, 1.0f / norm, dest); } /*! * @brief angle betwen two vector * - * @param[in] v1 vector1 - * @param[in] v2 vector2 + * @param[in] a vector1 + * @param[in] b vector2 * * @return angle as radians */ CGLM_INLINE float -glm_vec3_angle(vec3 v1, vec3 v2) { +glm_vec3_angle(vec3 a, vec3 b) { float norm, dot; /* maybe compiler generate approximation instruction (rcp) */ - norm = 1.0f / (glm_vec3_norm(v1) * glm_vec3_norm(v2)); - dot = glm_vec3_dot(v1, v2) * norm; + norm = 1.0f / (glm_vec3_norm(a) * glm_vec3_norm(b)); + dot = glm_vec3_dot(a, b) * norm; if (dot > 1.0f) return 0.0f; @@ -600,8 +601,8 @@ glm_vec3_rotate_m3(mat3 m, vec3 v, vec3 dest) { /*! * @brief project a vector onto b vector * - * @param[in] a vector1 - * @param[in] b vector2 + * @param[in] a vector1 + * @param[in] b vector2 * @param[out] dest projected vector */ CGLM_INLINE @@ -615,73 +616,73 @@ glm_vec3_proj(vec3 a, vec3 b, vec3 dest) { /** * @brief find center point of two vector * - * @param[in] v1 vector1 - * @param[in] v2 vector2 + * @param[in] a vector1 + * @param[in] b vector2 * @param[out] dest center point */ CGLM_INLINE void -glm_vec3_center(vec3 v1, vec3 v2, vec3 dest) { - glm_vec3_add(v1, v2, dest); +glm_vec3_center(vec3 a, vec3 b, vec3 dest) { + glm_vec3_add(a, b, dest); glm_vec3_scale(dest, 0.5f, dest); } /** * @brief squared distance between two vectors * - * @param[in] v1 vector1 - * @param[in] v2 vector2 + * @param[in] a vector1 + * @param[in] b vector2 * @return returns squared distance (distance * distance) */ CGLM_INLINE float -glm_vec3_distance2(vec3 v1, vec3 v2) { - return glm_pow2(v2[0] - v1[0]) - + glm_pow2(v2[1] - v1[1]) - + glm_pow2(v2[2] - v1[2]); +glm_vec3_distance2(vec3 a, vec3 b) { + return glm_pow2(b[0] - a[0]) + + glm_pow2(b[1] - a[1]) + + glm_pow2(b[2] - a[2]); } /** * @brief distance between two vectors * - * @param[in] v1 vector1 - * @param[in] v2 vector2 + * @param[in] a vector1 + * @param[in] b vector2 * @return returns distance */ CGLM_INLINE float -glm_vec3_distance(vec3 v1, vec3 v2) { - return sqrtf(glm_vec3_distance2(v1, v2)); +glm_vec3_distance(vec3 a, vec3 b) { + return sqrtf(glm_vec3_distance2(a, b)); } /*! * @brief max values of vectors * - * @param[in] v1 vector1 - * @param[in] v2 vector2 + * @param[in] a vector1 + * @param[in] b vector2 * @param[out] dest destination */ CGLM_INLINE void -glm_vec3_maxv(vec3 v1, vec3 v2, vec3 dest) { - dest[0] = glm_max(v1[0], v2[0]); - dest[1] = glm_max(v1[1], v2[1]); - dest[2] = glm_max(v1[2], v2[2]); +glm_vec3_maxv(vec3 a, vec3 b, vec3 dest) { + dest[0] = glm_max(a[0], b[0]); + dest[1] = glm_max(a[1], b[1]); + dest[2] = glm_max(a[2], b[2]); } /*! * @brief min values of vectors * - * @param[in] v1 vector1 - * @param[in] v2 vector2 + * @param[in] a vector1 + * @param[in] b vector2 * @param[out] dest destination */ CGLM_INLINE void -glm_vec3_minv(vec3 v1, vec3 v2, vec3 dest) { - dest[0] = glm_min(v1[0], v2[0]); - dest[1] = glm_min(v1[1], v2[1]); - dest[2] = glm_min(v1[2], v2[2]); +glm_vec3_minv(vec3 a, vec3 b, vec3 dest) { + dest[0] = glm_min(a[0], b[0]); + dest[1] = glm_min(a[1], b[1]); + dest[2] = glm_min(a[2], b[2]); } /*! diff --git a/include/cglm/vec4-ext.h b/include/cglm/vec4-ext.h index 3e41c30..07821ac 100644 --- a/include/cglm/vec4-ext.h +++ b/include/cglm/vec4-ext.h @@ -11,13 +11,12 @@ /* Functions: - CGLM_INLINE void glm_vec4_mulv(vec4 a, vec4 b, vec4 d); CGLM_INLINE void glm_vec4_broadcast(float val, vec4 d); CGLM_INLINE bool glm_vec4_eq(vec4 v, float val); CGLM_INLINE bool glm_vec4_eq_eps(vec4 v, float val); CGLM_INLINE bool glm_vec4_eq_all(vec4 v); - CGLM_INLINE bool glm_vec4_eqv(vec4 v1, vec4 v2); - CGLM_INLINE bool glm_vec4_eqv_eps(vec4 v1, vec4 v2); + CGLM_INLINE bool glm_vec4_eqv(vec4 a, vec4 b); + CGLM_INLINE bool glm_vec4_eqv_eps(vec4 a, vec4 b); CGLM_INLINE float glm_vec4_max(vec4 v); CGLM_INLINE float glm_vec4_min(vec4 v); CGLM_INLINE bool glm_vec4_isnan(vec4 v); @@ -36,26 +35,6 @@ #include #include -/*! - * @brief DEPRECATED! use glm_vec4_mul - * - * @param a v1 - * @param b v2 - * @param d v3 = (v1[0] * v2[0], v1[1] * v2[1], v1[2] * v2[2], v1[3] * v2[3]) - */ -CGLM_INLINE -void -glm_vec4_mulv(vec4 a, vec4 b, vec4 d) { -#if defined( __SSE__ ) || defined( __SSE2__ ) - glmm_store(d, _mm_mul_ps(glmm_load(a), glmm_load(b))); -#else - d[0] = a[0] * b[0]; - d[1] = a[1] * b[1]; - d[2] = a[2] * b[2]; - d[3] = a[3] * b[3]; -#endif -} - /*! * @brief fill a vector with specified value * @@ -118,31 +97,31 @@ glm_vec4_eq_all(vec4 v) { /*! * @brief check if vector is equal to another (without epsilon) * - * @param v1 vector - * @param v2 vector + * @param a vector + * @param b vector */ CGLM_INLINE bool -glm_vec4_eqv(vec4 v1, vec4 v2) { - return v1[0] == v2[0] - && v1[1] == v2[1] - && v1[2] == v2[2] - && v1[3] == v2[3]; +glm_vec4_eqv(vec4 a, vec4 b) { + return a[0] == b[0] + && a[1] == b[1] + && a[2] == b[2] + && a[3] == b[3]; } /*! * @brief check if vector is equal to another (with epsilon) * - * @param v1 vector - * @param v2 vector + * @param a vector + * @param b vector */ CGLM_INLINE bool -glm_vec4_eqv_eps(vec4 v1, vec4 v2) { - return fabsf(v1[0] - v2[0]) <= FLT_EPSILON - && fabsf(v1[1] - v2[1]) <= FLT_EPSILON - && fabsf(v1[2] - v2[2]) <= FLT_EPSILON - && fabsf(v1[3] - v2[3]) <= FLT_EPSILON; +glm_vec4_eqv_eps(vec4 a, vec4 b) { + return fabsf(a[0] - b[0]) <= FLT_EPSILON + && fabsf(a[1] - b[1]) <= FLT_EPSILON + && fabsf(a[2] - b[2]) <= FLT_EPSILON + && fabsf(a[3] - b[3]) <= FLT_EPSILON; } /*! diff --git a/include/cglm/vec4.h b/include/cglm/vec4.h index b170530..2e3f6cf 100644 --- a/include/cglm/vec4.h +++ b/include/cglm/vec4.h @@ -7,8 +7,6 @@ /* Macros: - glm_vec4_dup3(v, dest) - glm_vec4_dup(v, dest) GLM_VEC4_ONE_INIT GLM_VEC4_BLACK_INIT GLM_VEC4_ZERO_INIT @@ -23,7 +21,7 @@ CGLM_INLINE void glm_vec4_ucopy(vec4 v, vec4 dest); CGLM_INLINE float glm_vec4_dot(vec4 a, vec4 b); CGLM_INLINE float glm_vec4_norm2(vec4 v); - CGLM_INLINE float glm_vec4_norm(vec4 vec); + CGLM_INLINE float glm_vec4_norm(vec4 v); CGLM_INLINE void glm_vec4_add(vec4 a, vec4 b, vec4 dest); CGLM_INLINE void glm_vec4_adds(vec4 v, float s, vec4 dest); CGLM_INLINE void glm_vec4_sub(vec4 a, vec4 b, vec4 dest); @@ -41,9 +39,9 @@ CGLM_INLINE void glm_vec4_inv_to(vec4 v, vec4 dest); CGLM_INLINE void glm_vec4_normalize(vec4 v); CGLM_INLINE void glm_vec4_normalize_to(vec4 vec, vec4 dest); - CGLM_INLINE float glm_vec4_distance(vec4 v1, vec4 v2); - CGLM_INLINE void glm_vec4_maxv(vec4 v1, vec4 v2, vec4 dest); - CGLM_INLINE void glm_vec4_minv(vec4 v1, vec4 v2, vec4 dest); + CGLM_INLINE float glm_vec4_distance(vec4 a, vec4 b); + CGLM_INLINE void glm_vec4_maxv(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_minv(vec4 a, vec4 b, vec4 dest); CGLM_INLINE void glm_vec4_clamp(vec4 v, float minVal, float maxVal); CGLM_INLINE void glm_vec4_lerp(vec4 from, vec4 to, float t, vec4 dest) @@ -54,6 +52,7 @@ glm_vec4_flipsign_to glm_vec4_inv glm_vec4_inv_to + glm_vec4_mulv */ #ifndef cglm_vec4_h @@ -70,6 +69,7 @@ #define glm_vec4_flipsign_to(v, dest) glm_vec4_negate_to(v, dest) #define glm_vec4_inv(v) glm_vec4_negate(v) #define glm_vec4_inv_to(v, dest) glm_vec4_negate_to(v, dest) +#define glm_vec4_mulv(a, b, d) glm_vec4_mul(a, b, d) #define GLM_VEC4_ONE_INIT {1.0f, 1.0f, 1.0f, 1.0f} #define GLM_VEC4_BLACK_INIT {0.0f, 0.0f, 0.0f, 1.0f} @@ -230,24 +230,24 @@ glm_vec4_norm2(vec4 v) { /*! * @brief norm (magnitude) of vec4 * - * @param[in] vec vector + * @param[in] v vector * * @return norm */ CGLM_INLINE float -glm_vec4_norm(vec4 vec) { +glm_vec4_norm(vec4 v) { #if defined( __SSE__ ) || defined( __SSE2__ ) __m128 x0; - x0 = glmm_load(vec); + x0 = glmm_load(v); return _mm_cvtss_f32(_mm_sqrt_ss(glmm_dot(x0, x0))); #else - return sqrtf(glm_vec4_norm2(vec)); + return sqrtf(glm_vec4_norm2(v)); #endif } /*! - * @brief add v2 vector to v1 vector store result in dest + * @brief add b vector to a vector store result in dest * * @param[in] a vector1 * @param[in] b vector2 @@ -287,7 +287,7 @@ glm_vec4_adds(vec4 v, float s, vec4 dest) { } /*! - * @brief subtract b vector from a vector store result in dest (d = v1 - v2) + * @brief subtract b vector from a vector store result in dest (d = a - b) * * @param[in] a vector1 * @param[in] b vector2 @@ -329,20 +329,20 @@ glm_vec4_subs(vec4 v, float s, vec4 dest) { /*! * @brief multiply two vector (component-wise multiplication) * - * @param a v1 - * @param b v2 - * @param d v3 = (a[0] * b[0], a[1] * b[1], a[2] * b[2], a[3] * b[3]) + * @param a vector1 + * @param b vector2 + * @param d dest = (a[0] * b[0], a[1] * b[1], a[2] * b[2], a[3] * b[3]) */ CGLM_INLINE void -glm_vec4_mul(vec4 a, vec4 b, vec4 d) { +glm_vec4_mul(vec4 a, vec4 b, vec4 dest) { #if defined( __SSE__ ) || defined( __SSE2__ ) - glmm_store(d, _mm_mul_ps(glmm_load(a), glmm_load(b))); + glmm_store(dest, _mm_mul_ps(glmm_load(a), glmm_load(b))); #else - d[0] = a[0] * b[0]; - d[1] = a[1] * b[1]; - d[2] = a[2] * b[2]; - d[3] = a[3] * b[3]; + dest[0] = a[0] * b[0]; + dest[1] = a[1] * b[1]; + dest[2] = a[2] * b[2]; + dest[3] = a[3] * b[3]; #endif } @@ -388,7 +388,7 @@ glm_vec4_scale_as(vec4 v, float s, vec4 dest) { } /*! - * @brief div vector with another component-wise division: d = v1 / v2 + * @brief div vector with another component-wise division: d = a / b * * @param[in] a vector 1 * @param[in] b vector 2 @@ -554,17 +554,17 @@ glm_vec4_negate(vec4 v) { /*! * @brief normalize vec4 to dest * - * @param[in] vec source + * @param[in] v source * @param[out] dest destination */ CGLM_INLINE void -glm_vec4_normalize_to(vec4 vec, vec4 dest) { +glm_vec4_normalize_to(vec4 v, vec4 dest) { #if defined( __SSE__ ) || defined( __SSE2__ ) __m128 xdot, x0; float dot; - x0 = glmm_load(vec); + x0 = glmm_load(v); xdot = glmm_dot(x0, x0); dot = _mm_cvtss_f32(xdot); @@ -577,14 +577,14 @@ glm_vec4_normalize_to(vec4 vec, vec4 dest) { #else float norm; - norm = glm_vec4_norm(vec); + norm = glm_vec4_norm(v); if (norm == 0.0f) { glm_vec4_zero(dest); return; } - glm_vec4_scale(vec, 1.0f / norm, dest); + glm_vec4_scale(v, 1.0f / norm, dest); #endif } @@ -602,56 +602,56 @@ glm_vec4_normalize(vec4 v) { /** * @brief distance between two vectors * - * @param[in] v1 vector1 - * @param[in] v2 vector2 + * @param[in] a vector1 + * @param[in] b vector2 * @return returns distance */ CGLM_INLINE float -glm_vec4_distance(vec4 v1, vec4 v2) { - return sqrtf(glm_pow2(v2[0] - v1[0]) - + glm_pow2(v2[1] - v1[1]) - + glm_pow2(v2[2] - v1[2]) - + glm_pow2(v2[3] - v1[3])); +glm_vec4_distance(vec4 a, vec4 b) { + return sqrtf(glm_pow2(b[0] - a[0]) + + glm_pow2(b[1] - a[1]) + + glm_pow2(b[2] - a[2]) + + glm_pow2(b[3] - a[3])); } /*! * @brief max values of vectors * - * @param[in] v1 vector1 - * @param[in] v2 vector2 + * @param[in] a vector1 + * @param[in] b vector2 * @param[out] dest destination */ CGLM_INLINE void -glm_vec4_maxv(vec4 v1, vec4 v2, vec4 dest) { +glm_vec4_maxv(vec4 a, vec4 b, vec4 dest) { #if defined( __SSE__ ) || defined( __SSE2__ ) - glmm_store(dest, _mm_max_ps(glmm_load(v1), glmm_load(v2))); + glmm_store(dest, _mm_max_ps(glmm_load(a), glmm_load(b))); #else - dest[0] = glm_max(v1[0], v2[0]); - dest[1] = glm_max(v1[1], v2[1]); - dest[2] = glm_max(v1[2], v2[2]); - dest[3] = glm_max(v1[3], v2[3]); + dest[0] = glm_max(a[0], b[0]); + dest[1] = glm_max(a[1], b[1]); + dest[2] = glm_max(a[2], b[2]); + dest[3] = glm_max(a[3], b[3]); #endif } /*! * @brief min values of vectors * - * @param[in] v1 vector1 - * @param[in] v2 vector2 + * @param[in] a vector1 + * @param[in] b vector2 * @param[out] dest destination */ CGLM_INLINE void -glm_vec4_minv(vec4 v1, vec4 v2, vec4 dest) { +glm_vec4_minv(vec4 a, vec4 b, vec4 dest) { #if defined( __SSE__ ) || defined( __SSE2__ ) - glmm_store(dest, _mm_min_ps(glmm_load(v1), glmm_load(v2))); + glmm_store(dest, _mm_min_ps(glmm_load(a), glmm_load(b))); #else - dest[0] = glm_min(v1[0], v2[0]); - dest[1] = glm_min(v1[1], v2[1]); - dest[2] = glm_min(v1[2], v2[2]); - dest[3] = glm_min(v1[3], v2[3]); + dest[0] = glm_min(a[0], b[0]); + dest[1] = glm_min(a[1], b[1]); + dest[2] = glm_min(a[2], b[2]); + dest[3] = glm_min(a[3], b[3]); #endif } diff --git a/src/vec3.c b/src/vec3.c index 9e26cc4..1b6ef3c 100644 --- a/src/vec3.c +++ b/src/vec3.c @@ -46,14 +46,14 @@ glmc_vec3_cross(vec3 a, vec3 b, vec3 d) { CGLM_EXPORT float -glmc_vec3_norm(vec3 vec) { - return glm_vec3_norm(vec); +glmc_vec3_norm(vec3 v) { + return glm_vec3_norm(v); } CGLM_EXPORT void -glmc_vec3_normalize_to(vec3 vec, vec3 dest) { - glm_vec3_normalize_to(vec, dest); +glmc_vec3_normalize_to(vec3 v, vec3 dest) { + glm_vec3_normalize_to(v, dest); } CGLM_EXPORT @@ -64,14 +64,14 @@ glmc_vec3_normalize(vec3 v) { CGLM_EXPORT float -glmc_vec3_norm2(vec3 vec) { - return glm_vec3_norm2(vec); +glmc_vec3_norm2(vec3 v) { + return glm_vec3_norm2(v); } CGLM_EXPORT void -glmc_vec3_add(vec3 v1, vec3 v2, vec3 dest) { - glm_vec3_add(v1, v2, dest); +glmc_vec3_add(vec3 a, vec3 b, vec3 dest) { + glm_vec3_add(a, b, dest); } CGLM_EXPORT @@ -160,8 +160,8 @@ glmc_vec3_negate_to(vec3 v, vec3 dest) { CGLM_EXPORT float -glmc_vec3_angle(vec3 v1, vec3 v2) { - return glm_vec3_angle(v1, v2); +glmc_vec3_angle(vec3 a, vec3 b) { + return glm_vec3_angle(a, b); } CGLM_EXPORT @@ -190,32 +190,32 @@ glmc_vec3_proj(vec3 a, vec3 b, vec3 dest) { CGLM_EXPORT void -glmc_vec3_center(vec3 v1, vec3 v2, vec3 dest) { - glm_vec3_center(v1, v2, dest); +glmc_vec3_center(vec3 a, vec3 b, vec3 dest) { + glm_vec3_center(a, b, dest); } CGLM_EXPORT float -glmc_vec3_distance2(vec3 v1, vec3 v2) { - return glm_vec3_distance2(v1, v2); +glmc_vec3_distance2(vec3 a, vec3 b) { + return glm_vec3_distance2(a, b); } CGLM_EXPORT float -glmc_vec3_distance(vec3 v1, vec3 v2) { - return glm_vec3_distance(v1, v2); +glmc_vec3_distance(vec3 a, vec3 b) { + return glm_vec3_distance(a, b); } CGLM_EXPORT void -glmc_vec3_maxv(vec3 v1, vec3 v2, vec3 dest) { - glm_vec3_minv(v1, v2, dest); +glmc_vec3_maxv(vec3 a, vec3 b, vec3 dest) { + glm_vec3_minv(a, b, dest); } CGLM_EXPORT void -glmc_vec3_minv(vec3 v1, vec3 v2, vec3 dest) { - glm_vec3_maxv(v1, v2, dest); +glmc_vec3_minv(vec3 a, vec3 b, vec3 dest) { + glm_vec3_maxv(a, b, dest); } CGLM_EXPORT @@ -270,14 +270,14 @@ glmc_vec3_eq_all(vec3 v) { CGLM_EXPORT bool -glmc_vec3_eqv(vec3 v1, vec3 v2) { - return glm_vec3_eqv(v1, v2); +glmc_vec3_eqv(vec3 a, vec3 b) { + return glm_vec3_eqv(a, b); } CGLM_EXPORT bool -glmc_vec3_eqv_eps(vec3 v1, vec3 v2) { - return glm_vec3_eqv_eps(v1, v2); +glmc_vec3_eqv_eps(vec3 a, vec3 b) { + return glm_vec3_eqv_eps(a, b); } CGLM_EXPORT diff --git a/src/vec4.c b/src/vec4.c index a559b12..97b0da4 100644 --- a/src/vec4.c +++ b/src/vec4.c @@ -28,8 +28,8 @@ glmc_vec4_one(vec4 v) { CGLM_EXPORT void -glmc_vec4_copy3(vec4 a, vec3 dest) { - glm_vec4_copy3(a, dest); +glmc_vec4_copy3(vec4 v, vec3 dest) { + glm_vec4_copy3(v, dest); } CGLM_EXPORT @@ -52,14 +52,14 @@ glmc_vec4_dot(vec4 a, vec4 b) { CGLM_EXPORT float -glmc_vec4_norm(vec4 vec) { - return glm_vec4_norm(vec); +glmc_vec4_norm(vec4 v) { + return glm_vec4_norm(v); } CGLM_EXPORT void -glmc_vec4_normalize_to(vec4 vec, vec4 dest) { - glm_vec4_normalize_to(vec, dest); +glmc_vec4_normalize_to(vec4 v, vec4 dest) { + glm_vec4_normalize_to(v, dest); } CGLM_EXPORT @@ -70,8 +70,8 @@ glmc_vec4_normalize(vec4 v) { CGLM_EXPORT float -glmc_vec4_norm2(vec4 vec) { - return glm_vec4_norm2(vec); +glmc_vec4_norm2(vec4 v) { + return glm_vec4_norm2(v); } CGLM_EXPORT @@ -166,20 +166,20 @@ glmc_vec4_negate_to(vec4 v, vec4 dest) { CGLM_EXPORT float -glmc_vec4_distance(vec4 v1, vec4 v2) { - return glm_vec4_distance(v1, v2); +glmc_vec4_distance(vec4 a, vec4 b) { + return glm_vec4_distance(a, b); } CGLM_EXPORT void -glmc_vec4_maxv(vec4 v1, vec4 v2, vec4 dest) { - glm_vec4_minv(v1, v2, dest); +glmc_vec4_maxv(vec4 a, vec4 b, vec4 dest) { + glm_vec4_minv(a, b, dest); } CGLM_EXPORT void -glmc_vec4_minv(vec4 v1, vec4 v2, vec4 dest) { - glm_vec4_maxv(v1, v2, dest); +glmc_vec4_minv(vec4 a, vec4 b, vec4 dest) { + glm_vec4_maxv(a, b, dest); } CGLM_EXPORT @@ -228,14 +228,14 @@ glmc_vec4_eq_all(vec4 v) { CGLM_EXPORT bool -glmc_vec4_eqv(vec4 v1, vec4 v2) { - return glm_vec4_eqv(v1, v2); +glmc_vec4_eqv(vec4 a, vec4 b) { + return glm_vec4_eqv(a, b); } CGLM_EXPORT bool -glmc_vec4_eqv_eps(vec4 v1, vec4 v2) { - return glm_vec4_eqv_eps(v1, v2); +glmc_vec4_eqv_eps(vec4 a, vec4 b) { + return glm_vec4_eqv_eps(a, b); } CGLM_EXPORT From 6d6954b208f9e93787b22da5c83ca05d1697a503 Mon Sep 17 00:00:00 2001 From: Recep Aslantas Date: Thu, 29 Nov 2018 10:50:24 +0300 Subject: [PATCH 8/8] vec: `minnadd` and `maxadd` helpers --- docs/source/vec3.rst | 22 ++++++++++++++++ docs/source/vec4.rst | 22 ++++++++++++++++ include/cglm/box.h | 26 ++++++++----------- include/cglm/call/vec3.h | 8 ++++++ include/cglm/call/vec4.h | 8 ++++++ include/cglm/vec3.h | 38 +++++++++++++++++++++++++++- include/cglm/vec4.h | 54 ++++++++++++++++++++++++++++++++++++++-- src/vec3.c | 12 +++++++++ src/vec4.c | 12 +++++++++ 9 files changed, 184 insertions(+), 18 deletions(-) diff --git a/docs/source/vec3.rst b/docs/source/vec3.rst index d8f7ced..a625f5c 100644 --- a/docs/source/vec3.rst +++ b/docs/source/vec3.rst @@ -55,6 +55,8 @@ Functions: #. :c:func:`glm_vec3_subadd` #. :c:func:`glm_vec3_muladd` #. :c:func:`glm_vec3_muladds` +#. :c:func:`glm_vec3_maxadd` +#. :c:func:`glm_vec3_minadd` #. :c:func:`glm_vec3_flipsign` #. :c:func:`glm_vec3_flipsign_to` #. :c:func:`glm_vec3_inv` @@ -273,6 +275,26 @@ Functions documentation | *[in]* **s** scalar | *[out]* **dest** dest += (a * b) +.. c:function:: void glm_vec3_maxadd(vec3 a, vec3 b, vec3 dest) + + | add max of two vector to result/dest + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec3_minadd(vec3 a, vec3 b, vec3 dest) + + | add min of two vector to result/dest + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a * b) + .. c:function:: void glm_vec3_flipsign(vec3 v) **DEPRACATED!** diff --git a/docs/source/vec4.rst b/docs/source/vec4.rst index 99f65cc..5bb1ac7 100644 --- a/docs/source/vec4.rst +++ b/docs/source/vec4.rst @@ -43,6 +43,8 @@ Functions: #. :c:func:`glm_vec4_subadd` #. :c:func:`glm_vec4_muladd` #. :c:func:`glm_vec4_muladds` +#. :c:func:`glm_vec4_maxadd` +#. :c:func:`glm_vec4_minadd` #. :c:func:`glm_vec4_flipsign` #. :c:func:`glm_vec4_flipsign_to` #. :c:func:`glm_vec4_inv` @@ -262,6 +264,26 @@ Functions documentation | *[in]* **s** scalar | *[out]* **dest** dest += (a * b) +.. c:function:: void glm_vec4_maxadd(vec4 a, vec4 b, vec4 dest) + + | add max of two vector to result/dest + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a * b) + +.. c:function:: void glm_vec4_minadd(vec4 a, vec4 b, vec4 dest) + + | add min of two vector to result/dest + | it applies += operator so dest must be initialized + + Parameters: + | *[in]* **a** vector 1 + | *[in]* **b** vector 2 + | *[out]* **dest** dest += (a * b) + .. c:function:: void glm_vec4_flipsign(vec4 v) **DEPRACATED!** diff --git a/include/cglm/box.h b/include/cglm/box.h index 0fec3ee..2250c2a 100644 --- a/include/cglm/box.h +++ b/include/cglm/box.h @@ -23,7 +23,7 @@ CGLM_INLINE void glm_aabb_transform(vec3 box[2], mat4 m, vec3 dest[2]) { - vec3 v[2], xa, xb, ya, yb, za, zb, tmp; + vec3 v[2], xa, xb, ya, yb, za, zb; glm_vec3_scale(m[0], box[0][0], xa); glm_vec3_scale(m[0], box[1][0], xb); @@ -34,21 +34,17 @@ glm_aabb_transform(vec3 box[2], mat4 m, vec3 dest[2]) { glm_vec3_scale(m[2], box[0][2], za); glm_vec3_scale(m[2], box[1][2], zb); - /* min(xa, xb) + min(ya, yb) + min(za, zb) + translation */ - glm_vec3_minv(xa, xb, v[0]); - glm_vec3_minv(ya, yb, tmp); - glm_vec3_add(v[0], tmp, v[0]); - glm_vec3_minv(za, zb, tmp); - glm_vec3_add(v[0], tmp, v[0]); - glm_vec3_add(v[0], m[3], v[0]); + /* translation + min(xa, xb) + min(ya, yb) + min(za, zb) */ + glm_vec3(m[3], v[0]); + glm_vec3_minadd(xa, xb, v[0]); + glm_vec3_minadd(ya, yb, v[0]); + glm_vec3_minadd(za, zb, v[0]); - /* max(xa, xb) + max(ya, yb) + max(za, zb) + translation */ - glm_vec3_maxv(xa, xb, v[1]); - glm_vec3_maxv(ya, yb, tmp); - glm_vec3_add(v[1], tmp, v[1]); - glm_vec3_maxv(za, zb, tmp); - glm_vec3_add(v[1], tmp, v[1]); - glm_vec3_add(v[1], m[3], v[1]); + /* translation + max(xa, xb) + max(ya, yb) + max(za, zb) */ + glm_vec3(m[3], v[1]); + glm_vec3_maxadd(xa, xb, v[1]); + glm_vec3_maxadd(ya, yb, v[1]); + glm_vec3_maxadd(za, zb, v[1]); glm_vec3_copy(v[0], dest[0]); glm_vec3_copy(v[1], dest[1]); diff --git a/include/cglm/call/vec3.h b/include/cglm/call/vec3.h index 106257e..5b77170 100644 --- a/include/cglm/call/vec3.h +++ b/include/cglm/call/vec3.h @@ -112,6 +112,14 @@ CGLM_EXPORT void glmc_vec3_muladds(vec3 a, float s, vec3 dest); +CGLM_EXPORT +void +glmc_vec3_maxadd(vec3 a, vec3 b, vec3 dest); + +CGLM_EXPORT +void +glmc_vec3_minadd(vec3 a, vec3 b, vec3 dest); + CGLM_EXPORT void glmc_vec3_negate(vec3 v); diff --git a/include/cglm/call/vec4.h b/include/cglm/call/vec4.h index 1923da6..9a72510 100644 --- a/include/cglm/call/vec4.h +++ b/include/cglm/call/vec4.h @@ -117,6 +117,14 @@ CGLM_EXPORT void glmc_vec4_muladds(vec4 a, float s, vec4 dest); +CGLM_EXPORT +void +glmc_vec4_maxadd(vec4 a, vec4 b, vec4 dest); + +CGLM_EXPORT +void +glmc_vec4_minadd(vec4 a, vec4 b, vec4 dest); + CGLM_EXPORT void glmc_vec4_negate(vec4 v); diff --git a/include/cglm/vec3.h b/include/cglm/vec3.h index d311c27..04d697b 100644 --- a/include/cglm/vec3.h +++ b/include/cglm/vec3.h @@ -37,6 +37,8 @@ CGLM_INLINE void glm_vec3_subadd(vec3 a, vec3 b, vec3 dest); CGLM_INLINE void glm_vec3_muladd(vec3 a, vec3 b, vec3 dest); CGLM_INLINE void glm_vec3_muladds(vec3 a, float s, vec3 dest); + CGLM_INLINE void glm_vec3_maxadd(vec3 a, vec3 b, vec3 dest); + CGLM_INLINE void glm_vec3_minadd(vec3 a, vec3 b, vec3 dest); CGLM_INLINE void glm_vec3_flipsign(vec3 v); CGLM_INLINE void glm_vec3_flipsign_to(vec3 v, vec3 dest); CGLM_INLINE void glm_vec3_negate_to(vec3 v, vec3 dest); @@ -419,6 +421,40 @@ glm_vec3_muladds(vec3 a, float s, vec3 dest) { dest[2] += a[2] * s; } +/*! + * @brief add max of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += max(a, b) + */ +CGLM_INLINE +void +glm_vec3_maxadd(vec3 a, vec3 b, vec3 dest) { + dest[0] += glm_max(a[0], b[0]); + dest[1] += glm_max(a[1], b[1]); + dest[2] += glm_max(a[2], b[2]); +} + +/*! + * @brief add min of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector + * @param[in] s scalar + * @param[out] dest dest += min(a, b) + */ +CGLM_INLINE +void +glm_vec3_minadd(vec3 a, vec3 b, vec3 dest) { + dest[0] += glm_min(a[0], b[0]); + dest[1] += glm_min(a[1], b[1]); + dest[2] += glm_min(a[2], b[2]); +} + /*! * @brief negate vector components and store result in dest * @@ -732,7 +768,7 @@ glm_vec3_lerp(vec3 from, vec3 to, float t, vec3 dest) { /* from + s * (to - from) */ glm_vec3_broadcast(glm_clamp_zo(t), s); glm_vec3_sub(to, from, v); - glm_vec3_mulv(s, v, v); + glm_vec3_mul(s, v, v); glm_vec3_add(from, v, dest); } diff --git a/include/cglm/vec4.h b/include/cglm/vec4.h index 2e3f6cf..5391047 100644 --- a/include/cglm/vec4.h +++ b/include/cglm/vec4.h @@ -34,6 +34,9 @@ CGLM_INLINE void glm_vec4_addadd(vec4 a, vec4 b, vec4 dest); CGLM_INLINE void glm_vec4_subadd(vec4 a, vec4 b, vec4 dest); CGLM_INLINE void glm_vec4_muladd(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_muladds(vec4 a, float s, vec4 dest); + CGLM_INLINE void glm_vec4_maxadd(vec4 a, vec4 b, vec4 dest); + CGLM_INLINE void glm_vec4_minadd(vec4 a, vec4 b, vec4 dest); CGLM_INLINE void glm_vec4_negate(vec4 v); CGLM_INLINE void glm_vec4_inv(vec4 v); CGLM_INLINE void glm_vec4_inv_to(vec4 v, vec4 dest); @@ -45,7 +48,6 @@ CGLM_INLINE void glm_vec4_clamp(vec4 v, float minVal, float maxVal); CGLM_INLINE void glm_vec4_lerp(vec4 from, vec4 to, float t, vec4 dest) - DEPRECATED: glm_vec4_dup glm_vec4_flipsign @@ -521,6 +523,54 @@ glm_vec4_muladds(vec4 a, float s, vec4 dest) { #endif } +/*! + * @brief add max of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector 1 + * @param[in] b vector 2 + * @param[out] dest dest += max(a, b) + */ +CGLM_INLINE +void +glm_vec4_maxadd(vec4 a, vec4 b, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_add_ps(glmm_load(dest), + _mm_max_ps(glmm_load(a), + glmm_load(b)))); +#else + dest[0] += glm_max(a[0], b[0]); + dest[1] += glm_max(a[1], b[1]); + dest[2] += glm_max(a[2], b[2]); + dest[3] += glm_max(a[3], b[3]); +#endif +} + +/*! + * @brief add min of two vector to result/dest + * + * it applies += operator so dest must be initialized + * + * @param[in] a vector + * @param[in] s scalar + * @param[out] dest dest += min(a, b) + */ +CGLM_INLINE +void +glm_vec4_minadd(vec4 a, vec4 b, vec4 dest) { +#if defined( __SSE__ ) || defined( __SSE2__ ) + glmm_store(dest, _mm_add_ps(glmm_load(dest), + _mm_min_ps(glmm_load(a), + glmm_load(b)))); +#else + dest[0] += glm_min(a[0], b[0]); + dest[1] += glm_min(a[1], b[1]); + dest[2] += glm_min(a[2], b[2]); + dest[3] += glm_min(a[3], b[3]); +#endif +} + /*! * @brief negate vector components and store result in dest * @@ -694,7 +744,7 @@ glm_vec4_lerp(vec4 from, vec4 to, float t, vec4 dest) { /* from + s * (to - from) */ glm_vec4_broadcast(glm_clamp_zo(t), s); glm_vec4_sub(to, from, v); - glm_vec4_mulv(s, v, v); + glm_vec4_mul(s, v, v); glm_vec4_add(from, v, dest); } diff --git a/src/vec3.c b/src/vec3.c index 1b6ef3c..7b20888 100644 --- a/src/vec3.c +++ b/src/vec3.c @@ -146,6 +146,18 @@ glmc_vec3_muladds(vec3 a, float s, vec3 dest) { glm_vec3_muladds(a, s, dest); } +CGLM_EXPORT +void +glmc_vec3_maxadd(vec3 a, vec3 b, vec3 dest) { + glm_vec3_maxadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec3_minadd(vec3 a, vec3 b, vec3 dest) { + glm_vec3_minadd(a, b, dest); +} + CGLM_EXPORT void glmc_vec3_negate(vec3 v) { diff --git a/src/vec4.c b/src/vec4.c index 97b0da4..1a49710 100644 --- a/src/vec4.c +++ b/src/vec4.c @@ -152,6 +152,18 @@ glmc_vec4_muladds(vec4 a, float s, vec4 dest) { glm_vec4_muladds(a, s, dest); } +CGLM_EXPORT +void +glmc_vec4_maxadd(vec4 a, vec4 b, vec4 dest) { + glm_vec4_maxadd(a, b, dest); +} + +CGLM_EXPORT +void +glmc_vec4_minadd(vec4 a, vec4 b, vec4 dest) { + glm_vec4_minadd(a, b, dest); +} + CGLM_EXPORT void glmc_vec4_negate(vec4 v) {